php - 无法通过 PHP 接收 cURL 数据

标签 php curl paypal

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

相关文章:

php - 在 wordpress 的自定义管理页面上提交表单

php - 如何使用 php 删除最后一个点之后的所有数据?

python - 无法以正确的格式将数据提取到 Pandas 数据框中

俄罗斯卢布的 PayPal 交易

paypal - 将 subscr_id 关联到我的 PayPal 帐户上的订阅

php - Omnipay:PayPal REST API 集成

php - 使用 php 从动态命名变量中获取值

php - 将图像发送到服务器需要很多时间

bash - 使用 curl 发布二进制数据

php - Guzzle 6 - 获取请求总时间