【问题标题】:PayPal: Handling and Testing Declined Cards with Javascript SDK+RESTPayPal:使用 Javascript SDK+REST 处理和测试拒绝卡
【发布时间】:2021-12-19 03:12:06
【问题描述】:

我需要在我的实现中处理被拒绝的卡片,并测试它是否有效。

  1. 对于测试,我看到了一些关于使用 REST 标头的内容,但看不到如何从 Javascript SDK 中使用它。好像没有测试卡#?它们使测试变得快速、简单和可靠;如果没有,我会感到震惊:Braintree 的似乎不起作用。
  2. 如果卡片被拒绝,actions.order.capture() 会返回什么?
  3. 如果 onError 被调用,它的参数是什么:错误消息字符串、JSON 字符串形式的错误对象或解码的错误对象?理想情况下,我想调用 actions.restart()。作为后备,我的服务器端将路由到订单被拒绝的页面,用户可以点击编辑付款。

我当前的客户端代码(基于各种示例)如下所示:

BuildNewPayPalButtons = function(val)
{
    paypal.Buttons({
    createOrder: function(data, actions) {
// Set up the transaction
        return actions.order.create({
        application_context: {
            shipping_preference: 'NO_SHIPPING' // NOT an enum
        },
        purchase_units: [{
            amount: {
            value: '$amt'
            },
            description: 'my favorite product',
            invoice_id: '$sessid'
        }]
        });
    },
    onApprove: function(data, actions) {
        return actions.order.capture().then(function(orderData) {
        var trns = orderData.purchase_units[0].payments.captures[0];

        console.error('OK: Whole JSON ', JSON.stringify(orderData));

        // Send the transaction id to the server for verification
        window.location.href = "$payurl&paymID=" + trns.id;
        });
    },
    onCancel: function(data) {
        window.location.href = "$cancelurl";
    },
    onError: function(err) {
        console.error('error from the onError callback', err);
        window.location.href = "/unimplemented_error.html";
    }
    }).render('#paypal-button-container');
}

如果“完整的 Javascript SDK”文档可以扩展为名副其实,那就太好了。

【问题讨论】:

标签: javascript paypal paypal-sandbox paypal-rest-sdk


【解决方案1】:

当使用 客户端 actions.order.capture() 时,会自动处理拒绝。见the note here

只有在服务器端 API 捕获时才需要处理拒绝,如 this example.


如果出现随机未捕获的 500 错误情况,您可以选择实现 onError 以显示一般故障消息,但这些与拒绝是不同的,并且很少遇到。

【讨论】:

  • 好的,这很简单明了...但是我正在使用与 Handle Funding Failures 标题完全相同的 other 页面...其中不包含有用的注释!我应该使用什么文档?
  • 另外,根据问题中的#3,onError 的参数是什么?谢谢。
  • 该文档面向市场和平台合作伙伴,但正如它在编码之前知道的那样,“如果您在客户端 JavaScript 代码中使用 actions.order.capture(),不要完成此任务。脚本会自动重新启动结帐流程并提示买家选择不同的资金来源。”
  • onError 的参数是一个通用的 JavaScript Error 对象,其中包含一串技术信息,类似于您在控制台中看到的内容。
猜你喜欢
  • 2016-07-26
  • 2019-08-27
  • 2011-08-28
  • 2020-12-11
  • 2016-09-18
  • 2013-12-24
  • 2018-05-04
  • 1970-01-01
  • 2020-12-27
相关资源
最近更新 更多