Paypal API - checkout.js - 解析响应错误

Posted

技术标签:

【中文标题】Paypal API - checkout.js - 解析响应错误【英文标题】:Paypal API - checkout.js - parse response error 【发布时间】:2019-02-05 01:07:19 【问题描述】:

我已经在我的 Angular 应用上实现了这个 API。问题是当我输入错误的送货地址时,API 会抛出错误:

未捕获的错误:处理错误时遇到错误 错误:发布 www.sandbox.paypal.com/v1/payments/payment 的请求失败,出现 400 错误。相关 ID:3b331f9eaafa4、3b331f9eaafa4

"name": "VALIDATION_ERROR", “细节”: [ “领域”:“城市”, “问题”:“值无效” , “字段”:“状态”, “问题”:“值无效” , “字段”:“拉链”, “问题”:“值无效” ], "message": "无效请求 - 查看详情", "information_link": "developer.paypal.com/docs/api/payments/#errors", “debug_id”:“3b331f9eaafa4”

如何解析错误以显示带有错误文本的警报?它不是 JSON,所以我不知道如何解析它。

【问题讨论】:

它实际上是 JSON,那么为什么你声称它不是 JSON?显示这些错误可能是错误的方法。最好不要提交,虽然没有提供城市和州......或者使用“使用 PayPal 登录”,以便知道文件中的默认送货地址。 “未提供的城市和州” - 是的,它们是:美国 San Jose Colorado 1 Main St 95131 问题是科罗拉多州,因为它应该是加利福尼亚州,这会导致错误。客户很可能填写了错误的状态或邮编。在这种情况下,它会停止工作,我需要说明问题所在。 【参考方案1】:

这是解决方案:

let res = error.message.match(/([\s\S]*?)^/gm);
console.log( JSON.parse( res[0] ) )

这将提供一个可以使用的 JSON。

【讨论】:

【参考方案2】:

使用正则表达式匹配 JSON,然后使用 JSON.parse 将其解析为 JSON。完成后,您可以使用 messagedetails 字段,其中包含与错误相关的信息。

var jsonString = errmsg.match(/\.*\/gm);

var jsonObj = JSON.parse(jsonString);

希望这会有所帮助。

【讨论】:

这是完整的错误:“错误:错误:发布 sandbox.paypal.com/v1/payments/payment 的请求失败,出现 400 错误。相关 ID:a7e0f78da1be,a7e0f78da1be “name”:“ VALIDATION_ERROR", "details": [ "field": "city", "issue": "Value is invalid" ] (www.paypalobjects.com/api/checkout.js:14010:39) (www.paypalobjects .com/api/checkout.js:2569:31)" 如您所见,它不是 JSON,而是一个对象。

以上是关于Paypal API - checkout.js - 解析响应错误的主要内容,如果未能解决你的问题,请参考以下文章

PayPal Express Checkout.js - Checkout.js 中未定义的 indexOf

无法让 PayPal checkout.js 创建成功的交易

Paypal Checkout.js 未调用 onAuthorize()

paypal checkout.js 检查错误交易

卡住了 Paypal Express Checkout 的集成(基本集成 checkout.js 版本 4.0.0)

Paypal Express Checkout.js - 填充产品详细信息