Я работаю над веб-сайтом с интеграцией PayPal (checkout / REST API), который требует сохранения данных из формы в таблице базы данных. Насколько я знаю, PayPal не может отправить данные, собранные в форме, в веб-крючок, чтобы сохранить их в БД. Я обхожу это, сначала сохраняя как ожидающий, с orderID, а затем, в веб-крюке, обновляя запись с тем же orderID, чтобы она не ожидала.
Однако этот подход основан на том факте, что webhook вызывается после сохранения в базе данных как ожидающий (который вызывается на стороне клиента через AJAX). Это действительно , кажется, всегда так. Могу ли я рассчитывать на то, что webhook будет называться вторым?
Вот код JavaScript, эквивалентный тому, который я использую:
paypal.Buttons({
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: '0.01'
}
}]
});
},
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
alert('Transaction completed by ' + details.payer.name.given_name);
// Call your server to save the transaction
return fetch('/paypal-transaction-complete', {
method: 'post',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
orderID: data.orderID
})
});
});
}
}).render('#paypal-button-container');
</script>
Будет ли AJAX вызывать onApprove
надежно произойдет до вызова webhook?