商家轉(zhuǎn)賬到零錢支持在單個(gè)請求中向一個(gè)或者多個(gè)用戶的微信零錢轉(zhuǎn)賬。在開始使用商家轉(zhuǎn)賬到零錢之前,請務(wù)必仔細(xì)閱讀本文檔以確保對相關(guān)概念和運(yùn)作機(jī)制有充分理解。
# 概念
- 批次,指商家一次轉(zhuǎn)賬到零錢的批量轉(zhuǎn)賬行為。
- 批次單,是記錄批次細(xì)節(jié)的數(shù)據(jù)結(jié)構(gòu),包括批次的商家批次單號、微信批次單號、批次狀態(tài)、轉(zhuǎn)賬總筆數(shù)、總金額等。
- 明細(xì),指批次中包含的一筆單獨(dú)轉(zhuǎn)賬。
- 明細(xì)單,是記錄明細(xì)的數(shù)據(jù)結(jié)構(gòu),包括明細(xì)的商家明細(xì)單號、微信明細(xì)單號、明細(xì)狀態(tài)、附言、轉(zhuǎn)賬用戶 OpenID、轉(zhuǎn)賬金額等。
- 轉(zhuǎn)賬電子回單,是商戶使用轉(zhuǎn)賬到零錢轉(zhuǎn)賬給用戶之后得到的轉(zhuǎn)賬憑證電子回單。
# 運(yùn)作機(jī)制
通過 API 發(fā)起批量轉(zhuǎn)賬 時(shí),如果某條明細(xì)的轉(zhuǎn)賬金額超過免密額度,需要商戶管理員在商家助手小程序確認(rèn)轉(zhuǎn)賬并驗(yàn)證操作密碼。
為了避免客戶端在確認(rèn)轉(zhuǎn)賬過程中長時(shí)間等待,商家轉(zhuǎn)賬到零錢的 API 采用了異步受理模式。在此模式下,API 首先檢查請求是否符合業(yè)務(wù)規(guī)則,并返回批次的受理結(jié)果。實(shí)際轉(zhuǎn)賬操作將在成功受理之后執(zhí)行。
受理商家轉(zhuǎn)賬請求后,微信支付會持續(xù)嘗試鎖定商戶資金。如果超過24小時(shí)仍余額不足或因其他原因?qū)е聼o法轉(zhuǎn)賬,批次單將會被關(guān)閉。
為了跟蹤批次的處理進(jìn)度,商戶系統(tǒng)需要調(diào)用 查詢轉(zhuǎn)賬批次單 接口。當(dāng)查詢到批次處理完成后,商戶還需要通過 查詢明細(xì)單 檢查每筆明細(xì)的處理結(jié)果,以確認(rèn)每筆用戶轉(zhuǎn)賬是否成功。
值得注意的是,向多個(gè)用戶微信零錢轉(zhuǎn)賬并非原子操作。這意味著,批次中的多筆明細(xì)可能會有不同的處理結(jié)果,可能部分成功,甚至全部失敗。因此,在批量轉(zhuǎn)賬完成后,商戶需要關(guān)注每筆明細(xì)的實(shí)際處理結(jié)果。
# 業(yè)務(wù)流程
簡單地說,商家轉(zhuǎn)賬到零錢的基礎(chǔ)流程包括以下幾個(gè)步驟:
- 商戶服務(wù)端調(diào)用微信支付的商家轉(zhuǎn)賬到零錢 API,發(fā)起批量轉(zhuǎn)賬請求。請求中包含了轉(zhuǎn)賬的總金額、筆數(shù)、每筆明細(xì)信息等。
- 微信支付收到請求后,先鎖定商戶資金,然后按照明細(xì)信息逐筆轉(zhuǎn)賬,直至所有明細(xì)處理完畢。
- 如果單筆明細(xì)的轉(zhuǎn)賬金額超過免密額度,微信支付會向轉(zhuǎn)賬驗(yàn)密人(如果未設(shè)置,默認(rèn)為商戶的超級管理員)發(fā)送確認(rèn)請求。轉(zhuǎn)賬驗(yàn)密人需要在微信商家助手小程序中確認(rèn)該筆轉(zhuǎn)賬。確認(rèn)后微信支付才會繼續(xù)處理該筆轉(zhuǎn)賬。
- 商戶服務(wù)端調(diào)用微信支付的查詢批次單 API,確認(rèn)本次批次轉(zhuǎn)賬是否全部處理完成。如果明細(xì)全部處理完成, API 返回
已完成
的批次狀態(tài)。如果某筆明細(xì)轉(zhuǎn)賬未完成,API 會返回轉(zhuǎn)賬中
的批次狀態(tài)。 - 商戶服務(wù)端調(diào)用微信支付的查詢明細(xì)單 API,查詢每筆明細(xì)轉(zhuǎn)賬的狀態(tài),并對用戶展示轉(zhuǎn)賬結(jié)果,或者執(zhí)行其他后續(xù)操作。
# 批次狀態(tài)
批次有五種狀態(tài),包括待商戶確認(rèn)
、已受理
、轉(zhuǎn)賬中
、已完成
、已關(guān)閉
。
商戶可以通過 商戶平臺-商家轉(zhuǎn)賬記錄 (opens new window),或通過 查詢轉(zhuǎn)賬批次單 獲取批次狀態(tài)。
狀態(tài) | 狀態(tài)名 | 描述 | 商戶可能的操作 |
---|---|---|---|
WAIT_PAY | 待商戶確認(rèn) | 僅通過頁面發(fā)起轉(zhuǎn)賬時(shí)出現(xiàn),頁面提交轉(zhuǎn)賬信息后需輸入密碼確認(rèn)轉(zhuǎn)賬 | 商戶管理員確認(rèn)轉(zhuǎn)賬,或撤銷付款 |
ACCEPTED | 已受理 | 當(dāng)前批次滿足業(yè)務(wù)規(guī)則,批次已受理 | 確保賬戶余額大于等于批次轉(zhuǎn)賬總金額 |
PROCESSING | 轉(zhuǎn)賬中 | 當(dāng)前批次鎖定商戶資金成功,微信支付處理每條明細(xì)轉(zhuǎn)賬中 | 查詢批次單,確認(rèn)批次的所有明細(xì)是否全部處理完成 |
FINISHED | 已完成 | 當(dāng)前批次的所有明細(xì)已全部處理完成 | 逐筆查詢明細(xì)單,確認(rèn)給用戶轉(zhuǎn)賬是否成功 |
CLOSED | 已關(guān)閉 | 等待商戶管理員確認(rèn)付款超過時(shí)間限制,或鎖訂商戶資金失敗 | 無 |
# 明細(xì)狀態(tài)
明細(xì)有五種狀態(tài),包括初始狀態(tài)
、待商戶確認(rèn)
、轉(zhuǎn)賬中
、轉(zhuǎn)賬成功
和轉(zhuǎn)賬失敗
。
商戶可以通過 商戶平臺-商家轉(zhuǎn)賬記錄 (opens new window) 的批次明細(xì),或通過 查詢轉(zhuǎn)賬批次單 獲取明細(xì)狀態(tài)。
狀態(tài) | 狀態(tài)名 | 描述 | 商戶可能的操作 |
---|---|---|---|
INIT | 初始狀態(tài) | 明細(xì)的初始狀態(tài) | 無 |
WAIT_PAY | 待商戶確認(rèn) | 當(dāng)前明細(xì)等待商戶管理員確認(rèn)付款 | 商戶管理員確認(rèn)轉(zhuǎn)賬,或撤銷轉(zhuǎn)賬 |
PROCESSING | 轉(zhuǎn)賬中 | 當(dāng)前明細(xì)正在處理中,轉(zhuǎn)賬結(jié)果尚未明確 | 查詢明細(xì)單,確認(rèn)明細(xì)處理結(jié)果 |
SUCCESS | 轉(zhuǎn)賬成功 | 當(dāng)前明細(xì)轉(zhuǎn)賬已成功 | 向用戶展現(xiàn)轉(zhuǎn)賬結(jié)果 |
FAIL | 轉(zhuǎn)賬失敗 | 當(dāng)前明細(xì)轉(zhuǎn)賬已失敗 | 確認(rèn)失敗原因,并決定是否重新發(fā)起當(dāng)前明細(xì)轉(zhuǎn)賬(并非整個(gè)轉(zhuǎn)賬批次) |