0

我正在使用 VueJS + Strapi 为按摩师建立一个网站,客户可以购买礼券。

现在我已经用 Paypal 支付网关设置了 VueJS 部分。

我想知道如何设置后端部分以及如何触发凭证的创建。

我打算做的是将paypal(onApprove)的响应发送到后端并在数据库中创建一个新凭证,然后通过电子邮件将其发送给收件人。

onApprove: async (data, actions) => {
                    const order = await actions.order.capture();
                    axios.post('myapiroute', order)
                },

这安全吗?(如果我使用 CORS 只允许我的前端地址调用后端 API)

有没有办法“绕过” cors 或强制前端进行 API 调用?

有没有更安全的方法来做到这一点?

4

1 回答 1

0

如果您需要执行任何服务器端操作(例如写入数据库或发送到产品)作为捕获的结果,请不要使用actions.order.create/.capture在客户端创建和捕获订单。

订单创建和捕获应该从服务器端代码完成,无论您拥有什么后端(在这种情况下显然是 node.js;有一个 Checkout-NodeJS-SDK 可用)。

在您的服务器上创建两条路由,一条用于“创建订单”,一条用于“捕获订单”,记录在此处。这些路由应该只返回 JSON 数据(没有 HTML 或文本)。后者应该(成功时)在返回之前将付款详细信息存储在您的数据库中(特别purchase_units[0].payments.captures[0].id是 PayPal 交易 ID)

将这两条路线与以下批准流程配对:https ://developer.paypal.com/demo/checkout/#/pattern/server

(由于您使用的是 vue 前端,您可以查看这个 vue-specific sample,但更改它的 createOrder 和 onApprove 以从您的后端获取)

于 2021-07-20T14:03:08.337 回答