Я настраиваю сайт с помощью сервера Express.js и пытаюсь реализовать модуль npm paypal-node-sdk. Веб-сайт будет использоваться для продажи моих книг. Пользователь может добавить книги в корзину, а затем щелкнуть Оформить заказ с помощью PayPal. При нажатии это должно отправить содержимое корзины в функцию paypal.payment.create()
, которая будет использоваться для создания платежной информации пользователя.
Я взял шаблонный код со страницы paypal-node-sdk на GitHub. Однако, когда я пытаюсь вставить свои данные в этот код, они не отправляются функции create()
.
Я пробовал переформатировать данные различными способами и убедился, что они соответствуют шаблону, приведенному в документации GitHub paypal-node-sdk.
Моя программа использует 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 и отображать информацию о транзакции. Однако свойство данных null
.