對賬時的“支付清算文件”解析配置
在對賬系統(tǒng)設(shè)計中,解析文件是其中的一個關(guān)鍵核心部分,那么,如果要設(shè)計好解析器,可以遵循什么樣的設(shè)計原理?本篇文章里,作者針對解析器的設(shè)計方法和實現(xiàn)原理進行了分析總結(jié),一起來看看吧。
解析文件是對賬系統(tǒng)設(shè)計中非常核心的一個部分,但上述文章中的解析器描述的詳細程度可能有所欠缺,所以,本文單獨講一下解析器的設(shè)計方法和實現(xiàn)原理。
一、文件與解析
獲取文件并解析文件是對賬系統(tǒng)非常重要的環(huán)節(jié),也是后續(xù)進行對賬的基礎(chǔ)。
而獲取文件主要指三類文件:平臺的支付數(shù)據(jù)、渠道的清算數(shù)據(jù)、渠道的結(jié)算數(shù)據(jù),平臺數(shù)據(jù)可以通過SQL、MQ、接口、文件等形式獲取,而渠道文件一般通過接口獲取,或者人工下載并導(dǎo)入到對賬系統(tǒng)內(nèi)。
獲取文件以后,如何將文件解析到數(shù)據(jù)庫里形成數(shù)據(jù)庫數(shù)據(jù)就需要解析處理的能力,當然可以由技術(shù)直接研發(fā)實現(xiàn)。
這樣做的弊端比較明顯,那就是新增渠道、或者渠道文件發(fā)生了變更,對賬規(guī)則發(fā)生了變更,可能都需要走研發(fā)對解析規(guī)則進行修改,這將大大的增加研發(fā)的成本,降低了對業(yè)務(wù)訴求的反映效率。
所以,可以實現(xiàn)解析規(guī)則的配置化,這也就是本文要介紹的“坑位解析器配置”。
為什么叫坑位解析器呢,因為本模型的數(shù)據(jù)庫表是固定的,而是將文件數(shù)據(jù)按照對應(yīng)關(guān)系解析到固定的字段上去。
與之相對的另外一種解析模型就是將文件原樣解析,保持文件的字段數(shù)量,但是,這樣的解析模型會造成大量的數(shù)據(jù)表結(jié)構(gòu),后續(xù)的處理和對賬設(shè)置會稍微麻煩很多。
二、文件與解析規(guī)則的關(guān)系
對于三方支付機構(gòu)來說,交易對賬就是核對平臺的支付數(shù)據(jù)記錄與渠道下發(fā)的清算文件中的記錄的一致性,而平臺數(shù)據(jù)可以通過SQL獲得,而清算數(shù)據(jù)可以通過接口獲得,獲得以后進行文件的解析,而解析就需要解析的規(guī)則,如下圖所示。
一個對賬項目的解析器和清算文件是綁定關(guān)系,這樣就意味著該對賬項目的清算文件是由該對賬項目綁定的解析器所設(shè)置的規(guī)則進行解析的。
三、如何設(shè)計配置工具
下圖是某支付渠道的清算文件樣式。
其中的商戶訂單號就是平臺的請求唯一單號,也就是與平臺數(shù)據(jù)進行核對的唯一標識,所以要解析出來,另外的交易狀態(tài)代表了退款和支付類型,后面還有金額等對賬需要的字段。
如何設(shè)置將這些字段解析到數(shù)據(jù)庫表中的規(guī)則,就需要用到如下的配置工具。
整個配置工具由2部分組成。
第一部分是基礎(chǔ)配置。
是配置該解析規(guī)則的基礎(chǔ)信息,主要配置實現(xiàn)“我們需要哪些數(shù)據(jù)”,比如解析器的編號,所屬對賬項目,文件的格式、編碼等內(nèi)容。
其中,過濾字段設(shè)置的是“哪些數(shù)據(jù)不要”,比如示例中的含義就是通過文件中的第9列和第10列進行過濾,第9列是“未知、失敗”或者第10列是01的數(shù)據(jù)不需要進行解析。
數(shù)據(jù)開始行的用途是指定從哪一行開始解析,因為有些渠道的文件開頭有表頭或者有些統(tǒng)計類信息不需要解析,應(yīng)該刨除掉,如下面的文件就應(yīng)該填“6”,從第6行數(shù)據(jù)開始解析,前5行數(shù)據(jù)不需要。
數(shù)據(jù)列數(shù)的配置用途其實也是用于設(shè)定解析哪些數(shù)據(jù),可以跟“數(shù)據(jù)開始行”的配置同時使用,加強條件,比如填寫了“12”,就代表只解析哪些有12個字段的數(shù)據(jù)行。
第二部分是解析規(guī)則的配置。
這部分是規(guī)則部分,主要是配置文件中的“數(shù)據(jù)如何放到數(shù)據(jù)表里”的問題。
配置一共有3列:
第一列就是數(shù)據(jù)庫表的固定字段,例如銀行訂單號、交易類型、卡類型等。
第二列是字段位置,也就是這個字段取文件中那一列的數(shù)據(jù),比如原型中銀行訂單號填寫的是1,就是將文件中的第一列解析到銀行訂單號。
第三列是說明文件中的數(shù)據(jù)格式、單位或者數(shù)值。
這里要強調(diào)的是,整個規(guī)則配置主要可以分3大類。
第一類:取數(shù)型配置,如銀行訂單號等,只需要填寫數(shù)據(jù)列“數(shù)”即可,不需要配置格式、單位、數(shù)值,直接將文件中的數(shù)據(jù)取過來即可。
第二類:映射型配置,如交易類型、卡類型,二者在數(shù)據(jù)庫里是固定的枚舉值,分別是“支付、退款”,“借記卡、貸記卡”,按原型示例的配置,含義就是卡類型根據(jù)第“13”列判斷,如果是01則代表借記卡、02代表貸記卡,解析到數(shù)據(jù)庫里時,卡類型字段會設(shè)置成“借記卡”或者“貸記卡”,而不是文件中的數(shù)值;同樣原型中的交易類型字段,由第“10”列決定,當是“S13、S22、S23、S36、S37、S46、S54、S56、S64”時代表支付,當是“REFUND”時代表退款。
第三類:單位和格式型配置,比如原型中的金額需要配置文件中是什么單位,時間要配置說明文件中的時間格式是什么。
專欄作家
陳天宇宙,微信公眾號:陳天宇宙,人人都是產(chǎn)品經(jīng)理專欄作家。多平臺支付領(lǐng)域?qū)谧髡撸曩Y深產(chǎn)品;專注為10萬支付產(chǎn)品經(jīng)理和支付機構(gòu)以及企業(yè)提供深度支付內(nèi)容和服務(wù)!
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于 CC0 協(xié)議。
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
- 目前還沒評論,等你發(fā)揮!