Как получить доступ к серверу Node Express через прокси-сервер после его развертывания в Heroku? - PullRequest
0 голосов
/ 23 мая 2019

Как мне сообщить моему приложению, что, когда оно работает, PayPal запускает return_url, оно должно искать «/ success» на стороне сервера, а не на клиенте?

Я настроил экспресс-сервер для обработки запросов на оплату PayPal. Когда почтовый запрос отправляется на «localhost: 5000 / pay» в экспрессе, я обрабатываю логику и перенаправляюсь в PayPal, где пользователь вводит свои данные. Затем они перенаправляются на «localhost: 5000 / success», где платеж выполняется с использованием токена, возвращенного PayPal. Это отлично работает локально, но не на героку. Проблема заключается в возвращении на страницу «/ success».

Как видно из приведенного ниже кода, PayPal просит меня сослаться на return_url (URL-адрес, используемый для успешной транзакции). В героку сервер не работает на 'locahost: 5000', поэтому он просто выдает ошибку. В качестве альтернативы, обслуживание фактического URL, за которым следует «/ success», не запускает прокси-сервер, который я настроил в реакции, и поэтому пытается найти «/ success» на моей клиентской стороне - чего, конечно, нет, и запускается 404.

Код для создания платежа:

    const create_payment_json = {

            "intent": "sale",
            "payer": {
                "payment_method": "paypal"
            },
            "redirect_urls": {
                "return_url": `http://localhost:5000/success`,
                "cancel_url": `http://localhost:5000/cancel`
            },
            "transactions": [{
                "item_list": {
                    "items": content
                },
                "amount": {
                    "currency": "USD",
                    "total": productSelectTotal,
                    "details":{
                        "subtotal":productSubTotal,
                        "shipping":shipping
                    }
                },
                "description": "first tea added to the store"
            }]
        }

выполнение платежа после перенаправления на сервер / успех

    app.get('/success', (req, res)=> {
            const payerId = req.query.PayerID
            const paymentId = req.query.paymentId

            const execute_payment_json = {
                "payer_id": payerId,
                "transactions": [{
                    "item_list": {
                    "items": content
                },
                    "amount": {
                        "currency":"USD",
                        "total": productSelectTotal,
                        "details":{
                            "subtotal":productSubTotal,
                            "shipping":shipping
                        }
                    }
                }]
            }

            paypal.payment.execute(paymentId, execute_payment_json, function (error, payment) {
                if (error) {
                    console.log(error.response);
                    throw error;
                } else {
                    console.log(JSON.stringify(payment));
                    res.send('Payment Successful')
                }
            });

        })

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Я решил проблему, добавив папку routs / api / ... на моем сервере узлов.Когда rect сделал вызов, он перешел на api / paypal / success, и путаницы не было.

0 голосов
/ 23 мая 2019

Вы можете динамически получить свой URL в экспрессе, используя это: Как получить полный URL в Express?

Просто измените его, указав '/ success' в return_url

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...