好的,我正在尝试将Paypal与我的网站集成。它要求我向一个宁静的网络服务提出cURL请求。我设法让PHP看起来很好。我知道这是基本的,但应该有效。
if(etc...){
$params = ['USER'=>'me',
'PWD'=>'mypassword',
'SIGNATURE'=>'SIG',
'METHOD'=>'SetExpressCheckout',
'VERSION'=>'93',
'PAYMENTREQUEST_0_PAYMENTACTION'=>'SALE',
'PAYMENTREQUEST_0_AMT'=>10,
'PAYMENTREQUEST_0_CURRENCYCODE'=>'GBP',
'RETURNURL'=>'http://returnPage.html',
'CANCELURL'=>'http://returnPage.html'];
$defaults = array(CURLOPT_URL => 'http://api.sandbox.paypal.com',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($params),
CURLOPT_RETURNTRANSFER, 1,);
$ch = curl_init();
curl_setopt_array($ch, $defaults);
$output = curl_exec($ch);
curl_close($ch);
$token = $output;
}
echo $token
问题是由于某种原因返回的输出为false,浏览器上的网络选项卡显示对php文件的请求需要很长时间。实际上在测试所有其他代码时,但是php文件没有返回任何数据。如果我暂时离开它有时会返回false而不是cURL数据。
任何关于我出错的想法都会受到赞赏。
编辑:
通过从命令提示符cURLing测试我的凭据时,一切正常。我的PHP中没有错误有一种方法可以诊断cURL命令无法正常工作的原因。
编辑2:
获得回复所需的命令是
curl -s --insecure https://api-3t.sandbox.paypal.com/nvp -d "USER=users&PWD=pass=Abg0gYcQyxQvnf2HDJkKtA-p6pqhA1k-KTYE0Gcy1diujFio4io5Vqjf&METHOD=SetExpressCheckout&VERSION=78&PAYMENTREQUEST_0_PAYMENTACTION=SALE&PAYMENTREQUEST_0_AMT=19&PAYMENTREQUEST_0_CURRENCYCODE=USD&cancelUrl=http://www.example.com/cancel.html&returnUrl=http://www.example.com/success.html"
我不知道-insecure位是什么我认为它与安全性有关但我不知道如何将其设置为php中的选项。
答案 0 :(得分:0)
问题出在这一行:
CURLOPT_RETURNTRANSFER, 1,);
这条线应该是
CURLOPT_RETURNTRANSFER=> 1);
添加=>
并在1
,
将网址协议更改为https
并添加选项CURLOPT_SSL_VERIFYPEER=>1
。
答案 1 :(得分:0)
在卷曲使用中捕捉错误
if($output === false)
{
echo 'Curl error: ' . curl_error($ch);
}
else
{
echo 'Operation completed without any errors';
}
<强>更新强>
对于https
curl
添加以下选项
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false)