冼順
摘要:銀企互聯(lián)業(yè)務流程復雜,涉及的系統(tǒng)多,網(wǎng)絡拓撲結(jié)構(gòu)復雜,在整個交互過程中難免有堵塞、丟包等異常情況發(fā)生。為該類業(yè)務設計一套合理完善的對賬調(diào)賬機制,是保證業(yè)務可持續(xù)發(fā)展,保證資金安全,減少錯帳的必要手段。通過正確的對賬策略發(fā)現(xiàn)各系統(tǒng)的狀態(tài)不一致的交易,再通過對應的調(diào)賬策略,最后把各系統(tǒng)的賬務調(diào)整成一致。
關鍵詞:對賬;對賬不一致;調(diào)賬;單邊帳
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2014)09-2166-03
隨著計算機技術的發(fā)展以及金融代收付業(yè)務的普及,越來越多的企業(yè)和銀行建立了計算機網(wǎng)絡互聯(lián),來實現(xiàn)其代收付業(yè)務的自動化,以加快企業(yè)效率,降低人工成本。由于這個業(yè)務過程往往是建立在兩個或兩個以上的服務器系統(tǒng)之間進行通訊為基礎的,網(wǎng)絡連接隨著系統(tǒng)的增加而變得復雜。各系統(tǒng)的業(yè)務處理復雜度高,系統(tǒng)的業(yè)務量大等原因,在整個通訊過程中每一個環(huán)節(jié)出現(xiàn)異常都會導致交易的異常。所以每天各系統(tǒng)間進行對賬是核實各系統(tǒng)交易狀態(tài)一致的必要手段,通過對賬找出系統(tǒng)間的不一致交易,再通過適當?shù)恼{(diào)賬策略,以保證最后多個系統(tǒng)間的交易狀態(tài)一致。該文以銀企互聯(lián)中的扣費業(yè)務為例,總結(jié)了這個業(yè)務過程中的對賬、調(diào)賬策略。
1 銀企互聯(lián)扣費業(yè)務流程
如圖1是銀企互聯(lián)的一個典型的業(yè)務流程:
步驟1:A商家為電信公司的扣費系統(tǒng),計算出客戶該月的電話費后,根據(jù)客戶簽約的 扣款銀行帳號,向銀行發(fā)起扣費交易。
步驟2:銀行中間業(yè)務系統(tǒng)收到扣費交易后做必要的檢驗通過后聯(lián)動向核心系統(tǒng)發(fā)起扣款交易。
步驟3:銀行核心系統(tǒng)處理扣款交易,處理完后,返回扣款結(jié)果給銀行中間業(yè)務系統(tǒng)。
步驟4:中間業(yè)務系統(tǒng)做后續(xù)處理后,再把最終結(jié)果返回給電信公司扣費系統(tǒng)。
2 單邊帳的產(chǎn)生
從圖1可以看到A、B、C三個系統(tǒng)間有多次聯(lián)動的交互,在步驟1、2、3、4的交互過程中,主要有一個環(huán)節(jié)出現(xiàn)網(wǎng)絡故障、堵塞等異常時,A、B、C系統(tǒng)的狀態(tài)就可能會出現(xiàn)不一致,導致單邊帳的出現(xiàn):
2.1 A不等于B
如圖2,當步驟4在返回結(jié)果時出現(xiàn)超時或者丟包時,A收不到B的結(jié)果返回,A系統(tǒng)一般會根據(jù)開發(fā)時預設的規(guī)則,決定該筆交易的狀態(tài),一般會當成失敗處理。但是B系統(tǒng)對該筆交易的處理可能是已經(jīng)成功了,這時A和B的狀態(tài)不一致,出現(xiàn)了單邊帳。
2.2 B不等于C
如圖3,當步驟3在返回結(jié)果時出現(xiàn)超時或者丟包時,B系統(tǒng)收不到C系統(tǒng)的返回,B系統(tǒng)也會根據(jù)開發(fā)時預設的規(guī)則,決定該筆交易的狀態(tài),一般會當成失敗處理。但是C系統(tǒng)對該筆交易的處理可能是成功了,這時B和C的狀態(tài)不一致,也出現(xiàn)了單邊帳。
3 對賬原則
銀行中間業(yè)務系統(tǒng)在整個交易過程中充當一個中間角色。他既要和商家進行對賬又要和核心系統(tǒng)進行對賬。在兩個部分的對賬中都可能會出現(xiàn)對賬不一致的情況。銀行中間業(yè)務系統(tǒng)在和商家對賬時,以銀行中間業(yè)務系統(tǒng)的狀態(tài)為準,商家根據(jù)銀行中間業(yè)務系統(tǒng)的狀態(tài)進行調(diào)帳。銀行中間業(yè)務系統(tǒng)和銀行核心業(yè)務系統(tǒng)對賬時,以銀行核心系統(tǒng)的狀態(tài)為準,銀行中間業(yè)務系統(tǒng)根據(jù)銀行核心系統(tǒng)的狀態(tài)進行調(diào)賬。
4 對賬的方法和步驟
4.1 銀行中間業(yè)務系統(tǒng)和商家扣費系統(tǒng)對賬
一般由銀行中間業(yè)務系統(tǒng)日切后進行對賬。銀行中間業(yè)務系統(tǒng)統(tǒng)計當天處理成功的交易總筆數(shù)、總金額、所有交易的明細信息(包括日期、流水、帳號、金額、狀態(tài)等)發(fā)送給商家系統(tǒng) ,后續(xù)由商家系統(tǒng)進行對賬處理。
4.2 銀行中間業(yè)務系統(tǒng)和核心系統(tǒng)對賬
核心系統(tǒng)日切后,統(tǒng)計當天處理成功的交易總筆數(shù)、總金額、所有交易的明細信息(包括日期、流水、帳號、金額、狀態(tài)等)發(fā)送給中間業(yè)務系統(tǒng),后續(xù)由中間業(yè)務系統(tǒng)進行對賬處理。
4.3 對賬處理的過程
1)先把收到的對方系統(tǒng)發(fā)來的對賬匯總信息和明細信息進行入庫處理。
2)統(tǒng)計本系統(tǒng)的總筆數(shù)、總金額,形成對賬總表。
3)對比本系統(tǒng)的交易明細和核心系統(tǒng)發(fā)來的交易明細,形成對賬明細表。
4)根據(jù)對賬明細表,找出雙方狀態(tài)不一致的交易明細形成對賬不一致表。
通過對賬總表、對賬明細表、對賬不一致表,可以直觀的反映出兩個系統(tǒng)的賬務一致性。
圖4是銀行核心系統(tǒng)和中間業(yè)務系統(tǒng)的對賬流程圖,中間業(yè)務系統(tǒng)和商家扣費系統(tǒng)的對賬過程也基本一樣。
5 對賬不一致以及調(diào)賬
5.1 單邊帳情況1(A不等于B)
根據(jù)圖2,商家扣費系統(tǒng)對完帳后應該會出現(xiàn)商家扣費系統(tǒng)失敗,中間業(yè)務系統(tǒng)是成功的不一致情況。這時商家扣費系統(tǒng)根據(jù)不一致明細信息調(diào)整自己系統(tǒng)該筆交易的狀態(tài)為成功,并按扣費成功的邏輯修改系統(tǒng)內(nèi)相關的數(shù)據(jù)。
5.2 單邊帳情況2(B不等于C)
根據(jù)圖3,銀行中間業(yè)務系統(tǒng)對完賬后會出現(xiàn)中間業(yè)務系統(tǒng)失敗,核心系統(tǒng)成功的不一致情況。這時中間業(yè)務系統(tǒng)返回給商家的結(jié)果也是失敗狀態(tài),這時銀行中間業(yè)務系統(tǒng)需要往核心系統(tǒng)發(fā)起沖正交易進行調(diào)賬,把扣了客戶的錢沖回去給客戶。
6 異常的連鎖反應
1)對賬經(jīng)常是在當天日切之后才進行,是相對滯后的。在對賬調(diào)賬發(fā)起之前這個時間內(nèi),針對該筆異常的扣費,如果又發(fā)起了第二次交易,情況會變得復雜。
2)單邊帳情況1(A不等于B)時,當天如果發(fā)起第二次扣費并且成功,這時會導致對賬后無法調(diào)整成功的情況,因為客戶的欠費已經(jīng)被第二次扣費處理成功了。這時,實際上對客戶的欠費扣了兩次錢。在系統(tǒng)設計時應考慮通過如下方法解決這種情況:
方法1:商家扣費系統(tǒng)可以對異常的交易標識為第三種狀態(tài),以區(qū)別于成功、失敗的情形。對第三種狀態(tài)的扣費交易通過晚上對賬來明確該筆交易的最后狀態(tài)為成功或者失敗,再做下一步處理。從而避免多次扣取客戶的錢。
方法2:銀行中間業(yè)務系統(tǒng)提供沖正接口給商家扣費系統(tǒng),商家扣費系統(tǒng)對完帳后對于自己失敗,中間業(yè)務系統(tǒng)成功的交易,在調(diào)賬時無法調(diào)成功的,發(fā)起沖正。
3)單邊帳情況2(B不等于C)時,如果商家扣費系統(tǒng)發(fā)起第二次扣費并且成功,這時也會導致扣了客戶兩次錢,在系統(tǒng)設計時應考慮通過如下方法解決這種情況:方法1:電信扣費系統(tǒng)每天只發(fā)起一次扣費,如果失敗,下一天再發(fā)起扣費。
方法2:銀行中間業(yè)務系統(tǒng)對賬后發(fā)起沖正,把多扣客戶的錢沖回去。
7 結(jié)束語
銀企互聯(lián)的業(yè)務種類繁多,這里只是列舉了一個常見的例子進行了分析,其他異常情況的處理思想也是相通的。對賬和調(diào)賬就是以保證雙方系統(tǒng)的賬務一致性、保證資金安全為首要原則,它應該是在系統(tǒng)建設方案設定的時候就制定好的一個規(guī)范。
參考文獻:
[1] 理查德·史蒂文斯.UNIX環(huán)境高級編程 [M]. 2版. 張亞英,戚正偉,譯.北京: 人民郵電出版社, 2006:450-455.
[2] Mcdonald C.精通Oracle PL/SQL [M]. 蔡偉毅,譯.北京: 人民郵電出版社,2009:47-53.
[3] Jon C.TCP/IP高效編程[M].陳涓,趙振平,譯.北京: 人民郵電出版社,2011:210-215.