銀企支付-詳細設計文檔

  • 2019 年 10 月 17 日
  • 筆記

銀企支付-詳細設計文檔


本文介紹企業在借款單,報銷單走銀企支付流程時的詳細設計。本文重點介紹整個流程需要關注的細節點,在最終實現時,對於數據表具體欄位,不做介紹。

1、定義說明

  • 報銷金額:申請報銷人,填寫的當次需要報銷的總金額。
  • 借款金額:申請借款人,填寫的當次需要借款的金額。
  • 核銷金額:指在報銷時,本身又存在借款金額未還時,報銷中,自動還款的金額,稱為核銷金額。如:借款1000元未還,報銷3000元,若本次要抵消借款的1000元,則核銷金額為1000元。核銷金額小於等於還款金額。
  • 實際報銷交易金額:指報銷時,報銷金額減去核銷金額後的餘額。如:核銷1000元,報銷3000元,實際報銷交易金額為2000元。

2、借款單

2.1、借款單流程

  • 借款單走銀企支付:通過銀行,公司賬戶把借款金額轉賬給申請借款人賬戶。
  • 借款單走內部轉賬:內部轉賬,變動相關賬戶虛擬金額。
校驗
項目 校驗規則 備註
支付方式驗證 支付方式支援系統轉賬,浦發銀行銀企支付
支付方銀行卡號驗證 當支付類型為銀企模式時,支付的銀行卡號必須存在,接收方的銀行卡號必須存在
單據編碼驗證 請求交易的單據編碼數據合規性驗證 如編碼可信性,準確性,是否已經在處理過程中
幣別驗證 系統支援的交易幣別類型驗證
支付方式限定 不同幣別僅支援系統轉賬
支付方式限定 銀企支付僅支援幣別人民幣
匯率正確性 幣別轉賬時,匯率值合規性驗證 針對工作人員填寫的匯率,做合規性驗證
用戶資訊驗證 查看系統中是否存在申請人員的資訊
申請人帳號驗證 查看系統中申請人銀行賬戶資訊是否正確
風控
項目 規則 備註
額度 單筆借款額度在xx萬以內
及時還款情況 若存在xx筆以上借款未還款,不可在借款
路由
項目 規則 備註
銀企支付 調用銀行介面,由公司銀行賬戶,轉賬給借款申請人的個人銀行帳號。系統層面記錄個人,公司虛擬賬戶金額變動情況。
系統轉賬 財務通過其他途徑轉賬給申請人,系統層面記錄個人,公司虛擬賬戶金額變動情況。
銀企支付

轉賬金額:申請人申請的借款金額。
調用銀行對外封裝的介面,做轉賬業務。不同銀行的邏輯不同,本文以浦發銀行為例。詳情參考銀企支付設計模組。

業務處理

當銀行處理借款業務成功後,或用戶直接選擇系統內轉賬時,調用業務處理模組。整個業務處理模組採用事務模式,保證賬戶變化,流水記錄等相關數據操作必須滿足一致性的需求。

項目 規則 備註
轉入流水金額 申請人借款成功,寫入的一條借款者入賬流水到流水表。 流水金額為借款金額
轉出流水金額 支付借款金額的賬戶,寫入一條轉出流水到流水表。 流水金額為借款金額
手續費 目前不存在交易手續費
轉賬日誌 記錄轉賬相關的明細資訊。
終態確定 最終完善該條借款單據的處理結果。 是否借款成功
執行流程日誌

流程日誌記錄單據從開始執行支付業務時,在不同節點的處理過程日誌。詳情查看流程日誌設計模組。

2.2、數據流向說明

3、報銷單

3.1、報銷單流程

  • 報銷單走銀企支付:通過銀行,公司賬戶把實際報銷金額轉賬給申請借款人賬戶。
  • 報銷單走內部轉賬:內部轉賬,變動相關賬戶虛擬金額。
  • 報銷單可關聯相關賬戶的借款資訊,自動核銷借款記錄。

報銷業務分為三種情況:

  1. 核銷金額為零(不選擇抵消借款,或無需要核銷的借款記錄)
  2. 核銷金額小於報銷金額
  3. 核銷金額等於報銷金額。
