如何将用户详细信息从节点 js 应用程序传递到 paypal sdk?

How to pass user details to paypal sdk from node js application?

我在我的 node.js 应用程序中使用 JWT,并且我正在接收来自授权(登录)用户的付款请求。我已经在我的应用程序中添加了 Paypal REST SDK,并且我在支付成功后成功重定向到成功路由,但是我如何确定哪个用户进行了支付? 我知道我可以在有关付款、付款人 ID 和电子邮件的响应中使用一些值。但我正在尝试找出一种更好的方法来处理用户可能从不同的 Paypal 电子邮件付款的情况。

有没有办法传递用户 ID 并在成功路由中将其接收回来?我是否遗漏了此流程中的某些内容?

POST 来自 VUE JS 的请求:

app.post('/pay', (req, res) => {
   var userId = req.userId; // from the authorization header of the requset 

  const create_payment_json = {
    "intent": "sale",
    "payer": {
        "payment_method": "paypal"
    },
    "redirect_urls": {
        "return_url": "http://localhost:3000/success",
        "cancel_url": "http://localhost:3000/cancel"
    },
    "transactions": [{
        "item_list": {
            "items": [{
                "name": "Red Sox Hat",
                "sku": "001",
                "price": "25.00",
                "currency": "USD",
                "quantity": 1
            }]
        },
        "amount": {
            "currency": "USD",
            "total": "25.00"
        },
        "description": "Hat for the best team ever"
    }]
};

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);
        }
      }
  }
});

});

成功路由,我要访问的地方userId 并在我的数据库中存储一些关于用户和付款的信息:

app.get('/success', (req, res) => {
  const payerId = req.query.PayerID;
  const paymentId = req.query.paymentId;

  const execute_payment_json = {
    "payer_id": payerId,
    "transactions": [{
        "amount": {
            "currency": "USD",
            "total": "25.00"
        }
    }]
  };

  paypal.payment.execute(paymentId, execute_payment_json, function (error, payment) {
    if (error) {
        console.log(error.response);
        throw error;
    } else {
        console.log(JSON.stringify(payment));
        res.send('Success');
    }
});
});
  1. 您正在使用不支持的已弃用 v1/payments SDK。请改用 Checkout-NodeJS-SDK 代替 v2/checkout/orders。请在此处查看 'Create Order' 和 'Capture Order' 的文档:https://developer.paypal.com/docs/business/checkout/server-side-api-calls/#server-side-api-calls,这是您需要的两条路线

  2. 要将数据从客户端发送到您的服务器,请将其作为 JSON 格式的 POST 数据添加并包含在对您的 fetch/XHR 调用中服务器来自此批准流程中的客户端 createOrder 和 captureOrder 函数:https://developer.paypal.com/demo/checkout/#/pattern/server 。然后,您添加的数据将在 req.

    中解析并在处理该路由的服务器上可用
  3. 由于您使用的是 VUE,您可能会发现此驱动程序很有用:https://developer.paypal.com/docs/business/checkout/configure-payments/single-page-app/#vue,但请注意其中的示例用于客户端创建和捕获。您应该继续在您的服务器上使用路由来执行这些操作。