使用 nvp 设置快速结帐时卡在使用 curl 进行授权/身份验证

Posted

技术标签:

【中文标题】使用 nvp 设置快速结帐时卡在使用 curl 进行授权/身份验证【英文标题】:Stuck at authorization/authentication with curl while setting up express checkout using nvp 【发布时间】:2016-12-26 12:38:18 【问题描述】:

我正在尝试使用 nvp 安装快速结帐并开始运行。 我已经在沙箱中设置了业务帐户并生成了 api 访问签名凭据。

$this->NVPCredentials   =   'USER=' . credentials['username'];
$this->NVPCredentials   .=  '&PWD=' . credentials['password']; 
$this->NVPCredentials   .=  '&VERSION=108.0';
$this->NVPCredentials   .=  '&SIGNATURE=' . credentials['signature'];

如上所示包装凭据 + 支付详细信息所需的所有详细信息以创建 nvp 字符串,下面是 curl 调用

$curl = curl_init('https://api-3t.sandbox.paypal.com/nvp');
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $Request);

$Request 保存传递的 nvp 字符串。

我确保设置了所有必填字段,但我总是得到 10002 |身份验证/授权失败 |您无权进行此 API 调用

我认为这是签名的问题,所以我删除了签名并创建了一个证书文件,从沙盒帐户下载并使用它,但仍然是同样的错误。无论我改变什么,它总是抛出同样的错误。

curl_setopt($curl, CURLOPT_SSLCERT, $pathtocertpem);

我想尝试的东西已经不多了。请不要犹豫,询问更多细节,如果有人知道我可能做错了什么,请不要犹豫。将不胜感激。

问候,

德沃

【问题讨论】:

【参考方案1】:

我能够通过将数组而不是 nvpstring 传递给 curl,然后使用 http_build_query 函数来格式化所有参数来解决问题

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($Request))

这似乎成功了。

【讨论】:

以上是关于使用 nvp 设置快速结帐时卡在使用 curl 进行授权/身份验证的主要内容,如果未能解决你的问题,请参考以下文章

带有php错误的Paypal NVP

联想的Thinkpad笔记本进入不了系统,进pe时卡在这里…

设置颤振时卡在dart sdk下载

paypal沙盒api v2卡在结帐中

安装虚拟机centos系统时卡在这里是怎么了?

Tomcat 在使用 WebappRunner 时卡在“Starting ProtocolHandler”