Как мне сообщить моему приложению, что, когда оно работает, 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')
}
});
})