我的Angular网页上有一个PayPal智能按钮,如下所示:
paypal.Buttons({
createOrder: (data, actions) => {
return actions.order.create({
purchase_units: [
{
description: this.product.description,
amount: {
currency_code: 'USD',
value: this.product.price,
}
},
],
application_context: {
shipping_preference: 'NO_SHIPPING'
}
});
},
onApprove: async (data, actions) => {
this.dataService.reserveReservation();
const order = actions.order.capture();
alert('Transaction Completed!');
}
}).render(this.paypalElement.nativeElement);
95%的时间都可以完成购买,但是有时dataService.reserveReservation
会在没有付款的情况下被致电。如果付款失败,actions.order.capture()
是否会返回错误的时间,或者为什么在付款未通过且在PayPal家庭活动中的任何地方都没有显示时调用onApprove
回调标签?如何确保每次都付款?
答案 0 :(得分:1)
捕获可能会失败; https://developer.paypal.com/docs/checkout/integration-features/funding-failure/中列出了一些失败情况的示例-因此,您的代码属于捕获解决方案之后。
具体来说,请参见https://developer.paypal.com/demo/checkout/#/pattern/client处的示例-.then()
成功完成付款后,您的代码应位于actions.order.capture()
承诺链中。
并确保将结果正确返回给onApprove的呼叫者。