Я настраиваю сайт с помощью сервера Express.js и пытаюсь реализовать модуль paypal-node-sdk npm.Сайт будет использоваться для продажи моих книг.Пользователь может добавить книги в корзину, а затем нажать Оформить заказ с PayPal.При щелчке это должно отправить содержимое корзины в функцию paypal.payment.create()
, которая будет использоваться для создания платежной информации пользователя.
Я взял шаблонный код со страницы paypal-node-sdk GitHub.Однако, когда я пытаюсь вставить свои собственные данные в этот код, они не отправляются функции create()
.
Я попытался переформатировать данные различными способами и убедился, что они соответствуют шаблону, указанному в paypal-node-sdk Документация GitHub.
Моя программа использует ReactJS,
Вот как я вызываю API PayPal:
checkoutWithPayPal = () => {
let items = [];
let item;
let cart = this.state.cart;
for (var book in cart) {
item = {
name: cart[book].title,
sku: book,
price: cart[book].price,
currency: "USD",
quantity: 1
}
items.push(item);
}
API.payUsingPayPal(items)
.then((res) => {
console.log(res);
for (var link in res.data.links) {
if (res.data.links[link].rel === "approval_url") {
window.open(res.data.links[link].href);
}
}
});
}
Вот запрос POST axios:
payUsingPayPal: function(items) {
return axios.post("/api/payPal/payUsingPayPal", items);
},
А вот как выглядит контроллеркоторый должен обработать запрос и вернуть прямые ссылки, чтобы перевести пользователя в PayPal:
payUsingPayPal (req, res) {
var create_payment_json = {
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"redirect_urls": {
"return_url": "http://return.url",
"cancel_url": "http://cancel.url"
},
"transactions": [{
"item_list": {
"items": req.body
},
"amount": {
"currency": "USD",
"total": "1.00"
},
"description": "This is the payment description."
}]
};
paypal.payment.create(create_payment_json, function (error, payment) {
if (error) {
console.log("Error processing payment", error);
}
// Used only to return axios promise
db.Books.findOne({})
.then(() => {
res.json(payment);
});
});
}
Когда я console.log получаю результат paypal.payment.create()
, я ожидаю, что свойство data будет содержать ссылки перенаправленияэто приведет пользователя к PayPal и отобразит информацию о транзакции.Однако свойство data равно null
.