如何在PayPal智能按钮交易中发送自定义数据字段

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

我是PayPal集成的新手,但我设法使用了客户端JavaScript SDK来创建按钮并完成交易。我还添加了一个Webhook,用于监听PAYMENT.CAPTURE。*事件,并将返回数据记录到我自己的数据库中的事务表中。缺点是我没有办法跟踪交易是针对哪个服务或客户的。因此,我想知道如何在按钮中添加至少一个自定义字段,以便在Webhook POST中将其返回给我,以便我可以为该特定客户执行一些业务逻辑。

我最初的选择是发布数据返回onApprove:(data, actions)=>{},但如果在发生灾难性事件之前发生了某些灾难性事件,例如断电或一般的客户端-服务器连接失败,我将没有恢复选项。

这是我现在的JS基本代码:

try{
        paypal.Buttons({

        // Set up the transaction
        createOrder: function(data, actions) {
            return actions.order.create({
                purchase_units: [{
                    amount: {
                        value: charge.amount,
                        currency_code:'USD'
                    }
                }]
            });
        },
        // Finalize the transaction
        onApprove: function(data, actions) {
            return actions.order.capture().then(function(details) {
                console.log(details);
                if(details.status == "COMPLETED"){
                  localStorage.clear();
                  window.location.href = "thank-you";
                }
                //alert('Transaction completed by ' + details.payer.name.given_name + '!');
            });
        }


    }).render('#paypal-button-container');
  }catch(e){
     console.error('PayPal not loaded!');
  }
javascript paypal paypal-rest-sdk
1个回答
1
投票

切换到适当的客户端-服务器集成。

这里是要使用的前端:https://developer.paypal.com/demo/checkout/#/pattern/server

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

(((如果您想作些科学怪人,可以尝试保持createOrder功能不变(客户端代码),并仅在onApprove部分中集成单个服务器端路由。我不确实不建议这样做,但是您可以尝试一下,也许可以作为迭代开发步骤。最好也从服务器上“设置事务”。]


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

但是,一旦一切都为幸福的道路而努力,则还需要考虑另一件事。如果路径不愉快,例如客户卡被拒,该怎么办?然后,您应该handle funding failures in a way that propagates the error back to the UI,以便他们可以选择其他卡。一旦其他所有工作都结束,这是最后要担心的事情。

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