校驗
項目 校驗規則 備註
支付方式驗證 支付方式支援系統轉賬,浦發銀行銀企支付
單據編碼驗證 請求交易的單據編碼數據合規性驗證 如編碼可信性,準確性,是否已經在處理過程中
幣別驗證 系統支援的交易幣別類型驗證
支付方銀行卡號驗證 當支付類型為銀企模式時,支付的銀行卡號必須存在,接收方的銀行卡號必須存在
支付方式限定 不同幣別僅支援系統轉賬
支付方式限定 銀企支付僅支援幣別人民幣
匯率正確性 幣別轉賬時,匯率值合規性驗證 針對工作人員填寫的匯率,做合規性驗證
用戶資訊驗證 查看系統中是否存在申請人員的資訊
申請人帳號驗證 查看系統中申請人銀行賬戶資訊是否正確
支付方式驗證 報銷實際交易金額小於等於零時,不可選擇銀企支付
報銷實際交易金額 報銷實際交易金額必須大於等於零
核銷金額驗證 該筆報銷單關聯的所有借款單,查看借款單中待核銷的金額,是否大於等於待核銷的金額值
核銷總金額驗證 該筆報銷單關聯的所有借款單核銷記錄表明細,核銷金額和必須等於核銷總金額
風控
項目 規則 備註
額度 單筆報銷額度在xx萬以內。
最大關聯借款單數 本次報銷最多關聯xx筆借款單。
路由
項目 規則 備註
銀企支付 調用銀行介面,由公司銀行賬戶,轉賬給申請報銷人的銀行帳號。系統層面記錄個人,公司虛擬賬戶金額變動情況。
系統轉賬 財務通過其他途徑轉賬給申請人,系統層面記錄個人,公司虛擬賬戶金額變動情況。
銀企支付

轉賬金額:為報銷實際交易金額。
調用銀行對外封裝的介面,做轉賬業務。不同銀行的邏輯不同,本文以浦發銀行為例。詳情參考銀企支付設計模組。

業務處理

當銀行處理借款業務成功後,或用戶直接選擇系統內轉賬時,調用業務處理模組。整個業務處理模組採用事務模式,保證賬戶變化,流水記錄等相關數據操作必須滿足一致性的需求。

報銷實際交易金額大於零
項目 規則 備註
轉入流水金額 報銷方報銷成功,寫入的一條個人入賬流水到流水表。 流水金額為報銷實際交易金額
轉出核銷流水金額 報銷方核銷成功,寫入的一條個人核銷出賬流水到流水表。 流水金額為核銷金額
轉出流水金額 被報銷方處理報銷金額,寫入一條轉出流水到流水表。 流水金額為報銷實際交易金額
手續費 目前不存在交易手續費
轉賬日誌 記錄轉賬相關的明細資訊。
核銷日誌 記錄核銷相關的明細資訊。 核銷金額大於零才有核銷日誌
終態確定 最終完善該條報銷單據的處理結果。 是否核銷成功
實際報銷交易金額等於零

實際報銷交易金額等於零,可套用大於零的流程。當實際交易金額為零,不用寫報銷方和被報銷方的轉入轉出流水。報銷方寫核銷的轉出流水。

核銷金額等於零

核銷金額等於零,可套用大於零的流程。當核銷金額為零,寫報銷方和被報銷方的轉入轉出流水。報銷方不寫核銷的轉出流水。核銷金額為零,不用關聯借款單,不存在核銷日誌和借款單狀態變更。

執行流程日誌

流程日誌記錄單據從開始執行支付業務時,在不同節點的處理過程日誌。詳情查看流程日誌設計模組。

3.2、數據流向說明

4、銀企互聯

4.1、調用流程

本文以浦發銀行做銀企互聯介紹,銀企互聯,封裝銀行提供的交易介面,在進行交易操作時,記錄交互過程的明細資訊。提交的交易請求後,銀行的處理結果包括如下三類:

  1. 拒絕交易:銀行櫃員或系統,拒絕或撤銷支付請求。該筆交易設置為失敗。
  2. 交易成功:發起請求的交易操作成功。
  3. 交易處理過程中:發起的交易請求,銀行還在流程處理中,屬於中間狀態。

銀企互聯發起交易請求步驟:組織支付網關,調用單筆交易請求介面8801,接收回饋結果。

  1. 若回饋結果成功或處理中,調用8804查詢介面。
  2. 若回饋失敗,則先停止業務處理。
  3. 由於銀行一般不會馬上回饋支付成功的結果,一般執行都需要一個時間段,便於銀行內部中轉,對於這種中轉結果,等待銀行處理,定時調用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