Как бы вы обычно реализовали react paypal с бэкэндом

#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 маршрута сервера, которые вам нужно создать.