【发布时间】:2022-11-29 09:25:48
【问题描述】:
我正在使用 Square API 处理用户付款(使用 Create Checkout Link API): POST /v2/online-checkout/payment-links。
问题是 square 不支持开箱即用的支付成功和支付失败的回调函数,它只提供了一个 redirect_url 选项来在用户完成支付时将用户转到另一个页面。
我现在解决它的方法是为每个purchase intent生成一个随机的secret key,并将密钥作为参数传递给redirect_url:
redirectr_url = "https://example.com?pid=5&secret_key=abcdefgh12345"
然而,这会将我系统的内部工作原理暴露给任何远程 IT 技术人员,他们可以看到我将密钥作为 GET 参数传递。
即使密钥是类 25 和元素数量 64 的变体,其中元素的顺序很重要并且允许重复(如果数据库有泄漏(例如托管服务提供商被泄露),所有的密钥都将被抢夺,人们可以手动点击 API 来批准他们的购买。我需要使这更微妙或完全改变支付验证过程。
有什么方法可以改进我当前的系统吗?有没有办法像 Stripe API 提供的那样以某种方式使用 Stripe 的 API 通过回调验证购买成功?
【问题讨论】: