首页 > 解决方案 > PayPal Rest API PHP cURL 登录/身份验证不再工作

问题描述

大约 2 周前,我们设置了一个 PayPal 快速结账,它运行良好,直到几天前它没有。在 PayPal 上,交易正常,但是当我尝试使用 cURL 登录以检查交易时,初始商家/客户登录失败,但 cURL 没有显示错误。我知道 PayPal 正在升级到 TLS 1.2 和 HTTP/1.1,但我做了测试检查我们的服务器/站点是否通过。

这就是我开始与贝宝通信的方式(这一直有效):

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://paypal.com/v1/oauth2/token');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_USERPWD, 'CLIENT_ID:SECRET');
curl_setopt($ch, CURLOPT_POSTFIELDS, 'grant_type=client_credentials');
$result = curl_exec($ch);

现在如果我打印出 $result 它是空的,如果我打印出 curl_errno 它的 0 和 curl_error 也是空的

所以因为 TLS 1.2 我修改了这样的代码

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://paypal.com/v1/oauth2/token');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSLVERSION, 6);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_USERPWD, 'CLIENT_ID:SECRET');
curl_setopt($ch, CURLOPT_POSTFIELDS, 'grant_type=client_credentials');
$result = curl_exec($ch);

但它的失败与前面的代码完全相同。

可能是什么问题呢?或者如果登录正常,结果是否可能为空?

标签: phpcurlpaypal

解决方案


推荐阅读