无法获取贝宝负面测试场景。尝试将模拟标头添加到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谢谢
1条答案
按热度按时间c9qzyr3d1#
当JS代码从服务器上的路由获取时,不添加头文件(示例中为
'/demo/checkout/api/paypal/order/
)。当服务器调用v2/checkout/orders API来捕获订单时,将在服务器上的代码中将标头添加到这些路由 * 内部 *。