(微服务实战)预付卡平台支付交易系统消费业务流程设计
2025年3月3日大约 4 分钟
(微服务实战)预付卡平台支付交易系统消费业务流程设计
1 交易系统技术架构
预付卡支付交易系统采用Dubbo3作为底层框架,支付交易系统分为账户系统、清结算系统、支付网关、核心支付系统等模块。系统整体采用微服务架构,容器化部署。


2 消费业务流程设计
预付卡系统消费场景分为线上和线下,线下可以使用实体卡和电子卡进行消费。线上消费场景依托预付卡小程序和APP,互联网用户可以通过小程序和APP在支持预付卡的商户进行消费
2.1 消费业务流程
消费业务流程主要涵盖了线下交易和线上交易,本文主要分析线下POS消费交易流程,参与的系统主要包含了POS终端、卡系统-支付交易系统、授权系统。以下是业务流程图

2.2 消费接口设计
2.2.1 通信协议
HTTP/JSON
2.2.2 接口定义
交易码:
交易码名称 | 操作码说明 |
---|---|
VOUCHER-PAY | 卡消费 |
参数名 | 必/可选 | 类型 | 长度 | 参数说明 | 约束 |
---|---|---|---|---|---|
voucherId | 必选 | 字符 | 32 | 卡/劵号 | 多张劵号以,分割 |
channel | 必选 | 字符 | 1 | 消费来源 | 1:旅游 2:生活服务 |
checkPwd | 必选 | 字符 | 1 | 是否校验密码 | 0:不校验 1:校验密码 |
payType | 必选 | 字符 | 1 | 消费类型 | 1:现金卡2:点卡 |
password | 可选 | 字符 | 6 | 密码 | checkPwd=1必选 |
payJournal | 必选 | 字符 | 16 | 统一支付流水号 | 统一支付保证流水唯一 |
payTime | 必选 | 字符 | 32 | 消费时间 | yyyyMMddHHmmss |
payAmount | 必选 | 数字 | 10 | 消费金额 | |
settleAmount | 必选 | 数字 | 10 | 结算金额 | 结算金额 |
extendInfo | 可选 | 字符 | 1024 | 接口扩展字段 |
响应信息定义:
参数名 | 必/可选 | 类型 | 长度 | 参数说明 | 约束 |
---|---|---|---|---|---|
respCode | 必选 | 字符 | 返回代码 | ||
respMess | 必选 | 字符 | 返回消息 | ||
tradeJournal | 必选 | 字符 | 交易流水 | ||
balance | 可选 | 字符 | 卡余额 | 卡消费必选 |
2.2.3 消息样例
请求消息
{
"VoucherPay": {
"voucherId": "",
"channel": "",
"checkPwd": "",
"payType": "",
"password": "",
"payJournal": "",
"payTime": "",
"payAmount": "",
"settleAmount": "",
"extendInfo": ""
}
}
响应消息
{
"VoucherPayResp": {
"respCode": "0",
"respMess": "成功",
"tradeJournal": "20240617191100",
"balance": "198.25"
}
}
3 消费撤销业务流程设计
3.1 消费撤销业务流程
消费撤销业务流程主要涵盖了线下交易和线上交易,参与的系统主要包含了POS终端、卡系统-支付交易系统、授权系统。消费撤销流程和上图的消费流程基本一致,本文只对消费撤销接口设计进行分析
3.2 消费撤销接口设计
3.2.1 通信协议
HTTP/JSON
3.2.2 接口定义
交易码:
交易码名称 | 操作码说明 |
---|---|
PAY-ROLLBACK | 消费撤销 |
请求信息定义如下:
参数名 | 必/可选 | 类型 | 长度 | 参数说明 | 约束 |
---|---|---|---|---|---|
voucherId | 必选 | 字符 | 32 | 卡/劵号 | 多张劵号以,分割 |
channel | 必选 | 字符 | 1 | 消费来源 | 1:旅游 2:生活服务 |
serviceType | 必选 | 字符 | 1 | 业务类型 | 2:冲正(POS机自动发起)3:撤销(操作员发起)4:退货(订单部分退) |
payType | 必选 | 字符 | 1 | 消费类型 | 1:现金卡2:点卡 |
payJournal | 必选 | 字符 | 32 | 统一支付流水号 | 统一支付保证流水唯一 |
retJournal | 必选 | 字符 | 32 | 原支付流水号 | 统一支付保证流水唯一 |
payTime | 必选 | 字符 | 32 | 消费撤销时间 | yyyyMMddHHmmss |
payAmount | 可选 | 数字 | 10 | 消费金额 | |
settleAmount | 可选 | 数字 | 10 | 结算金额 | 结算金额 |
extendInfo | 可选 | 字符 | 1024 | 接口扩展字段信息 |
响应信息定义:
参数名 | 必/可选 | 类型 | 长度 | 参数说明 | 约束 |
---|---|---|---|---|---|
respCode | 必选 | 字符 | 返回代码 | ||
respMess | 必选 | 字符 | 返回消息 | ||
tradeJournal | 必选 | 字符 | 交易流水 | ||
balance | 必选 | 字符 | 卡余额 |
3.2.3 消息样例
请求消息
{
"PayRollback": {
"voucherId": "",
"channel": "",
"serviceType": "",
"payType": "",
"payJournal": "",
"retJournal": "",
"payTime": "",
"payAmount": "",
"settleAmount": "",
"extendInfo": ""
}
}
响应消息
{
"PayRollbackResp": {
"respCode": "0",
"respMess": "成功",
"tradeJournal": "20240617191100",
"balance": "98.25"
}
}
加入我的星球
加入知识星球,参与项目讨论,在星球内置顶内容可以找到我微信联系方式,添加微信请备注星球会员没有备注的同学不理会。
