Я пытаюсь настроить paypal-rest-sdk на экспресс-сервере с реагирующим интерфейсом, получаю ошибку CORS.Сервер реакции использует прокси.
Я попробовал пакет npm cor () (не удалось заставить его работать) и два расширения chrome.Они останавливают сообщение об ошибке, но больше ничего не происходит.Я не понимаю, как использовать правильные заголовки ... но похоже, что один из других методов должен работать.
Желаемый результат должен быть отправлен на страницу оплаты PayPal.
Этот код работает:
const express = require("express");
const app = express();
app.get("/", (req, res) => {});
app.post("/pay", (req, res) => {
console.log("you made a successful post request"
});
const port = 5000;
app.listen(port, () => `Server running on port ${port}`);
Этот код работает, он регистрирует объект платежа json:
const express = require("express");
const paypal = require("paypal-rest-sdk");
const app = express();
app.get("/", (req, res) => {});
paypal.configure({
mode: "sandbox",
client_id:
"___clientID___",
client_secret:
"___clientSECRET___"
});
app.post("/pay", (req, res) => {
var create_payment_json = {
intent: "sale",
payer: {
payment_method: "paypal"
},
redirect_urls: {
return_url: "http://localhost:3000/success",
cancel_url: "http://localhost:3000/cancel"
},
transactions: [
{
item_list: {
items: [
{
name: "item",
sku: "item",
price: "1.00",
currency: "USD",
quantity: 1
}
]
},
amount: {
currency: "USD",
total: "1.00"
},
description: "This is the payment description."
}
]
};
paypal.payment.create(create_payment_json, function(error, payment) {
if (error) {
throw error;
} else {
console.log(payment)
}
}
}
});
});
const port = 5000;
app.listen(port, () => `Server running on port ${port}`);
Но этот код нарушает его с ошибкой CORS:
paypal.payment.create(create_payment_json, function(error, payment) {
if (error) {
throw error;
} else {
for (let i = 0; i < payment.links.length; i++) {
if (payment.links[i].rel === "approval_url") {
res.redirect(payment.links[i].href);
}
}
}
});
Я предполагаю, что проблема в res.redirect.
РЕДАКТИРОВАНИЕ Я заново создал тот же сервер Express в отдельной папке проекта,но вместо того, чтобы пытаться использовать его с прокси-сервером React, я создал очень простую HTML-форму для нажатия «/ pay»
. Это сработало, и это говорит мне о том, что проблема заключается в том, что реакция запускается на localhost: 3000 спрокси для сервера, который прослушивает localhost: 5000
ТАК, проблема не в PayPal, я могу исключить это.
Мой следующий шаг - узнать больше об интеграции приложений Reactв экспресс ...
Любые другие идеи будут очень признательны!Спасибо !!!