銀企支付-詳細設計文件
目錄
- 銀企支付-詳細設計文件
- 1、定義說明
- 2、借款單
- 3、報銷單
- 4、銀企互聯
- 5、執行流程日誌
- 6、監控
- 7、差錯處理
- 8、資料庫設計
銀企支付-詳細設計文件
本文介紹企業在借款單,報銷單走銀企支付流程時的詳細設計。本文重點介紹整個流程需要關注的細節點,在最終實現時,對於資料表具體欄位,不做介紹。
1、定義說明
- 報銷金額:申請報銷人,填寫的當次需要報銷的總金額。
- 借款金額:申請借款人,填寫的當次需要借款的金額。
- 核銷金額:指在報銷時,本身又存在借款金額未還時,報銷中,自動還款的金額,稱為核銷金額。如:借款1000元未還,報銷3000元,若本次要抵消借款的1000元,則核銷金額為1000元。核銷金額小於等於還款金額。
- 實際報銷交易金額:指報銷時,報銷金額減去核銷金額後的餘額。如:核銷1000元,報銷3000元,實際報銷交易金額為2000元。
2、借款單
2.1、借款單流程
- 借款單走銀企支付:通過銀行,公司賬戶把借款金額轉賬給申請借款人賬戶。
- 借款單走內部轉賬:內部轉賬,變動相關賬戶虛擬金額。
校驗
專案 | 校驗規則 | 備註 |
---|---|---|
支付方式驗證 | 支付方式支援系統轉賬,浦發銀行銀企支付 | 無 |
支付方銀行卡號驗證 | 當支付型別為銀企模式時,支付的銀行卡號必須存在,接收方的銀行卡號必須存在 | 無 |
單據編碼驗證 | 請求交易的單據編碼資料合規性驗證 | 如編碼可信性,準確性,是否已經在處理過程中 |
幣別驗證 | 系統支援的交易幣別型別驗證 | 無 |
支付方式限定 | 不同幣別僅支援系統轉賬 | 無 |
支付方式限定 | 銀企支付僅支援幣別人民幣 | 無 |
匯率正確性 | 幣別轉賬時,匯率值合規性驗證 | 針對工作人員填寫的匯率,做合規性驗證 |
使用者資訊驗證 | 檢視系統中是否存在申請人員的資訊 | 無 |
申請人賬號驗證 | 檢視系統中申請人銀行賬戶資訊是否正確 | 無 |
風控
專案 | 規則 | 備註 |
---|---|---|
額度 | 單筆借款額度在xx萬以內 | 無 |
及時還款情況 | 若存在xx筆以上借款未還款,不可在借款 | 無 |
路由
專案 | 規則 | 備註 |
---|---|---|
銀企支付 | 呼叫銀行介面,由公司銀行賬戶,轉賬給借款申請人的個人銀行賬號。系統層面記錄個人,公司虛擬賬戶金額變動情況。 | 無 |
系統轉賬 | 財務通過其他途徑轉賬給申請人,系統層面記錄個人,公司虛擬賬戶金額變動情況。 | 無 |
銀企支付
轉賬金額:申請人申請的借款金額。
呼叫銀行對外封裝的介面,做轉賬業務。不同銀行的邏輯不同,本文以浦發銀行為例。詳情參考銀企支付設計模組。
業務處理
當銀行處理借款業務成功後,或使用者直接選擇系統內轉賬時,呼叫業務處理模組。整個業務處理模組採用事務模式,保證賬戶變化,流水記錄等相關資料操作必須滿足一致性的需求。
專案 | 規則 | 備註 |
---|---|---|
轉入流水金額 | 申請人借款成功,寫入的一條借款者入賬流水到流水錶。 | 流水金額為借款金額 |
轉出流水金額 | 支付借款金額的賬戶,寫入一條轉出流水到流水錶。 | 流水金額為借款金額 |
手續費 | 目前不存在交易手續費 | 無 |
轉賬日誌 | 記錄轉賬相關的明細資訊。 | 無 |
終態確定 | 最終完善該條借款單據的處理結果。 | 是否借款成功 |
執行流程日誌
流程日誌記錄單據從開始執行支付業務時,在不同節點的處理過程日誌。詳情檢視流程日誌設計模組。
2.2、資料流向說明
3、報銷單
3.1、報銷單流程
- 報銷單走銀企支付:通過銀行,公司賬戶把實際報銷金額轉賬給申請借款人賬戶。
- 報銷單走內部轉賬:內部轉賬,變動相關賬戶虛擬金額。
- 報銷單可關聯相關賬戶的借款資訊,自動核銷借款記錄。
報銷業務分為三種情況:
- 核銷金額為零(不選擇抵消借款,或無需要核銷的借款記錄)
- 核銷金額小於報銷金額
- 核銷金額等於報銷金額。
校驗
專案 | 校驗規則 | 備註 |
---|---|---|
支付方式驗證 | 支付方式支援系統轉賬,浦發銀行銀企支付 | 無 |
單據編碼驗證 | 請求交易的單據編碼資料合規性驗證 | 如編碼可信性,準確性,是否已經在處理過程中 |
幣別驗證 | 系統支援的交易幣別型別驗證 | 無 |
支付方銀行卡號驗證 | 當支付型別為銀企模式時,支付的銀行卡號必須存在,接收方的銀行卡號必須存在 | 無 |
支付方式限定 | 不同幣別僅支援系統轉賬 | 無 |
支付方式限定 | 銀企支付僅支援幣別人民幣 | 無 |
匯率正確性 | 幣別轉賬時,匯率值合規性驗證 | 針對工作人員填寫的匯率,做合規性驗證 |
使用者資訊驗證 | 檢視系統中是否存在申請人員的資訊 | 無 |
申請人賬號驗證 | 檢視系統中申請人銀行賬戶資訊是否正確 | 無 |
支付方式驗證 | 報銷實際交易金額小於等於零時,不可選擇銀企支付 | 無 |
報銷實際交易金額 | 報銷實際交易金額必須大於等於零 | 無 |
核銷金額驗證 | 該筆報銷單關聯的所有借款單,檢視借款單中待核銷的金額,是否大於等於待核銷的金額值 | 無 |
核銷總金額驗證 | 該筆報銷單關聯的所有借款單核銷記錄表明細,核銷金額和必須等於核銷總金額 | 無 |
風控
專案 | 規則 | 備註 |
---|---|---|
額度 | 單筆報銷額度在xx萬以內。 | 無 |
最大關聯借款單數 | 本次報銷最多關聯xx筆借款單。 | 無 |
路由
專案 | 規則 | 備註 |
---|---|---|
銀企支付 | 呼叫銀行介面,由公司銀行賬戶,轉賬給申請報銷人的銀行賬號。系統層面記錄個人,公司虛擬賬戶金額變動情況。 | 無 |
系統轉賬 | 財務通過其他途徑轉賬給申請人,系統層面記錄個人,公司虛擬賬戶金額變動情況。 | 無 |
銀企支付
轉賬金額:為報銷實際交易金額。
呼叫銀行對外封裝的介面,做轉賬業務。不同銀行的邏輯不同,本文以浦發銀行為例。詳情參考銀企支付設計模組。
業務處理
當銀行處理借款業務成功後,或使用者直接選擇系統內轉賬時,呼叫業務處理模組。整個業務處理模組採用事務模式,保證賬戶變化,流水記錄等相關資料操作必須滿足一致性的需求。
報銷實際交易金額大於零
專案 | 規則 | 備註 |
---|---|---|
轉入流水金額 | 報銷方報銷成功,寫入的一條個人入賬流水到流水錶。 | 流水金額為報銷實際交易金額 |
轉出核銷流水金額 | 報銷方核銷成功,寫入的一條個人核銷出賬流水到流水錶。 | 流水金額為核銷金額 |
轉出流水金額 | 被報銷方處理報銷金額,寫入一條轉出流水到流水錶。 | 流水金額為報銷實際交易金額 |
手續費 | 目前不存在交易手續費 | 無 |
轉賬日誌 | 記錄轉賬相關的明細資訊。 | 無 |
核銷日誌 | 記錄核銷相關的明細資訊。 | 核銷金額大於零才有核銷日誌 |
終態確定 | 最終完善該條報銷單據的處理結果。 | 是否核銷成功 |
實際報銷交易金額等於零
實際報銷交易金額等於零,可套用大於零的流程。當實際交易金額為零,不用寫報銷方和被報銷方的轉入轉出流水。報銷方寫核銷的轉出流水。
核銷金額等於零
核銷金額等於零,可套用大於零的流程。當核銷金額為零,寫報銷方和被報銷方的轉入轉出流水。報銷方不寫核銷的轉出流水。核銷金額為零,不用關聯借款單,不存在核銷日誌和借款單狀態變更。
執行流程日誌
流程日誌記錄單據從開始執行支付業務時,在不同節點的處理過程日誌。詳情檢視流程日誌設計模組。
3.2、資料流向說明
4、銀企互聯
4.1、呼叫流程
本文以浦發銀行做銀企互聯介紹,銀企互聯,封裝銀行提供的交易介面,在進行交易操作時,記錄互動過程的明細資訊。提交的交易請求後,銀行的處理結果包括如下三類:
- 拒絕交易:銀行櫃員或系統,拒絕或撤銷支付請求。該筆交易設定為失敗。
- 交易成功:發起請求的交易操作成功。
- 交易處理過程中:發起的交易請求,銀行還在流程處理中,屬於中間狀態。
銀企互聯發起交易請求步驟:組織支付閘道器,呼叫單筆交易請求介面8801,接收反饋結果。
- 若反饋結果成功或處理中,呼叫8804查詢介面。
- 若反饋失敗,則先停止業務處理。
- 由於銀行一般不會馬上反饋支付成功的結果,一般執行都需要一個時間段,便於銀行內部中轉,對於這種中轉結果,等待銀行處理,定時呼叫8804介面去請求銀行,檢視發起的支付請求是否處理完成了。接收8804介面反饋的結果,在處理業務。
4.2、資料流向說明
5、執行流程日誌
5.1、流程日誌說明
執行流程主要記錄單據在支付過程中,關鍵節點的執行明細資訊。流程日誌至記錄執行到當前節點時的執行結果,備註資訊,請求關鍵引數。當前節點真正的明細資訊,在相關業務表中查詢,不記錄在日誌中。
業務處理要求統一在一個事務中,執行流程日誌不放在事務中。及業務處理和日誌記錄時,執行流程日誌記錄在快取中,最終把快取的資料同步到資料庫中。
專案 | 規則 |
---|---|
業務受理驗證日誌 | 當驗證都通過時,記錄驗證結果為通過,並記錄請求驗證的引數。當驗證結果失敗時,記錄驗證失敗原因和驗證請求引數。 |
業務風控驗證 | 當驗證成功時,記錄驗證結果和請求驗證的引數。驗證失敗時,記錄驗證失敗原因和驗證的請求引數。 |
請求原始日誌 | 記錄原始請求日誌是否儲存成功。 |
呼叫銀行請求報文 | 記錄在呼叫8801時的請求時間,請求引數。 |
銀行反饋-接收8801反饋資訊 | 記錄接收反饋資訊時,銀行返回的資訊(成功,銀行處理中,失敗)。 |
銀行反饋-接收8804反饋資訊 | 記錄接收到8804介面反饋時,銀行返回的資訊(成功,銀行處理中,失敗)。 |
業務請求處理日誌 | 記錄銀企通過,或轉賬時,發起的業務處理相關的日誌資訊,包括髮起請求引數記錄。 |
流水變動日誌 | 記錄流水變動發生的時間,及變動的請求引數,變動處理結果。 |
核銷流程日誌 | 記錄核銷發生的時間,核銷請求的相關引數,核銷處理結果。 |
單據完成狀態 | 記錄單據最終的處理結果。 |
6、監控
通過執行過程日誌,檢視支付流程在各個節點的明細資訊,便於監控支付在各個節點的流轉狀態。
節點 | 說明 | 相關資料表 | 備註 |
---|---|---|---|
支付校驗 | 記錄支付校驗結果,失敗時,記錄失敗原因 | 流程日誌表pay_life_log |
無 |
風控校驗 | 記錄風控校驗結果,失敗時,記錄失敗原因 | 流程日誌表pay_life_log |
無 |
支付請求 | 記錄支付原始資訊,明細需非同步檢視支付的日誌資訊 | 流程日誌表pay_life_log 支付請求表 bill_pay_request |
後續支付,業務處理基於支付原始資訊做處理 |
銀行報文 | 記錄支付請求資訊,明細需非同步檢視支付的報文 | 流程日誌表pay_life_log 銀企支付入參表 bank_req_source |
銀企支付模式時,才有 |
銀行支付結果 | 記錄支付請求後,銀行返回的處理資訊,明細日誌非同步查詢 | 流程日誌表pay_life_log 銀企介面反饋資訊表 bank_res_parsing_source |
銀企支付模式時,才有 |
核銷日誌結果 | 記錄報銷單,核銷業務處理後的日誌資訊,明細日誌非同步查詢 | 流程日誌表pay_life_log 核銷日誌表 writed_off_log 借款單資料表 borrowing_bill |
報銷單核銷金額大於零時,才有 |
交易流水結果 | 記錄轉賬/銀企處理後,業務處理板塊流變更的日誌。明細日誌非同步查詢 | 流程日誌表pay_life_log 交易流水日誌表 caiwu_transfer |
無 |
支付結果 | 記錄單據發起支付後,最終的支付處理結果 | 流程日誌表pay_life_log |
無 |
7、差錯處理
通過監控單據的明細資訊,可定位單據在不同節點的情況。在單據支付失敗時,提供差錯處理功能,便於工作人員通過操作介面,手動處理單據。差錯處理包括如下模式:
節點 | 前置條件 | 後置行為 | 描述 | 備註 |
---|---|---|---|---|
重新校驗 | 支付校驗失敗 風控校驗失敗 |
繼續走校驗後的所有流程 | 若校驗不通過,修復資料後,可發起重新校驗的操作 | 無 |
發起銀行支付 | 支付請求表bill_pay_request 記錄的銀行處理結果為失敗時銀企解析資訊表 bank_res_pay 也為失敗時,才可重新發起銀行支付請求 |
繼續走請求支付後的所有流程 | 為單據重新生成一個銀行請求報文編碼,更新支付請求表bill_pay_request 中的銀企包(packet_id)欄位 |
避免同一個單據,多次向銀行發起交易請求 |
發起銀行查詢 | 支付請求表bill_pay_request 記錄的銀行處理結果為處理中 |
繼續走銀行反饋資訊後的流程 | 呼叫銀行8804查詢介面,查詢銀行處理資訊 | 無 |
發起業務處理 | 支付模式為轉賬 支付模式為銀企時,銀企支付處理成功後 |
繼續走業務處理流程 | 初次業務處理失敗時,再次呼叫業務處理板塊重新處理 | 業務處理流程保證在一個事務下 |
更新支付模式-銀企支付更新為轉賬模式 | 支付請求表bill_pay_request 記錄的銀行處理結果為失敗時銀企解析資訊表 bank_res_pay 也為失敗時,才可更新支付模式 |
繼續走業務處理流程 | 更新支付請求表bill_pay_request 中的支付模式(pay_type)欄位 |
避免銀企處理成功又變更為轉賬的情況 |
8、資料庫設計
資料表每個業務不同,不便於展示資料具體欄位。
借款單資料表borrowing_bill
核銷日誌表writed_off_log
支付請求表bill_pay_request
銀企支付入參表bank_req_source
銀企介面反饋資訊表bank_res_parsing_source
銀企解析資訊表bank_res_pay
銀企呼叫異常表bank_res_error
報銷單據表refund_bill
轉賬日誌表transfer
交易流水日誌表trade_log
流程日誌表pay_life_log