使用多个项目创建付款时如何从请求中读取项目?
Posted
技术标签:
【中文标题】使用多个项目创建付款时如何从请求中读取项目?【英文标题】:How to read items from request when creating payment with multiple items? 【发布时间】: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
。
【问题讨论】:
【参考方案1】:好吧,我想通了。 item_list 中的总价格必须等于传入“金额”部分的总和。有时最明显的问题是最难解决的......
【讨论】:
以上是关于使用多个项目创建付款时如何从请求中读取项目?的主要内容,如果未能解决你的问题,请参考以下文章
如何从一个 Xcode 项目访问多个 Firebase 数据库
SSH网上商城项目实战24Struts2中如何处理多个Model请求