PayPal:使用 Javascript SDK+REST 处理和测试被拒卡

PayPal: Handling and Testing Declined Cards with Javascript SDK+REST

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

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

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

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”文档可以扩展以名副其实,那就太好了。

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

仅服务器端 API 捕获需要处理拒绝,如 this example.


您可以选择实施 onError 以在出现随机未捕获的 500 错误情况时显示一般失败消息,但这些与拒绝是分开的,很少遇到。