开发关键概念
更新时间:2024.11.19商家转账到零钱支持在单个请求中向一个或者多个用户的微信零钱转账。在开始使用商家转账到零钱之前,请务必仔细阅读本文档以确保对相关概念和运作机制有充分理解。
# 概念
- 批次,指商家一次转账到零钱的批量转账行为。
- 批次单,是记录批次细节的数据结构,包括批次的商家批次单号、微信批次单号、批次状态、转账总笔数、总金额等。
- 明细,指批次中包含的一笔单独转账。
- 明细单,是记录明细的数据结构,包括明细的商家明细单号、微信明细单号、明细状态、附言、转账用户 OpenID、转账金额等。
- 转账电子回单,是商户使用转账到零钱转账给用户之后得到的转账凭证电子回单。
# 运作机制
通过 API 发起批量转账 时,如果某条明细的转账金额超过免密额度,需要商户管理员在商家助手小程序确认转账并验证操作密码。
为了避免客户端在确认转账过程中长时间等待,商家转账到零钱的 API 采用了异步受理模式。在此模式下,API 首先检查请求是否符合业务规则,并返回批次的受理结果。实际转账操作将在成功受理之后执行。
受理商家转账请求后,微信支付会持续尝试锁定商户资金。如果超过24小时仍余额不足或因其他原因导致无法转账,批次单将会被关闭。
为了跟踪批次的处理进度,商户系统需要调用 查询转账批次单 接口。当查询到批次处理完成后,商户还需要通过 查询明细单 检查每笔明细的处理结果,以确认每笔用户转账是否成功。
值得注意的是,向多个用户微信零钱转账并非原子操作。这意味着,批次中的多笔明细可能会有不同的处理结果,可能部分成功,甚至全部失败。因此,在批量转账完成后,商户需要关注每笔明细的实际处理结果。
# 业务流程
简单地说,商家转账到零钱的基础流程包括以下几个步骤:
- 商户服务端调用微信支付的商家转账到零钱 API,发起批量转账请求。请求中包含了转账的总金额、笔数、每笔明细信息等。
- 微信支付收到请求后,先锁定商户资金,然后按照明细信息逐笔转账,直至所有明细处理完毕。
- 如果单笔明细的转账金额超过免密额度,微信支付会向转账验密人(如果未设置,默认为商户的超级管理员)发送确认请求。转账验密人需要在微信商家助手小程序中确认该笔转账。确认后微信支付才会继续处理该笔转账。
- 商户服务端调用微信支付的查询批次单 API,确认本次批次转账是否全部处理完成。如果明细全部处理完成, API 返回
已完成
的批次状态。如果某笔明细转账未完成,API 会返回转账中
的批次状态。 - 商户服务端调用微信支付的查询明细单 API,查询每笔明细转账的状态,并对用户展示转账结果,或者执行其他后续操作。
# 批次状态
批次有五种状态,包括待商户确认
、已受理
、转账中
、已完成
、已关闭
。
商户可以通过 商户平台-商家转账记录 (opens new window),或通过 查询转账批次单 获取批次状态。
状态 | 状态名 | 描述 | 商户可能的操作 |
---|---|---|---|
WAIT_PAY | 待商户确认 | 仅通过页面发起转账时出现,页面提交转账信息后需输入密码确认转账 | 商户管理员确认转账,或撤销付款 |
ACCEPTED | 已受理 | 当前批次满足业务规则,批次已受理 | 确保账户余额大于等于批次转账总金额 |
PROCESSING | 转账中 | 当前批次锁定商户资金成功,微信支付处理每条明细转账中 | 查询批次单,确认批次的所有明细是否全部处理完成 |
FINISHED | 已完成 | 当前批次的所有明细已全部处理完成 | 逐笔查询明细单,确认给用户转账是否成功 |
CLOSED | 已关闭 | 等待商户管理员确认付款超过时间限制,或锁订商户资金失败 | 无 |
# 明细状态
明细有五种状态,包括初始状态
、待商户确认
、转账中
、转账成功
和转账失败
。
商户可以通过 商户平台-商家转账记录 (opens new window) 的批次明细,或通过 查询转账批次单 获取明细状态。
状态 | 状态名 | 描述 | 商户可能的操作 |
---|---|---|---|
INIT | 初始状态 | 明细的初始状态 | 无 |
WAIT_PAY | 待商户确认 | 当前明细等待商户管理员确认付款 | 商户管理员确认转账,或撤销转账 |
PROCESSING | 转账中 | 当前明细正在处理中,转账结果尚未明确 | 查询明细单,确认明细处理结果 |
SUCCESS | 转账成功 | 当前明细转账已成功 | 向用户展现转账结果 |
FAIL | 转账失败 | 当前明细转账已失败 | 确认失败原因,并决定是否重新发起当前明细转账(并非整个转账批次) |
# 进一步阅读
文档是否有帮助