关于最后付款完成问题的状态401

Status 401 on final payment completion issue

本文关键字:状态 成问题 于最 后付款      更新时间:2023-09-26

我得到一个贝宝支付的最后阶段的错误,当我执行它。就我所见,它是正确的,我没有错误,但这是它返回的:

<>之前{"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与经典,但我已经从Paypal的交互指南中获得了说明:https://devtools-paypal.com/guide/pay_paypal/curl?interactive=OFF&env=sandbox

有人能帮我一下吗?

发现与调试

auth
是空的,所以我修复了它,现在得到一个新的错误,这是:
错误:{"message":"com.mongodb。BasicDBList不能强制转换为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信息={"标题":[{"授权":"+ newauth +","- type":"application/json"}],"参数":[{"payer_id":"+ pid +"}]};之前

to this:

<>以前var信息= '{"标题":[{"授权":"+ newauth +","内容类型":"application/json"}],"参数":[{"payer_id":"' + pid +'"}]}';

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

根据PayPal文档,这个错误信息的意思是:

验证错误HTTP状态码:401

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

确保包含正确的访问令牌。
确保访问令牌没有过期。
PayPal开发者API调用信息

这里是关于PayPal开发者访问令牌的更多信息:

当您进行API调用时,通过使用以下语法(在OAuth 2.0协议中定义)在' Authorization '头中添加访问令牌来发出请求:

Authorization: {tokenType} {accessToken}

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

paypal发布的访问令牌可用于访问所有REST API端点。这些令牌的生命周期是有限的,您必须编写代码来检测访问令牌何时过期。您可以通过跟踪令牌请求响应中返回的' expires_in '值(该值以秒为单位表示)来实现这一点,或者在检测到过期令牌时处理来自API端点的错误响应(401 Unauthorized)