我正在尝试生成沙盒paypal按钮,因此我不必手动制作一堆按钮。
我发现他们的文档非常糟糕,因为他们的一半指令现在不适合他们的网站,并且因为一切都已经过时而无法找到答案。
在这个页面上有一个Curl示例来调用沙箱,但我也不知道如何将其转换为PHP Curl脚本。
https://developer.paypal.com/docs/classic/lifecycle/sb_calls/
curl https://api-3t.sandbox.paypal.com/nvp \
-s \
--insecure \
-d USER=YourUserID \
-d PWD=YourPassword \
-d SIGNATURE=YourSignature \
-d METHOD=SetExpressCheckout \
-d VERSION=98 \
-d PAYMENTREQUEST_0_AMT=10 \
-d PAYMENTREQUEST_0_CURRENCYCODE=USD \
-d PAYMENTREQUEST_0_PAYMENTACTION=SALE \
-d cancelUrl=http://www.example.com/cancel.html \
-d returnUrl=http://www.example.com/success.html
请有人为我解释一下吗?
答案 0 :(得分:0)
以下是Express Checkout的示例代码,更改凭据并对其进行处理。在这里,您可以使用值传递必要的参数,并且可以在“& method”参数中调用所需的方法。
<?php
$url = "https://api-3t.paypal.com/nvp";
//$url = "https://api-3t.sandbox.paypal.com/nvp";
$nvps =
"&USER=XXXXXXXx"
."&PWD=XXXXXXXX"
."&SIGNATURE=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
if(!isset($token)) {
$nvpset= $nvps
."&returnurl=http://localhost/training/ec_return.php"
."&cancelurl=http://localhost/training/ec_call.php"
."&localecode=US"
."&SOLUTIONTYPE=Sole"
."&method=SetExpressCheckout"
."&version=204.0"
."&paymentrequest_0_currencycode=USD"
."&addroverride=1"
."&noshipping=2"
."&PAYMENTREQUEST_0_SHIPTONAME= James Costerton"
."&PAYMENTREQUEST_0_SHIPTOSTREET=3929 Coburn Hollow Road"
."&PAYMENTREQUEST_0_SHIPTOCITY=London"
."&PAYMENTREQUEST_0_SHIPTOSTATE="
."&PAYMENTREQUEST_0_SHIPTOZIP=SE23 1NX"
."&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=GB"
."&PAYMENTREQUEST_n_SHIPTOPHONENUM=309-374-5347"
."&paymentrequest_0_amt=1.00";
$response = RunAPICall($nvpset);
echo '<pre>';
print_r($response);
}
function RunAPICall($nvps){
global $url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSLVERSION,6);
curl_setopt($ch, CURLOPT_TIMEOUT, 45);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$nvps);
$result = curl_exec($ch);
$httpResponseAr = explode("&", strtoupper($result));
$httpParsedResponseAr = array();
foreach ($httpResponseAr as $value) {
$tmpAr = explode("=", $value);
if(sizeof($tmpAr) > 1) {
$httpParsedResponseAr[$tmpAr[0]] = urldecode($tmpAr[1]);
}
}
curl_close ($ch);
return $httpParsedResponseAr;
}?>