返回

考虑到 GET 请求应该是安全的,如何处理 Stripe 上的成功 URL?

发布时间:2022-06-13 23:44:24 369
# 爬虫# 数据库# 数据# 支付# 工具

当我们进行条带结帐会话时,我们会包含一个成功 url:

session = await this.stripe.checkout.sessions.create({
    payment_method_types: ['card'],
    line_items: lineItems,
    payment_intent_data: {
        transfer_data: {
            amount: 9999999,
            destination: someaccountId,
        },
    },
    success_url: `http://localhost:4000/api/checkout/success?true&session_id={CHECKOUT_SESSION_ID}&alias_id=${aliasId}`, 
    cancel_url: `http://localhost:4000/api/checkout/canceled?session_id={CHECKOUT_SESSION_ID}`,
});

成功 URL 是 Stripe 在成功支付后发送给用户的地方。这是一个 GET 请求,因为 stripe 正在重定向用户。许多使用 Stripe 的应用程序需要在成功结账后采取行动——发送电子邮件收据、通知、发送付费内容、更新数据库中的订单等。但建议不要在 GET 请求中执行这些操作,因为 GET 请求应该是幂等的和安全的。

例如,电子邮件中的取消订阅链接不应取消订阅用户,而是“取消订阅链接的正确方法是引导到用户可以单击按钮取消订阅的页面(其中按钮单击触发 POST 请求)。” src这是因为“许多、许多、许多工具、实用程序、网络爬虫和其他东西都假设 GET 永远不会是破坏性操作(这是正确的,因为它是这样指定的)。如果您现在通过破坏该规范来破坏您的应用程序,您将保留应用程序的两个部分”  。

所以我想知道处理条纹成功网址的正确方法是什么?如果我们遵循上面的建议,那么成功 url 将链接到一个页面,用户点击一个更新订单的按钮,通过电子邮件发送收据等。但是我们依靠客户来完成已经支付的订单为了。如果他们不按下那个按钮,那么重要的动作就没有完成。这样做的正确方法是什么?或者,在 GET 请求中不更改数据库的建议是否因某种原因不适用于这些类型的操作?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像