我正在尝试使用nvp安装express checkout。我已经在沙箱中设置了业务帐户,并生成了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_settopt ($curl, CURLOPT_SSLCERT, $pathtocertpem);
我已经没有东西可以尝试了。请不要犹豫,要求更多的细节,如果有人有任何想法,我可能做错了,请不要犹豫。我将不胜感激。
问候,
Devo
我能够通过传递数组而不是nvpstring来解决问题,然后使用http_build_query函数来格式化所有参数
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($Request))
这个似乎成功了。