美文网首页
支付宝当面付的流程

支付宝当面付的流程

作者: 风凡的雪 | 来源:发表于2018-07-29 18:25 被阅读0次

    一、流程

    1、用户请求支付,调用我方接口,我方根据订单信息和商品信息构造符合支付宝要求的请求参数(请求参数中具有一个我方的回调地址,当支付成功的时候,支付宝会回调这个接口)去请求一个支付二维码(可设置支付二维码的过期时间)。我方将支付二维码持久化到图片服务器,然后图片地址给前端,让前端展示给用户。

    2、剩下这一步就是用户和支付宝的交互了。用户支付成功后,支付宝回调我们的接口,我们的接口开始去更新订单状态,写支付信息到我们的数据库中,如此一个完整的支付场景就完成了。支付宝会根据我们返回的值,判断这次交易是否成功,不成功则不扣钱。

    二、难点

    1、如何确保是支付宝回调的我们的接口?

    如果是被恶意的第三方调用我们的接口,并且通过了将订单状态更新了,那么就相当于我们形成了损失。

    支付宝自身提供了一套校验机制(这套校验机制是怎么做的,值得学习),我们可以通过调用支付宝的校验接口去校验回调是否来自支付宝。

    2、如何保证幂等性?

    如果是因为网络原因、用户多次点击。那么要保证这些操作造成的结果是一致的。

    我的处理方案:先去数据库中查询状态,如果状态是订单已支付,那么返回支付已完成的消息,否则去更新订单信息。

    缺点:如果正在更新状态,一个请求又过来了,那么还是不能保证幂等性。

    改进:使用一个全局分布式锁,每次要进行这个操作(其中还是有查询状态这个操作),去持有这个分布式锁,执行成功之后去释放这个分布式锁(这是为了避免高并发带来的问题)。

    幂等性文章:https://www.jianshu.com/p/ce5f5aa3d17f

    相关文章

      网友评论

          本文标题:支付宝当面付的流程

          本文链接:https://www.haomeiwen.com/subject/muktvftx.html