#reactjs #paypal #paypal-sandbox
Вопрос:
Итак, вот как мне сказали использовать интеграцию paypal react на моем сайте электронной коммерции, хотя я не уверен, что это лучше всего (я расскажу вам позже, почему).
useEffect(() =>{
window.paypal.Buttons({
createOrder: (data, actions, err) => {
return actions.order.create({
intent: "CAPTURE",
purchase_units: [
{
description: 'book',
amount:{
currency_code: 'USD',
value: 100
}
}
]
})
},
onApprove: async (data, action) =>{
completeOrder()
},
onError: err => console.log(err.message)
}).render(buttonsDiv.current)
// console.log(window.paypal)
}, [])
целевая completeOrder()
функция состоит в том, чтобы отправить запрос на серверную часть, чтобы проверить заказ, прежде чем помещать completed
метку в заказ
таким образом, проблема, с которой я completeOrder()
сталкиваюсь, возникает после завершения оплаты, и, по моему опыту, такие вещи, как отключение сервера или техническое обслуживание, могут возникнуть, когда пользователь платит, и это может привести к тому, что пользователь ничего не заплатит, потому что заказ не выполнен
первое решение, которое я ищу, — это отменить платеж на основе ответа сервера. Поэтому, если ответ от сервера будет ошибкой, он отменит предыдущий платеж. Но из-за моего недостатка знаний я не понимаю, как это возможно
Ответ №1:
Обычным решением является использование официального react-paypal-js для утверждения заказа на веб-интерфейсе и пакета SDK для оформления заказа и получения заказа через API. Логика сервера для пометки заказа как выполненного должна быть выполнена в маршруте захвата, прежде чем возвращать JSON результата захвата в поток утверждения внешнего интерфейса.
Демонстрационную версию функций, вызывающих сервер из JS утверждения, см. в демонстрационной версии сервера. Вы можете реализовать такие функции на стороне клиента (CreateOrder и onApprove) из своего кода реакции и попросить их вызвать 2 маршрута сервера, которые вам нужно создать.