У меня настроена интеграция с Paypal Smart Payments Button, которая в точности соответствует формату, указанному в документации . Он создает заказ через JS SDK, а затем в методе обратного вызова onApprove имеет метод actions.order.capture, например:
paypal.Buttons({
createOrder: (data, actions) => {
return actions.order.create({
purchase_units: [{
amount: {
value: get_gross()
}
}],
application_context: {
brand_name: '...',
shipping_preference: 'NO_SHIPPING'
}
})
},
onApprove: (data, actions) => {
actions.order.capture().then((details) => {
return fetch('/paypal/donate', {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({
...
})
}).then((response) => {
if (response.ok) {
...
} else {
...
}
});
});
}
}).render('#donate_button_container');
Проблема в том, что, как только этот поток завершен, я получаю ответ обратно в бэкэнд сайта, показывающий, что заказ выполнен, так же, как на панели инструментов песочницы Paypal, которая показывает, что деньги были вычтены, но в учетной записи посредника sandox средства не появляются на балансе. Они отображаются как завершенные транзакции, но баланс не обновляется. Оба аккаунта проверены, поэтому должны иметь возможность отправлять и получать средства.
Я где-то пропустил шаг с тем, как работает сбор платежей? Насколько я могу судить по документам, платеж должен быть мгновенно зачислен на баланс, и это то, что мне нужно сделать, так как мой бэкэнд должен разделить платеж между двумя другими аккаунтами после его завершения, что в настоящее время не удается сделать из-за Недостаток средств.
Спасибо !!
РЕДАКТИРОВАТЬ: Один из членов моей команды обнаружил, что установка статуса «Отправлено» в бэкэнде PayPal приводит к очистке средств, что не должно происходить, так как для shipping_preference было задано значение NO_SHIPPING. Есть ли способ переопределить это / установить порядок доставки через API?