使用nvp

时间:2016-08-19 11:08:51

标签: php curl paypal paypal-sandbox nvp

我试图使用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_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 个答案:

答案 0 :(得分:0)

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

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

这似乎已经成功了。