匹配交易总额的最简单方法?

我正在尝试将 paypal 添加到我的网站。我正在使用他们的 REST API,我想做的是让用户确定他们要存入的金额。我可以在创建付款时获得总计,但我不确定如何在没有复杂的对象数组系统的情况下将其传递到执行部分。有任何想法吗?


以下是我如何创建订单和执行订单的示例:


router.post('/pay', (req, res) => {

    console.log(req.body.amount_to_deposit)

    var create_payment_json = {

      "intent": "sale",

      "payer": {

          "payment_method": "paypal"

      },

      "redirect_urls": {

          "return_url": `${domain}success`,

          "cancel_url": `${domain}cancel`

      },

      "transactions": [{

          "custom": req.user.steamid,

          "item_list": {

              "items": [{

                  "name": "Deposit",

                  "sku": "001",

                  "price": "25",

                  "currency": "USD",

                  "quantity": 1

              }]

          },

          "amount": {

              "currency": "USD",

              "total": "25"

          },

          "description": `Deposit UserID:${req.user.steamid}`

      }]

  };

  

  paypal.payment.create(create_payment_json, function (error, payment) {

    if (error) {

        throw error;

    } else {

        for(let i = 0;i < payment.links.length;i++){

          if(payment.links[i].rel === 'approval_url'){

            res.redirect(payment.links[i].href);

          }

        }

    }

  });

  

  });


  router.get('/success', (req, res) => {

    const payerId = req.query.PayerID;

    const paymentId = req.query.paymentId;

    console.log(req.query)

    const execute_payment_json = {

      "payer_id": payerId,

      "transactions": [{

          "amount": {

              "currency": "USD",

              "total": "25"

          }

      }]

    };

  

    paypal.payment.execute(paymentId, execute_payment_json, function (error, payment) {

      if (error) {

          console.log(error.response);

          throw error;

      } else {

          if (payment.transactions[0].custom) {

            console.log(payment.transactions[0].custom)

          }

          res.send('Success');

      }

  });

  });

我可以使用 body 参数获取用户想要支付的金额,但是如何将其发送到成功路径,从而执行支付 json 对象?


撒科打诨
浏览 83回答 1
1回答

忽然笑

您为何使用旧的 v1 支付 REST API?当前的 API 是 v2/checkout/orders,捕获订单(大致相当于 v1 支付执行)不需要传递金额。如果您发现它比自己管理 JSON 请求更容易,还有一个 Node.js SDK,但无论哪种方式都可以。看起来您正在重定向到approval_url,这在当今是一种相当差的结帐体验。使用此前端,让 PayPal 按钮调用您的 2 个路由(一个用于创建订单,一个用于捕获订单),而不是重定向不要使用任何重定向。完全没有。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript