好的,我正在尝试将 Paypal 与我的网站集成。它要求我向 Restful Web 服务发出 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
问题是由于某种原因返回的输出是错误的,我浏览器上的网络选项卡显示对 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 中的选项。
最佳答案
问题出在这一行:
CURLOPT_RETURNTRANSFER, 1,);
这一行应该是
CURLOPT_RETURNTRANSFER=> 1);
在 1 之后添加 =>
并删除 ,
将 url 协议(protocol)更改为 https
并添加选项 CURLOPT_SSL_VERIFYPEER=>1
。
关于php - 无法通过 PHP 接收 cURL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31764744/