使用 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 进行授权/身份验证的主要内容,如果未能解决你的问题,请参考以下文章