对 PayPal 的服务器端 SDK 感到困惑

Posted

技术标签:

【中文标题】对 PayPal 的服务器端 SDK 感到困惑【英文标题】:Confused about server-side SDK of PayPal 【发布时间】:2022-01-08 03:37:29 【问题描述】:

目前我正在将 PayPal 支付集成到我的项目中,但我对某些事情感到困惑。一切正常,我很高兴看到它正常工作,但不知何故,我的第六感告诉我创建服务器端 SDK 请求而不是当前客户端。这是我到目前为止所做的:

paypal.Buttons(
    style: 
    layout:  'vertical',
    color:   'blue',
    shape:   'rect',
    label:   'pay',
, createOrder: function(data, actions) 

        return actions.order.create(

            purchase_units: [

            amount: 
                description: ' $setup->plan->name ',
                value: ' $setup->plan->price '

            

            ],
            application_context: 
                shipping_preference: 'NO_SHIPPING'
            

        );

, onApprove: function(data, actions) 

    return actions.order.capture().then(function(orderData) 

        alert('successfull payment');

).render('#paypal-button-container');

一切都很好,但我想创建一个服务器端意图,因为我觉得它更安全。有人可以解释一下,如果交易成功完成并且用户支付了商品的确切价格,我如何可以轻松地检查交易,或者为付款创建服务器端意图,这样我就可以防止用户手动编辑价钱?文档对我来说太难理解了,这就是为什么我在这里问我的问题。我的项目在 Laravel 8

【问题讨论】:

【参考方案1】:

Set up standard payments 中的“添加和修改代码”部分介绍了如何进行服务器集成,并附有示例代码的链接。

在您的服务器上创建 2 条路由,一条用于“创建订单”,一条用于“捕获订单”,documented here。两个路由都应该只返回 JSON 数据(没有 html 或文本)。在第二条路线中,当捕获 API 成功时,您应该将其生成的付款详细信息存储在您的数据库中(特别是 purchase_units[0].payments.captures[0].id,这是 PayPal 交易 ID)并执行任何必要的业务逻辑(例如发送确认电子邮件或预订产品)立即将您的返回 JSON 转发给前端调用者。

将这 2 条路由与前端审批流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server

【讨论】:

以上是关于对 PayPal 的服务器端 SDK 感到困惑的主要内容,如果未能解决你的问题,请参考以下文章

带有服务器集成的 PayPal 客户端 JavaScript SDK - 设置付款金额

如何在 Rails 应用程序中实现 Paypal Rest API

开始使用 Paypal Pro API

对服务与工厂感到困惑

真的对贝宝付款感到困惑

对服务器发送的事件感到困惑