微信支付流程解析

微信支付流程解析

微信支付流程

微信支付业务流程时序图详见官方文档

  1. 商户调用统一下单接口,生成预支付交易单,微信支付侧返回prepay_id。
  2. 商户通过各类方式(js、native、小程序等)调起微信支付,发起支付请求,请求中需带有上步中的prepay_id,微信支付返回的结果包括成功、失败和取消。
  3. 微信支付回调商户的支付结果通知接口,告知支付结果和transaction_id,商户侧需存储transaction_id,以供查询订单状态
  4. 商户侧可以通过订单查询接口,以订单号或transaction_id来查询微信支付中订单的状态

支付流程分析

支付是一个流程长、易出错的业务,中间涉及用户、微信、银行、商户等多个主体,因此在架构上不适合或者不可能采用同步接口的流程。采用异步流程,虽然系统架构复杂,但可以带来更高的并发性能,更好的用户体验。

微信支付中的prepay_id和transaction_id,类似于分布式事务中的二阶段提交算法,首先在微信中创建预支付交易单prepay_id(对应prepare阶段),然后再执行复杂的扣款流程,扣款成功后,微信支付回调商户,生成正式交易单transaction_id(对应commit阶段)。同时提供了订单查询接口,以及对账机制,来保证数据的最终一致性。

同时,prepay_id又可以防止用户重复支付,因为用户调用微信支付时使用的是同一个prepay_id,没有必要更换,更换后会造成重复支付。

二阶段提交算法详见这篇文章

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值