在Paypal结帐中添加自定义字段

问题描述 投票:0回答:1

我们正在为我们的Web应用程序使用Paypal结帐。我们的客户库位于我们要设置付款的地方。在后端,我们试图通过webhook捕获处理后的详细信息。我们在沙盒帐户上对此进行了测试。 Webhook将按预期发送除自定义字段以外的所有详细信息。我们需要自定义字段,以便将付款与特定服务相关联。

在我们的网络应用中,我们具有以下内容:

  paypalConfig = {

    env: 'sandbox',

    style: {

          size: 'responsive',

          color: 'white',

          shape: 'rect',

          label: 'pay',

          layout: 'horizontal',

          tagline: 'false'

    },

    client: {

      sandbox: 'SANDBOX_ID',

    },

    commit: false,

    payment: (data, actions) => {

      console.log("data is", data, actions);

      return actions.order.create({

        payment: {

          transactions: [

            { amount: { total: this.finalAmount * 100, currency: 'USD' }, job_id: this.jobId }

          ]

        }

      });

    },

    onApprove: (data, actions) => {

          return actions.order.capture().then((details) => {

            // This function shows a transaction success message to your buyer.

            // alert('Transaction completed by ' + details.payer.name.given_name);

            this.openModel('modal1');

      }).catch(err => {console.log("Error in authorize in paypal", err); this.openModel('modal2');})

    }

  }

您可以看到,付款处理程序正在为交易对象添加一个job_id属性。在后端,我们正在侦听以下事件:

结帐订单已完成,付款捕获已完成,付款销售已完成

我们只需要监听一个事件(例如收到的付款),它告诉我们交易何时完成。我不确定,所以我添加了所有似乎相关的事件,因为没有任何名为“已收到付款”的事件。

我们可以在这里尝试吗?我们在网络挂钩中没有获得自定义的job_id字段。

paypal paypal-sandbox
1个回答
0
投票

首先,您似乎正在使用旧的PayPal checkout.js,请切换到最新的sdk.js

您正在使用仅客户端集成的第二部分中,切换到适当的客户端-服务器模式。这是前端:https://developer.paypal.com/demo/checkout/#/pattern/server

您将在服务器上需要两条相应的路由,“设置交易”和“捕获交易”,在此处记录:https://developer.paypal.com/docs/checkout/reference/server-integration/

使用上述解决方案,您将在付款捕获后立即收到同步的API响应。不需要来自Webhooks的其他异步通知,因此这些消息实际上对您来说是多余的。


一旦上述所有方法都能为您工作并创建成功的交易,则还需要考虑另一件事:传播失败。就是说,如果买方的资金来源无法获得,例如,在道路不畅的情况下会发生什么。他们的卡被拒绝了吗?有how to send that error back to the UI的指南,因此他们可以添加或选择其他卡。无论如何,这只是最后一个需要担心的细节。

© www.soinside.com 2019 - 2024. All rights reserved.