?一. 項(xiàng)目背景
代付系統(tǒng)即出款系統(tǒng),完成公司對(duì)外的資金支付行為,是基礎(chǔ)原子性服務(wù)。
1.主要功能
(1) 受理代付請(qǐng)求
(2) 生成代付批次,完成代付通道出款
(3) 接收通道方代付結(jié)果?
(4) 異步通知業(yè)務(wù)方代付結(jié)果
(5) 查詢(xún)代付流水
(6)?代付異常處理
(7) 對(duì)賬與調(diào)賬
對(duì)賬:與通道方的流水勾兌
調(diào)賬:通常為銀行退單,銀行在日結(jié)賬務(wù)核對(duì)后的差錯(cuò)退款。
2. 主要運(yùn)用場(chǎng)景包括
(1)對(duì)私代付:代發(fā)工資、用戶(hù)提現(xiàn)等;
(2)對(duì)公代付:支付代理商分潤(rùn)款項(xiàng)等。
下圖為系統(tǒng)架構(gòu)圖(紅配綠,畫(huà)的有點(diǎn)丑,見(jiàn)諒),招行銀企直連是代付通道之一。

二. 招行銀企直連對(duì)接
1. 基本介紹
官網(wǎng)文檔:https://u.ebank.cmbchina.com/CmbBank_GenShell/UI/Help/DCBank2/Main.aspx
接口文檔:https://u.ebank.cmbchina.com/CmbBank_GenShell/UI/Help/DCBank2/API.aspx
示例代碼:https://u.ebank.cmbchina.com/CmbBank_GenShell/UI/Help/DCBank2/DownLoad.aspx?Code
2. 對(duì)接過(guò)程
(1) 搭建前置機(jī)
官方教程:https://u.ebank.cmbchina.com/CmbBank_GenShell/UI/Help/DCBank2/Guide.aspx?Solution
注意事項(xiàng):
a.前置機(jī)必須是windows 系統(tǒng),建議使用Intel i5 CPU或更高性能處理器,4G及以上內(nèi)存,50G以上的空閑硬盤(pán)空間。
b. 由于測(cè)試服務(wù)器需要配置招行測(cè)試環(huán)境的host,生產(chǎn)服務(wù)器和測(cè)試服務(wù)器不能是同一臺(tái)服務(wù)器。
c. 生產(chǎn)服務(wù)器必須是實(shí)體機(jī),需要插招行的銀企直連U-key, 并且生產(chǎn)服務(wù)器必須要有公網(wǎng)地址。
(2) 接口對(duì)接
功能與招行的接口映射關(guān)系如下:
a. 對(duì)公代付? ---->? ?3.6 直接支付
b. 對(duì)公代付結(jié)果查詢(xún)接口? ? ---->? 3.9 批量查詢(xún)支付信息
c. 對(duì)私代付? ----->??21.2.1.網(wǎng)銀貸記
d. 對(duì)私代付結(jié)果查詢(xún)接口? ?----->?21.1.4.取企業(yè)銀行處理結(jié)果
e. 退單接口? ----->? ?1.4.取新的通知
由于都是一些細(xì)節(jié)問(wèn)題,所以以QA的方式列出來(lái)常見(jiàn)問(wèn)題,信息都來(lái)自于招行技術(shù):
Q:招行企業(yè)直連通道支持全部銀行嗎,包括各種地方農(nóng)商行?
A:直接支付(走人行大小額系統(tǒng))支持全部銀行,網(wǎng)銀貸記接口(走人行超級(jí)網(wǎng)銀系統(tǒng))僅支持部分銀行。
Q:接口的報(bào)文編碼格式是什么?
A:全部接口默認(rèn)報(bào)文編碼格式均為GBK
Q: 招行接口的金額單位是什么?
A:元
Q:招行企業(yè)直連通道能實(shí)時(shí)返回代付結(jié)果嗎?
A:可以實(shí)時(shí)返回代付受理結(jié)果,但最終代付結(jié)果還是異步的,超級(jí)網(wǎng)銀通常5分鐘可返回結(jié)果,大額對(duì)公通常2個(gè)小時(shí)返回結(jié)果,小額對(duì)公通常1個(gè)小時(shí)返回結(jié)果(實(shí)際對(duì)公代付不需要這么久,平均20分鐘左右)。
Q:招行直接支付接口和網(wǎng)銀貸記的單批次筆數(shù)限制?
A:直接支付接口單批次筆數(shù)限制為1500筆,網(wǎng)銀貸記為單批次最多30筆,另外直接支付查詢(xún)結(jié)果接口筆數(shù)限制為30筆,網(wǎng)銀貸記結(jié)果查詢(xún)接口限制為1筆。
Q:可以設(shè)置單筆限額嗎?
A:可以在招行網(wǎng)銀中設(shè)置
Q:怎么獲取退單消息?
A:退單消息一般2個(gè)工作日內(nèi)返回,會(huì)主動(dòng)通過(guò)1.4 接口通知,可以定義定時(shí)任務(wù)輪循該接口,每個(gè)通知只會(huì)通知一次。(注: 所有的代付結(jié)果都優(yōu)先查詢(xún)接口為準(zhǔn),通知接口次之)
Q: 怎么區(qū)分直接支付的大額和小額?
A:?STLCHN參數(shù)區(qū)分,普通是小額,快速是大額
Q:招行接口調(diào)用頻率限制和并發(fā)性能?
A:具體參考https://u.ebank.cmbchina.com/CmbBank_GenShell/UI/Help/DCBank2/Guide.aspx?FrontEnd#t5說(shuō)明
調(diào)用頻率控制按接口種類(lèi)區(qū)別控制:
經(jīng)辦類(lèi)請(qǐng)求:兩次經(jīng)辦類(lèi)請(qǐng)求最小調(diào)用間隔為1秒;
查詢(xún)類(lèi)請(qǐng)求:兩次查詢(xún)類(lèi)請(qǐng)求最小調(diào)用間隔為2秒;(這一點(diǎn)有點(diǎn)坑,大數(shù)據(jù)量的代付批次查詢(xún)很慢,暫時(shí)沒(méi)有想到什么優(yōu)化方法)
通知類(lèi)請(qǐng)求:兩次通知類(lèi)請(qǐng)求最小調(diào)用間隔為5秒。
Q: 直接支付的必填開(kāi)戶(hù)行地區(qū)需要精確到哪一層級(jí)
A: 開(kāi)戶(hù)行地區(qū)最好精確到 省-市-區(qū)/縣,如果只有省或省-市也是OK的,具體看收款銀行的限制。
Q: 招行測(cè)試環(huán)境是否可以mock代付
A:支持的,可以復(fù)現(xiàn)各種異常情況,基本與生產(chǎn)環(huán)境無(wú)差異
Q: 網(wǎng)銀貸記的接口文檔與實(shí)際返回結(jié)果不一致呢?
A:目前招行官網(wǎng)接口文檔存在較大錯(cuò)誤,與實(shí)際返回結(jié)果不一致,我們已經(jīng)與招行技術(shù)反饋過(guò),目前還沒(méi)有修復(fù)(2019-02-01),可以暫時(shí)參照如下參數(shù)。

