最终付款完成问题的状态 401
Posted
技术标签:
【中文标题】最终付款完成问题的状态 401【英文标题】:Status 401 on final payment completion issue 【发布时间】:2014-08-21 04:40:12 【问题描述】:当我执行 Paypal 付款时,我在付款的最后阶段收到错误消息。据我所知,它是正确的,我没有错误,但这就是它返回的内容:
"body":"","headers":"Content-Type":"application/json","Date":"2014 年 6 月 30 日星期一 18:10:56 GMT","Content-Length":" 0","PROXY_SERVER_INFO":"host=slcsbjava1.slc.paypal.com;threadId=911","Paypal-Debug-Id":"b190b1adb3748","服务器":"Apache-Coyote/1.1","状态“: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是空的,所以我修复了它,现在得到一个新错误,它是:
错误:"message":"com.mongodb.BasicDBList 不能转换为 java.util.Map","code":"0" (@ 8 : 45) -> var innerResult = GlobalXHRInner.send(方法、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】:根据 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) 来做到这一点检测到过期令牌时的端点。
【讨论】:
谢谢,我在调试后发现它是空的 auth 变量,因为它只是给我一个我更新的新错误,因为我不确定它是否是问题的一部分如果我改变一件事,我会得到一个不同的错误,这显然仍然有效?以上是关于最终付款完成问题的状态 401的主要内容,如果未能解决你的问题,请参考以下文章
PayPal EC 付款完成后,woocommerce 中的订单状态如何更改? [关闭]
当付款通过PayPal进入时,如何阻止magento将付款状态设置为“已完成”