无法通过PHP接收cURL数据

时间:2015-08-01 18:13:22

标签: php curl paypal

好的,我正在尝试将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中的选项。

2 个答案:

答案 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)