使用 Paypal 交易存储自定义元数据

Gau*_*hra 4 paypal paypal-sandbox

我正在扩展一个当前使用 stripe 作为支付处理器的应用程序。该架构的实现方式是,为了满足合规性,我不会在应用程序数据库中存储任何交易和客户信息。因此,所有数据都作为交易元数据存储在 Stripe 中。

现在我需要扩展应用程序以添加 Paypal 支付网关,但在浏览文档后,我找不到 PayPal 交易 API 中可用的元数据选项,就像 Stripe 中的元数据选项一样。

我已经按照 v1 https://developer.paypal.com/docs/business/checkout/server-side-api-calls/create-order/中的建议尝试了 PayPal 的带有元数据的创建订单 API

createOrder: function(data, actions) {
    return actions.order.create({
      metadata:{
        "cid":1233,
        "dgn":"AH-GHGJTTHHHJ",
        "ct":"X-HGD898989","tfn":"xyz params",
        "type":"2",
        "lo":"lorem ipsum is a dummy text and hope it works"
      },
      purchase_units: [
        {
            "description":'xyz P30 Pro mobile',
            "amount":{"currency_code":"USD","value":199}
        }]
    });
  },
Run Code Online (Sandbox Code Playgroud)

但是在通过 TX_ID 检索事务时,我没有取回元数据对象。

因此,任何过去面临过这一挑战并能提出解决方法来通过 PayPal 实现这一目标的人都会受到高度赞赏。

Pre*_*der 5

除了交易的唯一字段(以前从未用于完成付款)之外,PayPal 中唯一的自定义元数据字段是,记录如下:https ://developer.paypal.com/docs/api/orders/v2/#orders-创建请求主体invoice_idcustom_id

如果您需要其他字段,请根据您自己的订单/发票 ID 或生成的 PayPal 交易 ID 将其存储在本地,并在以后根据需要查找。custom_id如果数据足够小(127 个字符),具有合规性问题的最敏感数据可能会作为序列化 JSON 字符串存储

购买商品信息可以放入“items”数组中,这要求金额有一个“breakdown”对象。请参阅文档中的示例,

    createOrder: function(data, actions) {
      return actions.order.create({
         "purchase_units": [{
            "amount": {
              "currency_code": "USD",
              "value": "100",
              "breakdown": {
                "item_total": {  /* Required when including the `items` array */
                  "currency_code": "USD",
                  "value": "100"
                }
              }
            },
            "items": [
              {
                "name": "First Product Name", /* Shows within upper-right dropdown during payment approval */
                "description": "Optional descriptive text..", /* Item details will also be in the completed paypal.com transaction view */
                "unit_amount": {
                  "currency_code": "USD",
                  "value": "50"
                },
                "quantity": "2"
              },
            ]
          }]
      });
    },
Run Code Online (Sandbox Code Playgroud)