【发布时间】:2019-10-29 08:13:26
【问题描述】:
我正在使用 Express.js 服务器设置站点,并尝试实现 paypal-node-sdk npm 模块。该网站将用于出售我的书。用户可以将书籍添加到购物车,然后使用 PayPal 点击结帐。单击时,这应该将购物车的内容发送到paypal.payment.create() 函数,该函数将用于创建用户的付款信息。
我从 paypal-node-sdk GitHub 页面获取了样板代码。但是,当我尝试将自己的数据插入此代码时,它不会被发送到 create() 函数。
我尝试以各种方式重新格式化数据,并确保它与 paypal-node-sdk GitHub 文档中给出的模板相匹配。
我的程序使用 ReactJS。
这是我调用 PayPal API 的方式:
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);
}
}
});
}
这里是 axios POST 请求:
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);
});
});
}
当我控制台记录paypal.payment.create() 的结果时,我希望 data 属性包含重定向链接,这些链接会将用户带到 PayPal 并显示交易信息。但是,数据属性是null。
【问题讨论】: