【问题标题】:Status 401 on final payment completion issue最终付款完成问题的状态 401
【发布时间】: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 验证器检查并通过了该错误。当我按照指南进行操作时,这些错误真的让我很困惑:(

【问题讨论】:

    标签: javascript paypal


    【解决方案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 变量,因为它只是给我一个我更新的新错误,因为我不确定它是否是问题的一部分如果我改变一件事,我会得到一个不同的错误,这显然仍然有效?
    猜你喜欢
    • 1970-01-01
    • 2014-01-18
    • 2014-07-30
    • 2021-07-04
    • 1970-01-01
    • 2012-04-05
    • 2012-03-11
    • 2019-05-06
    • 1970-01-01
    相关资源
    最近更新 更多