在Paypal的其中一个API文档页面上,有以下命令。
$baseurl = 'https://svcs.sandbox.paypal.com/AdaptivePayments/Pay';
define('PAYPAL_API_USER', 'caller_1312486258_biz_api1.gmail.com');
define('PAYPAL_API_PWD', '1312486294');
define('PAYPAL_API_SIGNATURE', 'AbtI7HV1xB428VygBUcIhARzxch4AL65.T18CTeylixNNxDZUu0iO87e');
define('PAYPAL_API_APPLICATION_ID', 'APP-80W284485P519543T');
$returnurl = "http://www.returnurl.net";
$cancelurl = "http://www.cancelnurl.net";
$data = array(
"actionType" => "PAY",
"currencyCode" => "USD",
"receiverList" => array(
"receiver" => array(
array(
"amount" => "1.00",
"email" => "rec1_1312486368_biz@gmail.com"
),
)
),
"returnUrl" => $returnurl,
"cancelUrl" => $cancelurl,
"requestEnvelope" => array(
"errorLangauge" => "en_US",
"detailLevel" => "ReturnAll",
)
);
$headers = array(
"X-PAYPAL-SECURITY-USERID: ".PAYPAL_API_USER,
"X-PAYPAL-SECURITY-PASSWORD: ".PAYPAL_API_PWD,
"X-PAYPAL-SECURITY-SIGNATURE: ".PAYPAL_API_SIGNATURE,
"X-PAYPAL-SECURITY-REQUEST-DATA-FORMAT: JSON",
"X-PAYPAL-SECURITY-RESPONSE-DATA-FORMAT: JSON",
"X-PAYPAL-SECURITY-APPLICATION-ID: ".PAYPAL_API_APPLICATION_ID,
);
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $baseurl);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt ($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt ($ch, CURLOPT_HEADER, $headers);
print_r(curl_exec($ch));
通过SSH运行此命令会产生成功响应。
我尝试通过PHP CURL运行这个确切的命令,但不断收到API凭据不正确的错误消息。由于显然不是这种情况(否则上面的命令会产生类似的反应)除了我的代码出现问题之外,我无法得出任何结论,但是这个错误一直困扰着我好几天现在:
{{1}}
有人能发现这段代码有什么不妥吗?
我必须再次强调,这严格来说是一个PHP CURL问题,而不是Paypal问题。
答案 0 :(得分:4)
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
使用CURLOPT_HTTPHEADER
代替CURLOPT_HEADER
。 CURLOPT_HEADER
只是一个标志,如果你想在输出中看到响应的标题,你可以使用它。