对 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 - 设置付款金额