Springboot 支付宝分账业务实践

千门万户曈曈日,总把新桃换旧符。

1 前言

在前文中已经讲述了支付宝的支付业务内容,在本文中将介绍商户分账的业务。通常情况下在支付业务完成后会进行分账和分佣业务,如下图所示,当用户进行一笔支付后,可以由商户发起分账操作(给渠道方和物流方进行分账)。支付的分账涉及到分账账户的绑定以及分账比例的设置,在支付完成后的分账只是最后分账的执行操作而已。

2 分账API

分账的操作涉及分账的关系维护、解绑和查询,交易分账结算,分账查询接口。以下是支付宝分账相关的业务概念:

bash 复制代码
出账支出方:资金账户的转出方,即交易商户账户,分账时要保障分账资金充足。
分账收入方:分账的收入方账户,一般是服务商或者供货商,也可以是个人账户。
服务商:即商户账户,一般就是卖家账户。
分账关系:就是分账收入方和支出方的关系,即商户交易后需要分账的账户集,每个商户能分到一部分的资金。

这里需要说明是的单个商户的分账比例一般不超过30%,如果需要超过比例,需要在商户后台设置。
# 支付宝分账产品文档
https://opendocs.alipay.com/open/20190308105425129272/intro

支付宝关于商家分账的API主要有以下内容:

bash 复制代码
1 分账关系维护
# 绑定分账关系,用户维护分账关系alipay.trade.royalty.relation.bind
# 分账关系解绑,alipay.trade.royalty.relation.unbind
# 查询商户已经绑定的关系 alipay.trade.royalty.relation.batchquery

2 分账请求
# 用户交易完成后进行交易分账 alipay.trade.order.settle

3 分账查询
# 根据分账单查询分账单的比例 alipay.trade.royalty.rate.query
# 根据商户交易号查询剩余分账金额 alipay.trade.order.onsettle.query
# 查询用户分账结果信息 alipay.trade.order.settle.query

3 业务操作

关于分账的业务,如下图所示。系统的每个商户都会绑定几个分账账户,并且配置每个账户的分账比例。每当客户确认一笔交易时,商户会收到一笔交易款,需要按照商户之前配置的分账比例进行分账的操作,这个操作的时机需要根据商户的业务来确定。这里需要说明的是,所有商户的分账比例之和不能大于 100%。

这里只是展示了订单和交易的内容,一笔交易订单会对应一笔交易支付记录,每条交易支付记录会对应多条交易分账明细。

4 分账实践

绑定分账关系,每次请求需要设置请求单号,绑定关系实体需要设置支付宝用户的姓名和支付宝用户的Id,关系类型是 userId, 还要设置绑定关系的描述信息。如果绑定关系设置成功,需要将分账绑定关系保存到数据库中,用户分账时进行查询分账规则。

解绑分账关系,和分账绑定关系请求参数类似,需要将解绑的关系同步到数据库中,这里在绑定关系表中设置状态参数,用于标识绑定关系的禁用和启用。

分账绑定关系查询列表,这里采用的是分页查询,每次需要设置查询的请求号,返回的结果是已经绑定的分账关系。

下图是分账交易的参数,需要传入的是交易单号和分账请求号,分账业务参数需要从分账关系中获取,设置分账入账账号信息,以及分账金额。当分账请求成功后需要记录分账结果的分账单号以及分账结果。

对于分账结果,需要根据分账单号进行查询,所以在实际分账时需要根据单号进行查询,看是否已经存在或者处理成功,这样可以保证接口的幂等性。

5 总结

在本文中主要介绍了支付宝分账的业务内容,以及对应的代码实践,分账是一个交易完成后的业务,需要按照分账绑定关系和商户信息进行综合计算分账金额,整个过程涉及用户金额,需要严格设计,保证接口的幂等性。本文中所涉及的代码均已上传至 git 仓库,欢迎大家 stars, 项目 github 地址 springboot-auth

相关推荐
行百里er9 小时前
Spring Insight 里上报 Span 为什么用 JDK HttpClient 而不是 RestTemplate
spring boot·spring cloud·监控
Bs_MoneyMagnet9 小时前
基于springboot+vue的家居生活商城平台的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
微三云 - 廖会灵 (私域系统开发)9 小时前
Spring Boot实战:五级分销定价与自动分佣系统设计与实现
java·spring boot·后端
风中的小熊生气10 小时前
Spring Boot 面试知识(一):从启动流程到 AOP 与事务失效
spring boot·后端·面试
Bs_MoneyMagnet10 小时前
基于springboot+vue的医院陪诊服务预约平台的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
Zzzzmo_11 小时前
SpringBoot 配置文件
java·spring boot
鹅城剑仙11 小时前
Spring Boot 3 全局异常处理与统一响应封装进阶实战
java·spring boot·后端
谢亮_vipxieliang11 小时前
ValidX与Maven/Gradle集成配置指南
java·spring boot·spring·maven·hibernate
两点王爷21 小时前
SpringBoot 项目集成 GeoServer 源码,实现地图服务发布
java·spring boot·后端
leoZ2311 天前
2026-09-09-springboot-cloud-deploy-pitfalls
java·前端·javascript·vue.js·人工智能·spring boot·后端