最终付款完成问题的状态401

时间:2014-06-30 18:15:29

标签: javascript paypal

我在Paypal付款的最后阶段收到错误,当我执行它时。据我所知,它是正确的,我没有错误,但这是它返回的:

{"body":"","headers":{"Content-Type":"application/json","Date":"Mon, 30 Jun 2014 18:10:56 GMT","Content-Length":"0","PROXY_SERVER_INFO":"host=slcsbjava1.slc.paypal.com;threadId=911","Paypal-Debug-Id":"b190b1adb3748","Server":"Apache-Coyote/1.1"},"status":401}

这是我正在使用的代码:

execute = XHR.send('POST', 'https://api.sandbox.paypal.com/v1/payments/payment/' + ppid[0].paymentid + '/execute', {

"header": {
  "Authorization": "Bearer " + auth,
  "Content-Type" : "application/json"
},

"parameters": {
  "payer_id": pid
}

});

console.log(execute);

我无法看到Paypal调试意味着什么,我查了一下,但主要是看到PHP问题而不是JS和cURL。

我在一篇文章中看到REST API与Classic混淆,但我已经从Paypal的交互式指南中获得了指示:https://devtools-paypal.com/guide/pay_paypal/curl?interactive=OFF&env=sandbox

任何人都可以帮我吗?

更新

发现调试

auth
是空的,所以我修复了它,现在得到一个新错误:

 Error: {"message":"com.mongodb.BasicDBList cannot be cast to java.util.Map","code":"0"} ( @ 8 : 45 ) -> var innerResult = GlobalXHRInner.send(method, url, GlobalJSON.stri

此错误会根据我发送最终标头和参数的方式而改变:

var newauth = "Bearer " + ppid[0].auth;

var info = {"headers": [{"Authorization": "'+newauth+'", "Content-Type" : "application/json"}], "parameters": [{"payer_id": "'+pid+'"}]};

console.log(info);

execute = XHR.send('POST', 'https://api.sandbox.paypal.com/v1/payments/payment/' + ppid[0].paymentid + '/execute', info );

console.log(execute);

response.success(execute);

如果我改变:

var info = {"headers": [{"Authorization": "'+newauth+'", "Content-Type" : "application/json"}], "parameters": [{"payer_id": "'+pid+'"}]};

到此:

var info = '{"headers": [{"Authorization": "'+newauth+'", "Content-Type" : "application/json"}], "parameters": [{"payer_id": "'+pid+'"}]}';

通过添加引号,我得到一个无效的对象错误,我已经使用json验证器检查并传递了该错误。当我遵循指南时,我对这些错误感到非常困惑:(

1 个答案:

答案 0 :(得分:0)

根据PayPal文档的此错误消息表示:

身份验证错误 HTTP状态代码:401

身份验证错误通常是由与访问令牌相关的问题引起的:

确保包含并正确访问令牌 确保访问令牌尚未过期。
PayPal Developer API Call Information

以下是有关PayPal Developer Access Token的访问令牌的其他信息:

进行API调用时,请使用以下语法(如OAuth 2.0协议中的定义)在“授权”标题中添加访问令牌来发出请求:

Authorization: {tokenType} {accessToken}

示例:Authorization: Bearer EEwJ6tF9x5...4599F
访问令牌有效期和到期

PayPal发布的访问令牌可用于访问所有REST API端点。这些令牌具有有限的生命周期,您必须编写代码来检测访问令牌何时到期。您可以通过跟踪令牌请求的响应中返回的'expires_in'值(该值以秒表示),或者从API处理错误响应(401 Unauthorized)来执行此操作检测到过期令牌时的端点。