无法通过PHP接收cURL数据

无法通过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

好的,我正在尝试将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数据

如果您能告诉我哪里出了问题,我们将不胜感激

编辑:

通过从命令提示符处卷曲来测试凭据时,一切正常。我的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