Javascript PayPal按钮SDK:如何获得负面测试场景?

sg3maiej  于 2023-01-19  发布在  Java
关注(0)|答案(1)|浏览(129)

无法获取贝宝负面测试场景。尝试将模拟标头添加到onApprove回调。
我想测试资金失败,最后一部分https://developer.paypal.com/docs/business/checkout/server-side-api-calls/handle-funding-failures/
我想我添加的模拟头在正确的地方,但什么也没做,它一直说交易完成。什么是正确的方式把它?贝宝说:

paypal.Buttons({
        createOrder: function(data, actions) {
            return fetch('/demo/checkout/api/paypal/order/create/', {
                method: 'post'
            }).then(function(res) {
                return res.json();
            }).then(function(orderData) {
                return orderData.id;
            });
        },

        onApprove: function(data, actions) {
            return fetch('/demo/checkout/api/paypal/order/' + data.orderID + '/capture/', {
                method: 'post',
                headers: {
                    'content-type': 'application/json',
                    'PayPal-Mock-Response': '{"mock_application_codes" : "INSTRUMENT_DECLINED" }'
                },
            }).then(function(res) {
                return res.json();
            }).then(function(orderData) {
                var errorDetail = Array.isArray(orderData.details) && orderData.details[0];
                console.log('paypal error errorDetail', orderData)

                if (errorDetail && errorDetail.issue === 'INSTRUMENT_DECLINED') {
                    return actions.restart();
                }

                if (errorDetail) {
                    var msg = 'Sorry, your transaction could not be processed.';
                    if (errorDetail.description) msg += '\n\n' + errorDetail.description;
                    if (orderData.debug_id) msg += ' (' + orderData.debug_id + ')';
                    return alert(msg); 
                }

                console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));
                var transaction = orderData.purchase_units[0].payments.captures[0];
                alert('Transaction '+ transaction.status + ': ' + transaction.id + '\n\nSee console for all available details');
            });
        }

    }).render('#paypal-button-container');

以上是我的代码。2请帮助。3谢谢

c9qzyr3d

c9qzyr3d1#

当JS代码从服务器上的路由获取时,不添加头文件(示例中为'/demo/checkout/api/paypal/order/)。
当服务器调用v2/checkout/orders API来捕获订单时,将在服务器上的代码中将标头添加到这些路由 * 内部 *。

相关问题