我在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验证器检查并传递了该错误。当我遵循指南时,我对这些错误感到非常困惑:(
答案 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)来执行此操作检测到过期令牌时的端点。