PayPal:使用 Javascript SDK+REST 处理和测试被拒卡
PayPal: Handling and Testing Declined Cards with Javascript SDK+REST
我需要在我的实现中处理被拒绝的卡,并测试它是否有效。
- 为了测试,我看到了一些关于使用 REST headers 的内容,但没有看到如何从 Javascript SDK 中使用它们。好像没有测试卡号?它们使测试变得快速、简单和可靠;如果没有,我会感到震惊:Braintree 似乎不起作用。
- 如果卡被拒绝,actions.order.capture() 会返回什么?
- 如果调用 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 错误情况时显示一般失败消息,但这些与拒绝是分开的,很少遇到。
我需要在我的实现中处理被拒绝的卡,并测试它是否有效。
- 为了测试,我看到了一些关于使用 REST headers 的内容,但没有看到如何从 Javascript SDK 中使用它们。好像没有测试卡号?它们使测试变得快速、简单和可靠;如果没有,我会感到震惊:Braintree 似乎不起作用。
- 如果卡被拒绝,actions.order.capture() 会返回什么?
- 如果调用 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 错误情况时显示一般失败消息,但这些与拒绝是分开的,很少遇到。