无法通过PHP接收cURL数据
好的,我正在尝试将Paypal与我的网站整合。它要求我向restful web服务发出cURL请求。我已经设法让php看起来很好。我知道这是基本的,但它应该是有效的无法通过PHP接收cURL数据,php,curl,paypal,Php,Curl,Paypal,好的,我正在尝试将Paypal与我的网站整合。它要求我向restful web服务发出cURL请求。我已经设法让php看起来很好。我知道这是基本的,但它应该是有效的 if(etc...){ $params = ['USER'=>'me', 'PWD'=>'mypassword', 'SIGNATURE'=>'SIG', 'METHOD'=>'SetExpressCheckout', 'VERS
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数据
如果您能告诉我哪里出了问题,我们将不胜感激
编辑:
通过从命令提示符处卷曲来测试凭据时,一切正常。我的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"
我不知道不安全的地方是什么,我认为这与安全性有关,但我不知道如何在php中将其设置为选项。问题在于这一行:
CURLOPT_RETURNTRANSFER,1,)代码>
这条线应该是
CURLOPT_RETURNTRANSFER=>1)代码>
在1之后添加=>
并删除,
将url协议更改为https
,并添加选项CURLOPT\u SSL\u VERIFYPEER=>1
,以捕获curl使用中的错误
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)
我改变了,但不是那样。我一定是弄错了。我试过几种不同的方法,但都是一样的。@TomAlbanese您提供的paypal应用程序链接正确吗?我想这是沙盒应用程序链接,当我在命令提示符下运行时,它会工作,我直接从paypal网站获得它,在我的应用程序凭据下。@TomAlbanese协议是什么?https还是http?这是我不知道的,例如https。因此,我需要设置一些其他php选项吗?它没有得到任何错误,只是因为某种原因没有得到回复。在您参考上面的代码中,应该是https!你认为在拥有数百万用户的网站上发布你的通行证明智吗?在curl\u exec$info=curl\u getinfo($ch)之后添加这些行;打印(信息)代码>使用结果编辑您的问题,因此php中--unsecure的等价物是CURLOPT_SSL_VERIFYHOST=>0代码>