美文网首页
聚合支付:支付订单状态的转换

聚合支付:支付订单状态的转换

作者: chenyq1989 | 来源:发表于2019-03-23 21:38 被阅读0次

目前在负责一个聚合支付系统,该系统初期通过项目方式开发,由于前期沟通,开发等原因遗留较多问题,近期将通过一系列反思对项目进行梳理重构,首先梳理支付订单的状态变换,

一笔订单的生命

  • 一笔订单生成后首先需要记录在案,这个时候需要记录该订单状态为刚刚创建,还未发起支付
  • 订单创建后就要让客户发起支付了,对于聚合支付系统来说,存在多种方式发起支付

对于银行卡支付交易,必须在发起支付前记录为支付中状态
对于微信支付宝被扫交易,必须在发起支付前记录为支付中状态
对于微信支付宝下单交易,由于纯粹的下单交易并无法让客户发起支付,在调用下单接口前后记录为支付中状态均可
总的来说,对支付结果有影响的接口调用必须在调用前将订单状态置为支付中,如果无影响则均可

  • 接下来就是支付结果了,成功,失败,但还有一个状态未知,其实状态未知可以归到支付中状态,例如银行卡扣款超时
  • 对于通过先下单后支付的订单还存在关闭的可能

订单状态归纳

  • 初始化
  • 处理中
  • 成功
  • 失败
  • 关闭

针对订单有哪些操作


  • 创建一笔订单
  • 对一笔订单发起支付
  • 关闭订单
  • 修改订单状态为支付成功
  • 修改订单状态为支付失败

  • 创建一笔退款订单
  • 发起退款
  • 修改退款订单状态为退款成功
  • 修改退款订单状态为退款失败

  • 创建一笔撤销订单
  • 发起撤销
  • 修改撤销订单状态为撤销成功
  • 修改撤销订单状态为撤销失败

  • 订单查询

订单子系统如何与外围子系统交互

事实上我们发现在聚合支付系统中,除了创建订单以及发起支付外,订单最终状态并不由聚合支付系统决定,而是由第三方支付系统等决定,不能因为支付系统发生其他错误时导致订单状态不正确,所以分布式服务的情况下,可以用最终一致性来解决事务不一致产生的问题;因此我们将支付成功,支付失败,退款成功,退款失败,撤销成功,撤销失败等第三方返回的状态从交易中解耦,通过事件来通知订单子系统


对于正向订单其操作及状态转移图如下:


image.png

正向订单操作业务逻辑

  • 创建一笔订单
    1. 检查输入参数
    2. 将订单状态设置为初始化并持久化订单数据
    3. 可能的业务异常:订单号重复(ERROR)
  • 对一笔订单发起支付
    1. 检查输入参数
    2. 查询订单将订单状态设置为处理中
    3. 补充订单相关数据并持久化
    4. 可能的业务异常:订单已发起支付,不能重复支付(ERROR)
  • 关闭订单(幂等)
    1. 检查输入参数
    2. 查询订单并校验订单状态是否可关闭
    3. 将订单状态设置为已关闭
    4. 可能的业务错误:订单已发起支付不能关闭(INFO)
  • 修改订单状态为支付成功(幂等)
    1. 检查输入参数
    2. 查询订单并校验订单状态
    3. 可能的业务错误:订单未发起支付不能(ERROR)
  • 修改订单状态为支付失败(幂等)
    1. 检查输入参数
    2. 查询订单并校验订单状态
    3. 可能的业务错误:订单已成功或未发起支付(ERROR)
  • 修改订单状态为已关闭(幂等)
    1. 检查输入参数
    2. 查询订单并校验订单状态
    3. 可能的业务错误:订单已成功或失败不能关闭(ERROR)

相关文章

  • 聚合支付:支付订单状态的转换

    目前在负责一个聚合支付系统,该系统初期通过项目方式开发,由于前期沟通,开发等原因遗留较多问题,近期将通过一系列反思...

  • 常见幂等性接口设计方案

    1 状态机幂等针对更新操作,比如业务上需要修改订单状态,订单有 待支付、支付中、支付成功、支付失败、订单超时关闭等...

  • 订单流程配置

    顾客在线(微信商城)下单,订单流程会经过如下状态: 待支付。顾客在微信商城下单、但尚未支付时,订单状态为“待支付”...

  • 2019-07-17

    支付系统 三方支付 京东支付 银联支付 [建行龙支付] 招商一网通 聚合支付 1.什么是聚合支付 2.有名的聚合支...

  • 下订单去支付服务:支付和提现逻辑设计

    支付和提现 支付 创建订单阶段 根据平台产品创建本地订单本地订单号(唯一) 创建支付订单(支付平台的订单)支付凭证...

  • 什么是聚合支付?

    所谓聚合支付,就是依托银行、三方支付或清算组织的支付通道与清算能力,为客户提供接口、集成、对接、订单处理、数据统计...

  • 融合了多种支付通道的支付工具就是聚合支付

    聚合支付——支付通道的整合 度娘搜索聚合支付:也称“融合支付”,是指从事“支付、结算、清算”服务之外的“支付服务”...

  • 聚合支付专题研究

    聚合支付定义 聚合支付:也称“融合支付”,是指只从事“支付、结算、清算”服务之外的“支付服务”,依托银行、非银机构...

  • Java 实现分布式事务的三种方案

    问题描述:用户支付完成会将支付状态及订单状态保存在订单数据库中,由订单服务去维护订单数据库。由库存服务去维护库存数...

  • DelayQueue之限时订单实现方式

    支付宝押金支付时,生成押金订单,用户超过15分钟未支付,订单状态改为超时取消。(生活中还有很多场景:在淘宝购物下单...

网友评论

      本文标题:聚合支付:支付订单状态的转换

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