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


Stuck at authorization/authentication with curl while setting up express checkout using nvp

我正在尝试使用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))

这个似乎成功了。