Square API对成功结账付款进行回调



我正在使用Square API处理用户付款(使用Create Checkout LinkAPI(: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的变体,其中元素的顺序很重要并且允许重复(这对于~2*10^84来说是可行的,如果数据库发生泄漏(例如,托管提供商被泄露(,所有密钥都将被获取,人们可以手动点击API来批准他们的购买。我需要让这变得更加微妙,或者完全改变付款验证过程。

有什么办法可以改进我目前的系统吗?有没有办法像Stripe API提供的那样,以某种方式使用Square的API通过回调验证购买成功?

您可以将密钥添加到redirect_url,但正如您所指出的,这很容易被坏人访问。你有没有看过在支付链接订单中添加你的密钥作为reference_id?付款完成后,您可以使用order_id并调用RetrieveOrder来获取所有订单详细信息,包括您唯一的reference_id,这是坏人无法访问的。

最新更新