2021-08-19

安卓云管理平台-支付功能设计文档

历史修改记录

日期版本描述作者

1 需求分析

1.1 背景

安卓云手机运营,与支付有关的功能必不可少,用来保障支付的准确性
关于OrderResponse 的 subecode字段 表示接口调用无错误信息 即调用成功
https://opendocs.alipay.com/open/common/105806

public boolean isSuccess() {
    return StringUtils.isEmpty(this.subCode);
}
1.2 需求描述
  • 支付宝/微信 支付功能(订单超时关闭)
  • 支付宝/微信 支付异步通知功能
  • 支付宝/微信 支付订单的查询功能
  • 支付宝/微信 创建订单功能
  • 支付宝/微信 订单关闭功能
  • 支付宝/微信 订单退款功能(废弃)
  • 支付宝/微信 订单退款异步通知功能(废弃)
  • 支付宝/微信 订单退款查询功能(废弃)
  • 定时器功能

2 总体设计

2.1 设计思路描述
  • 订单超时关闭:统一支付接口中设置超时时间后订单将自动关闭
  • 异步通知:订单支付或退款动作中设置notify_url,返回的订单结果数据,可用查询替代
  • 使用策略模式,对外只暴露以下四个接口,实现对内的封装
    支付
    退款
    支付异步通知
    退款异步通知
  • 定时器功能:使用Java的定时器线程池,基于阻塞队列开发,定时调度时间采用spring提供的cron表达式配置方式
2.2 详细描述
  • 策略模式:用于匹配支付渠道和支付动作,减少if/else语句的使用
    支付渠道:微信,支付宝等
    支付动作:1-查询订单,2-关闭订单,3-创建订单,4-支付订单,5-查询退款,6-申请退款等
    支付:1-查询订单,2-关闭订单,3-创建订单,4-支付订单
    退款:5-查询退款,6-申请退款
    支付异步通知:订单支付过程中设置notify_url,指向notify_url返回的订单结果数据

    异步通知:订单退款过程中设置notify_url,指向notify_url返回的订单结果数据

  • 定时器功能
    1.创建一个定时器
    2.使输入参数为时间,方法,类型
    3.将任务放进队列,使任务定时执行,满足判断条件后关闭线程,任务结束

2.3 时序图
  • 支付接口
  • 支付异步通知接口
  • 退款接口
  • 退款异步通知接口
2.4 程序设计
  • 策略模式详情图

  • 在这里插入图片描述

  • 定时器详情图 使用延迟队列插件在这里插入图片描述

2.5 接口设计

| 接口地址 | /v1/order/pay | v1/order/notifiyPay | /v1/order/refund | /v1/order/notifiyRefund |
|:— |:— |
| 接口描述 | 支付接口 | 支付异步通知接口 | 退款接口 | 退款异步通知接口 |
| 接口入参 |
| 参数名 | 参数类型 | 参数描述 | 参数字典 | 备注 |
| channelKey | String | 支付渠道 | wx(微信) ali(支付宝) |
| orderType | Int | 支付动作(类型) | 1(查询订单) 2(关闭订单) 3(创建订单) 4(支付订单) 5(查询退款) 6(申请退款) |
| OrderRequest | OrderRequest | 实体类属性 | outOrderId(商户订单号) | 实体类 |
| 接口出参 |
| 参数名 | 参数类型 | 参数描述 | 参数字典 | 备注 |
| OrderResponse | OrderResponse | 实体类属性 | resultCode(业务结果) resultDes(业务结果描述) returnCode(微信返回的状态码) orderStatus(订单状态) outTradeNo(第三方支付流水号) orderId(数据库里的商户订单号) resultMsg(微信/支付宝错误描述) finishTime(支付完成时间) subCode(业务返回码) | 实体类 |

2.6 测试要点

postman/swagger的单元测试,测试范围为验证需求中的支付动作是否准确

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值