0

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

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

问候,

德沃

4

1 回答 1

0

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

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

这似乎成功了。

于 2016-08-19T12:49:48.543 回答