【问题标题】: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

【问题讨论】:

    标签: paypal paypal-rest-sdk


    【解决方案1】:

    好吧,我想通了。 item_list 中的总价格必须等于传入“金额”部分的总和。有时最明显的问题是最难解决的......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 2016-04-27
      • 2016-11-02
      相关资源
      最近更新 更多