Q:怎么獲取網(wǎng)銀貸記的協(xié)議號(hào)
A: 網(wǎng)銀貸記的信息可以通過(guò)?21.1.3.業(yè)務(wù)交易明細(xì)查詢(xún)?接口查詢(xún),包括協(xié)議號(hào)。
暫時(shí)只回憶起這些問(wèn)題,如果還有其他疑問(wèn)可留言,將及時(shí)更新。
(3) 測(cè)試環(huán)境部署
必備條件:
a. 招行提供的測(cè)試環(huán)境賬戶(hù),賬戶(hù)需要開(kāi)通直接支付和網(wǎng)銀貸記權(quán)限
b. 招行銀企直連的測(cè)試服務(wù)器有時(shí)間問(wèn)題,導(dǎo)致代付成功的訂單查詢(xún)不到代付結(jié)果,招行有提供一個(gè)修改前置機(jī)時(shí)間的工具,可聯(lián)系招行技術(shù)提供。

(4) 生產(chǎn)環(huán)境發(fā)布
注意要點(diǎn):
a. 招行有一種退單是查詢(xún)交易顯示成功,但是網(wǎng)銀里顯示已退款。經(jīng)排查,具體原因如下:
代付請(qǐng)求流程是這樣的: 出款方-> 招行->人行-> 收款行
退單有3種情況:
(1) 招行校驗(yàn)信息失?。撼隹罘?> 招行(招行拒絕代付請(qǐng)求),代付訂單顯示失敗
(2) 收款行校驗(yàn)信息失?。?出款方-> 招行->人行-> 收款行(收款行拒絕代付請(qǐng)求),代付訂單顯示失敗
(3) 收款行校驗(yàn)行內(nèi)轉(zhuǎn)賬失?。撼隹罘?> 招行->人行-> 收款行(收款行接收代付請(qǐng)求),? 收款行(行內(nèi)轉(zhuǎn)賬失敗,發(fā)起反向原路退款)->人行->招行->出款方? ,代付訂單顯示成功
出現(xiàn)上述情況就是命中了第3種退單,這種退單的補(bǔ)單方式可以讓業(yè)務(wù)方完善銀行信息后重新發(fā)起一筆代付。