本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用于金融報文的校驗方法和裝置。
背景技術(shù):
隨著線上交易業(yè)務(wù)的發(fā)展,需要與許多國內(nèi)外的金融機(jī)構(gòu),例如,銀行機(jī)構(gòu)、清算機(jī)構(gòu),以及結(jié)算機(jī)構(gòu)等進(jìn)行合作,線上交易業(yè)務(wù)的交易過程主要是通過金融報文的方式進(jìn)行。
相關(guān)技術(shù)中,由于不同金融機(jī)構(gòu)之間的金融報文結(jié)構(gòu)差異大,相同金融機(jī)構(gòu)的金融報文的種類繁多,并且每個金融報文包含多個一級標(biāo)簽,每個不同的一級標(biāo)簽下又包含多個子標(biāo)簽。隨著金融報文所屬的業(yè)務(wù)類型不同,相同的金融報文的相同級標(biāo)簽,其值有不同或者相同的業(yè)務(wù)規(guī)范,并且,由于不同金融報文中相同的子標(biāo)簽的路徑不同,因此需要對子標(biāo)簽重復(fù)校驗,金融報文的校驗效率不高,校驗成本大。
技術(shù)實現(xiàn)要素:
本發(fā)明旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問題之一。
為此,本發(fā)明的一個目的在于提出一種應(yīng)用于金融報文的校驗方法,能夠有效提升金融報文的校驗效率。
本發(fā)明的另一個目的在于提出一種應(yīng)用于金融報文的校驗裝置。
為達(dá)到上述目的,本發(fā)明第一方面實施例提出的應(yīng)用于金融報文的校驗方法,包括:獲取金融報文,并對所述金融報文進(jìn)行解析以獲取所述金融報文的 子標(biāo)簽;從第一配置表中讀取與所述子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器的校驗值,以及從第二配置表中讀取所述金融報文的特征校驗器的校驗值;根據(jù)所述基礎(chǔ)xml標(biāo)簽校驗器的校驗值和所述特征校驗器的校驗值對所述金融報文進(jìn)行校驗。
本發(fā)明第一方面實施例提出的應(yīng)用于金融報文的校驗方法,通過獲取金融報文的子標(biāo)簽,并根據(jù)基礎(chǔ)xml標(biāo)簽校驗器的校驗值和特征校驗器的校驗值對金融報文進(jìn)行校驗,能夠有效提升金融報文的校驗效率。
為達(dá)到上述目的,本發(fā)明第二方面實施例提出的應(yīng)用于金融報文的校驗裝置,包括:第一獲取模塊,用于獲取金融報文,并對所述金融報文進(jìn)行解析以獲取所述金融報文的子標(biāo)簽;讀取模塊,用于從第一配置表中讀取與所述子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器的校驗值,以及從第二配置表中讀取所述金融報文的特征校驗器的校驗值;校驗?zāi)K,用于根據(jù)所述基礎(chǔ)xml標(biāo)簽校驗器的校驗值和所述特征校驗器的校驗值對所述金融報文進(jìn)行校驗。
本發(fā)明第二方面實施例提出的應(yīng)用于金融報文的校驗裝置,通過獲取金融報文的子標(biāo)簽,并根據(jù)基礎(chǔ)xml標(biāo)簽校驗器的校驗值和特征校驗器的校驗值對金融報文進(jìn)行校驗,能夠有效提升金融報文的校驗效率。
本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
附圖說明
本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1是本發(fā)明一實施例提出的應(yīng)用于金融報文的校驗方法的流程示意圖;
圖2是本發(fā)明實施例中金融報文的一級標(biāo)簽示意圖;
圖3是本發(fā)明實施例中金融報文的子標(biāo)簽示意圖;
圖4是本發(fā)明實施例中cnaps報文的xml文件示意圖;
圖5是本發(fā)明實施例中citi報文的xml文件示意圖;
圖6是本發(fā)明另一實施例提出的應(yīng)用于金融報文的校驗方法的流程示意圖;
圖7是本發(fā)明實施例中第一配置表的結(jié)構(gòu)示意圖;
圖8是本發(fā)明實施例中第二配置表的結(jié)構(gòu)示意圖;
圖9是本發(fā)明實施例中第三配置表的結(jié)構(gòu)示意圖;
圖10是本發(fā)明實施例中目標(biāo)校驗器的結(jié)構(gòu)示意圖;
圖11是本發(fā)明實施例中不同業(yè)務(wù)類型金融報文與一級標(biāo)簽校驗器的對應(yīng)關(guān)系示意圖;
圖12是本發(fā)明另一實施例提出的應(yīng)用于金融報文的校驗裝置的結(jié)構(gòu)示意圖;
圖13是本發(fā)明另一實施例提出的應(yīng)用于金融報文的校驗裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。相反,本發(fā)明的實施例包括落入所附加權(quán)利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。
圖1是本發(fā)明一實施例提出的應(yīng)用于金融報文的校驗方法的流程示意圖。
本實施例以該應(yīng)用于金融報文的校驗方法被配置為應(yīng)用于金融報文的校驗裝置中來舉例說明。其中,該應(yīng)用于金融報文的校驗裝置可以例如設(shè)置在支付系統(tǒng)中,本發(fā)明實施例對此不作限制。
本實施例的方法可以基于國際金融服務(wù)金融業(yè)通用報文標(biāo)準(zhǔn)(iso20022標(biāo)準(zhǔn))。
參見圖1,該方法包括:
s11:獲取金融報文,并對金融報文進(jìn)行解析以獲取金融報文的子標(biāo)簽。
其中,金融報文用于使各個金融機(jī)構(gòu)之間進(jìn)行線上業(yè)務(wù)溝通,各個金融機(jī)構(gòu)可以例如國內(nèi)外銀行機(jī)構(gòu)、清算機(jī)構(gòu),或者結(jié)算機(jī)構(gòu)等。金融報文例如國內(nèi)的二代支付系統(tǒng)報文、建行報文,國外的swift報文、boa報文,以及citi報文等。
金融報文遵循iso20022標(biāo)準(zhǔn)。
可以理解的是,金融報文可以由多級標(biāo)簽構(gòu)成,例如,金融報文包含一個或者多個一級標(biāo)簽,其中,每個一級標(biāo)簽包含一個或者多個的子標(biāo)簽,因此,隨著金融報文所屬的業(yè)務(wù)類型的不同,相同金融報文的同級標(biāo)簽可以具有不同或者相同的校驗值。
其中,根據(jù)金融報文所屬的業(yè)務(wù)類型,可以將金融報文劃分為支付類報文、非支付類報文、批量支付類報文,以及文件通知報文。
參見圖2,圖2為本發(fā)明實施例中金融報文的一級標(biāo)簽示意圖,其中,支付類報文的一級標(biāo)簽例如報文基本信息、原報文基本信息、報文業(yè)務(wù)渠道信息等;非支付類報文的一級標(biāo)簽例如報文基本信息、原報文基本信息、報文業(yè)務(wù)渠道信息等;批量支付類報文的一級標(biāo)簽例如批量包頭信息和批量組頭信息;文件通知報文的一級標(biāo)簽例如報文基本信息、原報文基本信息、路由信息等。
一個實施例中,參見圖3,每個一級標(biāo)簽包含一個或者多個的子標(biāo)簽,對圖2中的“業(yè)務(wù)處理信息”一級標(biāo)簽進(jìn)行細(xì)粒度示例,非支付類報文的一級標(biāo)簽“業(yè)務(wù)處理信息”中可以特有“業(yè)務(wù)狀態(tài)碼”子標(biāo)簽,支付類報文和文件通知報文特有“清算日期”和“處理狀態(tài)”子標(biāo)簽,而所有業(yè)務(wù)類型的金融報文共有“響應(yīng)返回碼”、“響應(yīng)描述信息”、“處理日期”、“軋差日期”、“軋差場次”,以及“業(yè)務(wù)參與機(jī)構(gòu)行號”子標(biāo)簽,其中,所有業(yè)務(wù)類型的金融報文共有的子標(biāo)簽的值和類型一致,即遵循iso20022標(biāo)準(zhǔn)。
本實施例中以通過可擴(kuò)展標(biāo)記語言(extensiblemarkuplanguage,xml) 標(biāo)記金融報文示例。
進(jìn)一步,可選地,參見圖4和圖5,圖4為本發(fā)明實施例中以二代支付系統(tǒng)的cnaps報文(saps.360.001.01)的xml文件示意圖,圖5為本發(fā)明實施例中以花旗銀行報文citi報文的xml文件示意圖。
其中,標(biāo)簽<?xml>用于說明xml版本和解碼方式等信息;標(biāo)簽<document>用于說明xml命名空間,標(biāo)簽<?xml>和標(biāo)簽<document>是所有金融報文的必要標(biāo)簽。<bktocstmracctrpt>是cnaps報文saps.360.001.01的根標(biāo)簽;<msgid>是的子標(biāo)簽,其中,<msgid>子標(biāo)簽的路徑是<bktocstmracctrpt>/<grphdr>。相同<msgid>子標(biāo)簽在citi報文的路徑是<cstmrcdttrfinitn>/<grphdr>。可以理解的是,雖然cnaps報文中的<msgid>子標(biāo)簽和citi報文中的<msgid>子標(biāo)簽的值、屬性,以及類型相同,但是路徑不相同,對于cnaps報文中的<credttm>子標(biāo)簽和citi報文中的<credttm>子標(biāo)簽,以此類推。
s12:從第一配置表中讀取與子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器的校驗值,以及從第二配置表中讀取金融報文的特征校驗器的校驗值。
一個實施例中,對金融報文進(jìn)行校驗的校驗器包括一個或者多個的一級標(biāo)簽校驗器,每個一級標(biāo)簽校驗器包括一個或者多個的基礎(chǔ)xml標(biāo)簽校驗器,其中,一級標(biāo)簽校驗器可以用于對金融報文的子標(biāo)簽的路徑進(jìn)行校驗,基礎(chǔ)xml標(biāo)簽校驗器可以用于對金融報文的子標(biāo)簽的值、屬性,以及類型進(jìn)行校驗。
可選地,可以預(yù)先根據(jù)與金融報文的子標(biāo)簽對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器生成第一配置表,以及預(yù)先根據(jù)與金融報文的子標(biāo)簽對應(yīng)的特征校驗器生成第二配置表。
可以理解的是,預(yù)先根據(jù)與金融報文的子標(biāo)簽對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器生成第一配置表,即,根據(jù)各個金融機(jī)構(gòu)對不同或者相同的子標(biāo)簽的值、屬性,以及類型的校驗規(guī)范生成基礎(chǔ)xml標(biāo)簽校驗器,并將子標(biāo)簽的鍵值和對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器生成第一配置表,進(jìn)一步,預(yù)先根據(jù)與金融報文的子標(biāo)簽對應(yīng)的特征校驗器生成第二配置表,即,根據(jù)各個金融機(jī)構(gòu)對不同或者相同的子 標(biāo)簽的特征點的校驗規(guī)范生成第二配置表,在生成第一配置表和第二配置表后,也可以將配置表存儲在服務(wù)器中,在此不作限制。
通常獲取到金融報文的子標(biāo)簽,例如,獲取到圖4中cnaps報文中的<msgid>子標(biāo)簽和<credttm>子標(biāo)簽,以及圖5中citi報文中的<msgid>子標(biāo)簽和<credttm>子標(biāo)簽,可以先定位<msgid>子標(biāo)簽和<credttm>子標(biāo)簽在不同金融報文中的路徑。例如,在cnaps報文中,<msgid>子標(biāo)簽和<credttm>子標(biāo)簽的路徑是<bktocstmracctrpt>/<grphdr>,而在citi報文中,<msgid>子標(biāo)簽和<credttm>子標(biāo)簽的路徑是<cstmrcdttrfinitn>/<grphdr>,在根據(jù)不同的路徑定位到<msgid>子標(biāo)簽和<credttm>子標(biāo)簽后,可以校驗<msgid>子標(biāo)簽和<credttm>子標(biāo)簽的值、屬性,以及類型,由于不同金融報文中相同的子標(biāo)簽的路徑不同,因此需要對子標(biāo)簽重復(fù)校驗,金融報文的校驗效率不高。
而本發(fā)明的實施例中,在獲取到金融報文的子標(biāo)簽后,可以從第一配置表中讀取與子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器的校驗值,以及從第三配置表中獲取與子標(biāo)簽的鍵值對應(yīng)的路徑校驗值,其中,第一配置表是根據(jù)與金融報文的子標(biāo)簽對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器預(yù)先生成的,第三配置表是根據(jù)與金融報文的一級標(biāo)簽對應(yīng)的一級標(biāo)簽校驗器預(yù)先生成的,以及,從第二配置表中讀取金融報文的特征校驗器的校驗值,第二配置表是根據(jù)與金融報文的子標(biāo)簽對應(yīng)的特征校驗器預(yù)先生成的,可以實現(xiàn)根據(jù)子標(biāo)簽的鍵值從第一配置表、第二配置表,以及第三配置表中調(diào)取對應(yīng)校驗器的校驗值進(jìn)行校驗,不需要對不同路徑下的子標(biāo)簽進(jìn)行重復(fù)校驗,提升金融報文的校驗效率。
s13:根據(jù)基礎(chǔ)xml標(biāo)簽校驗器的校驗值和特征校驗器的校驗值對金融報文進(jìn)行校驗。
可選地,根據(jù)基礎(chǔ)xml標(biāo)簽校驗器的校驗值和特征校驗器的校驗值對金融報文進(jìn)行校驗,包括:根據(jù)基礎(chǔ)xml標(biāo)簽校驗器的校驗值對金融報文的子標(biāo)簽的值、屬性,以及類型進(jìn)行校驗;根據(jù)特征校驗器的校驗值對金融報文的子標(biāo)簽的特征點進(jìn)行校驗。
例如,以cnaps報文為例,采用基礎(chǔ)xml標(biāo)簽校驗器對cnaps報文的子標(biāo)簽的值、屬性,以及類型進(jìn)行校驗可以示例如下,其中,基礎(chǔ)xml標(biāo)簽校驗器的校驗值可以包括基于iso20022標(biāo)準(zhǔn)的值、基于iso20022標(biāo)準(zhǔn)的屬性,以及基于iso20022標(biāo)準(zhǔn)的類型,當(dāng)子標(biāo)簽為“預(yù)警值通知類型”時,基于iso20022標(biāo)準(zhǔn)的值可能為“enab”(預(yù)警開啟)或者“disa”(預(yù)警解除),假設(shè)cnaps報文子標(biāo)簽“預(yù)警值通知類型”的基于iso20022標(biāo)準(zhǔn)的值為“enab”,則當(dāng)接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的值為“enab”時,該子標(biāo)簽“預(yù)警值通知類型”的值合法,而當(dāng)接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的值為“disa”時,該子標(biāo)簽“預(yù)警值通知類型”的值不合法,以此完成對接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的值的校驗;基于iso20022標(biāo)準(zhǔn)的屬性可能為“[1..1]”(表示cnaps報文必須有子標(biāo)簽“預(yù)警值通知類型”,若接收到的cnaps報文沒有子標(biāo)簽“預(yù)警值通知類型”,則對接收到的cnaps報文格式不能正常解析)或者“[0..1]”(表示cnaps報文可有可無子標(biāo)簽“預(yù)警值通知類型”,若接收到的cnaps報文沒有填寫子標(biāo)簽“預(yù)警值通知類型”,cnaps報文格式不會解析錯誤),以此完成對接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的屬性的校驗;基于iso20022標(biāo)準(zhǔn)的類型例如為“max4text”(文本格式,包含字母和數(shù)字,最短長度為1,最大長度為4,長度超過4時,報錯),假設(shè)cnaps報文子標(biāo)簽“預(yù)警值通知類型”的基于iso20022標(biāo)準(zhǔn)的類型為“max4text”,則當(dāng)接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的類型為“12x”時,該子標(biāo)簽“預(yù)警值通知類型”的值合法,而當(dāng)接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的類型為“12345”時,該子標(biāo)簽“預(yù)警值通知類型”的值不合法,以此完成對接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的值的校驗?;趇so20022標(biāo)準(zhǔn)的類型還可以例如,maxnnumerictext,表示數(shù)字串,最少1位,最多n位的數(shù)字;isodate:表示日期,格式為yyyy-mm-dd;isodatetime:表示日期和時間,格式為yyyy-mm-ddthh:mm:ss。
本實施例中,通過獲取金融報文的子標(biāo)簽,并根據(jù)基礎(chǔ)xml標(biāo)簽校驗器的 校驗值和特征校驗器的校驗值對金融報文進(jìn)行校驗,能夠有效提升金融報文的校驗效率。
圖6是本發(fā)明另一實施例提出的應(yīng)用于金融報文的校驗方法的流程示意圖。
本實施例以該應(yīng)用于金融報文的校驗方法被配置為應(yīng)用于金融報文的校驗裝置中來舉例說明。其中,該應(yīng)用于金融報文的校驗裝置可以例如設(shè)置在支付系統(tǒng)中,本發(fā)明實施例對此不作限制。
本實施例的方法可以基于國際金融服務(wù)金融業(yè)通用報文標(biāo)準(zhǔn)(iso20022標(biāo)準(zhǔn))。
參見圖6,該方法包括:
s601:根據(jù)與金融報文的子標(biāo)簽對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器生成第一配置表。
可以理解的是,預(yù)先根據(jù)與金融報文的子標(biāo)簽對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器生成第一配置表,即,根據(jù)各個金融機(jī)構(gòu)對不同或者相同的子標(biāo)簽的值、屬性,以及類型的校驗規(guī)范生成基礎(chǔ)xml標(biāo)簽校驗器,并將子標(biāo)簽的鍵值和對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器生成第一配置表。
參見圖7,本實施例中以第一配置表為基礎(chǔ)xml標(biāo)簽校驗配置表為例。其中,根據(jù)iso20022標(biāo)準(zhǔn),預(yù)先根據(jù)與金融報文的子標(biāo)簽對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器生成第一配置表,例如,對于子標(biāo)簽,它有3個iso20022標(biāo)準(zhǔn)維度的基礎(chǔ)xml標(biāo)簽校驗器的校驗值,即,基于iso20022標(biāo)準(zhǔn)的值、基于iso20022標(biāo)準(zhǔn)的屬性,以及基于iso20022標(biāo)準(zhǔn)的類型,基礎(chǔ)xml標(biāo)簽校驗器可以從這3個iso20022標(biāo)準(zhǔn)維度對子標(biāo)簽進(jìn)行校驗。所有對子標(biāo)簽進(jìn)行校驗的基礎(chǔ)xml標(biāo)簽校驗器的校驗值以第一配置表的形式存儲在服務(wù)器中,其中,鍵值(key)為common表示通用iso20022校驗標(biāo)準(zhǔn),鍵值(key)為金融機(jī)構(gòu)標(biāo)識表示該金融機(jī)構(gòu)對子標(biāo)簽校驗有特殊規(guī)范。
對于金融機(jī)構(gòu)對子標(biāo)簽校驗的特殊規(guī)范,可以通過s602進(jìn)行配置。參見圖 7,cnaps報文的<msgid>子標(biāo)簽的類型校驗值不同。如果金融機(jī)構(gòu)對子標(biāo)簽校驗有特殊規(guī)范,基礎(chǔ)xml標(biāo)簽校驗器會從第二校驗表中讀取與子標(biāo)簽的鍵值對應(yīng)的特征校驗器的校驗值進(jìn)行特征點校驗。
s602:根據(jù)與金融報文的子標(biāo)簽對應(yīng)的特征校驗器生成第二配置表。
可以理解的是,預(yù)先根據(jù)與金融報文的子標(biāo)簽對應(yīng)的特征校驗器生成第二配置表,即,根據(jù)各個金融機(jī)構(gòu)對不同或者相同的子標(biāo)簽的特征點的校驗規(guī)范生成第二配置表,在生成第一配置表和第二配置表后,也可以將配置表存儲在服務(wù)器中,在此不作限制。
參見圖8,本實施例中以第二配置表為具體報文特殊化配置表為例。其中,可以預(yù)先根據(jù)與金融報文的子標(biāo)簽對應(yīng)的特征校驗器生成第二配置表,例如文件通知報文,美銀cmt.052報文,<cdtdbtind>子標(biāo)簽的合法值有crdt和dbit。如果是貸記業(yè)務(wù),<cdtdbtind>子標(biāo)簽的值為crdt,如果是借記業(yè)務(wù),<cdtdbtind>子標(biāo)簽的值為dbit;如支付類報文,pain.001報文中的<endtoendid>子標(biāo)簽,基礎(chǔ)xml標(biāo)簽校驗器的校驗值中,以及iso20022標(biāo)準(zhǔn)的類型是textmax35(char類型最長35),但是,花旗銀行<endtoendid>子標(biāo)簽長度是15,而美國銀行<endtoendid>子標(biāo)簽,根據(jù)usach系統(tǒng)為15位,根據(jù)uswires系統(tǒng)為16位??梢詫⒔鹑趫笪牡奶卣餍r炂鞯男r炛蹬渲迷诘诙渲帽碇?。
s603:根據(jù)與金融報文的一級標(biāo)簽對應(yīng)的一級標(biāo)簽校驗器生成第三配置表。
參見圖9,本實施例中以第三配置表為一級標(biāo)簽“報文基本信息”校驗配置表為例。其中,可以預(yù)先根據(jù)與金融報文的一級標(biāo)簽對應(yīng)的一級標(biāo)簽校驗器生成第三配置表,一級標(biāo)簽是由至少一個的子標(biāo)簽組成,對應(yīng)的,一級標(biāo)簽校驗器由至少一個的基礎(chǔ)xml標(biāo)簽校驗器組成。不同金融機(jī)構(gòu)金融報文的子標(biāo)簽的路徑不同或者相同,本發(fā)明的實施例中,為了使一級標(biāo)簽校驗器能校驗所有的結(jié)構(gòu)不同的金融報文,可以對一級標(biāo)簽校驗器添加對子標(biāo)簽的路徑進(jìn)行校驗??蛇x地,參見圖9,一級標(biāo)簽“報文基本信息”校驗配置表可以包括三個維度 的信息,一級標(biāo)簽“報文基本信息”校驗配置表的最左列為組成一級標(biāo)簽的子標(biāo)簽,最右列為基礎(chǔ)xml標(biāo)簽校驗器,中間列為不同金融機(jī)構(gòu),子標(biāo)簽的路徑。
s604:獲取金融報文,并對金融報文進(jìn)行解析以獲取金融報文的子標(biāo)簽。
其中,金融報文用于使各個金融機(jī)構(gòu)之間進(jìn)行線上業(yè)務(wù)溝通,各個金融機(jī)構(gòu)可以例如國內(nèi)外銀行機(jī)構(gòu)、清算機(jī)構(gòu),或者結(jié)算機(jī)構(gòu)等。金融報文例如國內(nèi)的二代支付系統(tǒng)報文、建行報文,國外的swift報文、boa報文,以及citi報文等。
金融報文遵循iso20022標(biāo)準(zhǔn)。
可以理解的是,金融報文可以由多級標(biāo)簽構(gòu)成,例如,金融報文包含一個或者多個一級標(biāo)簽,其中,每個一級標(biāo)簽包含一個或者多個的子標(biāo)簽,因此,隨著金融報文所屬的業(yè)務(wù)類型的不同,相同金融報文的同級標(biāo)簽可以具有不同或者相同的校驗值。
其中,根據(jù)金融報文所屬的業(yè)務(wù)類型,可以將金融報文劃分為支付類報文、非支付類報文、批量支付類報文,以及文件通知報文。
參見圖2,圖2為本發(fā)明實施例中金融報文的一級標(biāo)簽示意圖,其中,支付類報文的一級標(biāo)簽例如報文基本信息、原報文基本信息、報文業(yè)務(wù)渠道信息等;非支付類報文的一級標(biāo)簽例如報文基本信息、原報文基本信息、報文業(yè)務(wù)渠道信息等;批量支付類報文的一級標(biāo)簽例如批量包頭信息和批量組頭信息;文件通知報文的一級標(biāo)簽例如報文基本信息、原報文基本信息、路由信息等。
一個實施例中,參見圖3,每個一級標(biāo)簽包含一個或者多個的子標(biāo)簽,對圖2中的“業(yè)務(wù)處理信息”一級標(biāo)簽進(jìn)行細(xì)粒度示例,非支付類報文的一級標(biāo)簽“業(yè)務(wù)處理信息”中可以特有“業(yè)務(wù)狀態(tài)碼”子標(biāo)簽,支付類報文和文件通知報文特有“清算日期”和“處理狀態(tài)”子標(biāo)簽,而所有業(yè)務(wù)類型的金融報文共有“響應(yīng)返回碼”、“響應(yīng)描述信息”、“處理日期”、“軋差日期”、“軋差場次”,以及“業(yè)務(wù)參與機(jī)構(gòu)行號”子標(biāo)簽,其中,所有業(yè)務(wù)類型的金融報文共有的子標(biāo)簽的值和類型一致,即遵循iso20022標(biāo)準(zhǔn)。
本實施例中以通過可擴(kuò)展標(biāo)記語言(extensiblemarkuplanguage,xml)標(biāo)記金融報文示例。
進(jìn)一步,可選地,參見圖4和圖5,圖4為本發(fā)明實施例中以二代支付系統(tǒng)的cnaps報文(saps.360.001.01)的xml文件示意圖,圖5為本發(fā)明實施例中以花旗銀行報文citi報文的xml文件示意圖。
其中,標(biāo)簽<?xml>用于說明xml版本和解碼方式等信息;標(biāo)簽<document>用于說明xml命名空間,標(biāo)簽<?xml>和標(biāo)簽<document>是所有金融報文的必要標(biāo)簽。<bktocstmracctrpt>是cnaps報文saps.360.001.01的根標(biāo)簽;<msgid>是的子標(biāo)簽,其中,<msgid>子標(biāo)簽的路徑是<bktocstmracctrpt>/<grphdr>。相同<msgid>子標(biāo)簽在citi報文的路徑是<cstmrcdttrfinitn>/<grphdr>??梢岳斫獾氖?,雖然cnaps報文中的<msgid>子標(biāo)簽和citi報文中的<msgid>子標(biāo)簽的值、屬性,以及類型相同,但是路徑不相同,對于cnaps報文中的<credttm>子標(biāo)簽和citi報文中的<credttm>子標(biāo)簽,以此類推。
s605:獲取與金融報文所屬的業(yè)務(wù)類型對應(yīng)的目標(biāo)校驗器,其中,目標(biāo)校驗器包含至少一個的一級標(biāo)簽校驗器,每個一級標(biāo)簽校驗器包含至少一個的基礎(chǔ)xml標(biāo)簽校驗器。
參見圖10,圖10為本發(fā)明實施例中目標(biāo)校驗器的結(jié)構(gòu)示意圖,其中,圖10包括根據(jù)金融報文所屬的業(yè)務(wù)類型進(jìn)行分類的目標(biāo)校驗器101,一級標(biāo)簽校驗器102,以及基礎(chǔ)xml標(biāo)簽校驗器103。目標(biāo)校驗器由至少一個的一級標(biāo)簽校驗器組成,一級標(biāo)簽校驗器由至少一個的基礎(chǔ)xml標(biāo)簽校驗器組成。不同的目標(biāo)校驗器101中所包含的一級標(biāo)簽校驗器不同或者相同,且不同的目標(biāo)校驗器101中所包含的一級標(biāo)簽校驗器的個數(shù)不同或者相同。進(jìn)一步,可以理解的是,不同的一級標(biāo)簽校驗器102中所包含的基礎(chǔ)xml標(biāo)簽校驗器不同或者相同,且不同的一級標(biāo)簽校驗器102中所包含的基礎(chǔ)xml標(biāo)簽校驗器的個數(shù)不同或者相同。
一個可替換的實施例中,參見圖11,根據(jù)金融報文所屬的業(yè)務(wù)類型,可以 將金融報文劃分為支付類報文、非支付類報文、批量支付類報文,以及文件通知報文。可以理解的是,由于相同業(yè)務(wù)類型的金融報文包含的一級標(biāo)簽校驗器的總類可能相同,因此,可以根據(jù)金融報文的業(yè)務(wù)類型封裝四個通用校驗器,該通用校驗器包含至少一個的一級標(biāo)簽校驗器。
s606:從至少一個的基礎(chǔ)xml標(biāo)簽校驗器中獲取與子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器。
例如,在實際校驗的過程中,可以先判斷該金融報文所屬的業(yè)務(wù)類型,并獲取與金融報文所屬的業(yè)務(wù)類型對應(yīng)的通用校驗器作為目標(biāo)校驗器,后續(xù)從目標(biāo)校驗器中的至少一個的基礎(chǔ)xml標(biāo)簽校驗器中獲取與子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器即可,不需要遍歷所有子標(biāo)簽的基礎(chǔ)xml標(biāo)簽校驗器,減少了校驗金融報文的子標(biāo)簽需要的基礎(chǔ)xml標(biāo)簽校驗器的個數(shù),提升金融報文的校驗效率。
s607:從第一配置表中讀取與子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器的校驗值,以及從第二配置表中讀取金融報文的特征校驗器的校驗值。
本發(fā)明的實施例中,在獲取到金融報文的子標(biāo)簽后,可以從第一配置表中讀取與子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器的校驗值,其中,第一配置表是根據(jù)與金融報文的子標(biāo)簽對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器預(yù)先生成的,以及,從第二配置表中讀取金融報文的特征校驗器的校驗值,第二配置表是根據(jù)與金融報文的子標(biāo)簽對應(yīng)的特征校驗器預(yù)先生成的,可以實現(xiàn)根據(jù)子標(biāo)簽的鍵值從第一配置表、第二配置表中調(diào)取對應(yīng)校驗器的校驗值進(jìn)行校驗,不需要對不同路徑下的子標(biāo)簽進(jìn)行重復(fù)校驗,提升金融報文的校驗效率。
s608:根據(jù)基礎(chǔ)xml標(biāo)簽校驗器的校驗值對金融報文的子標(biāo)簽的值、屬性,以及類型進(jìn)行校驗。
例如,以cnaps報文為例,采用基礎(chǔ)xml標(biāo)簽校驗器對cnaps報文的子標(biāo)簽的值、屬性,以及類型進(jìn)行校驗可以示例如下,其中,基礎(chǔ)xml標(biāo)簽校驗器的校驗值可以包括基于iso20022標(biāo)準(zhǔn)的值、基于iso20022標(biāo)準(zhǔn)的屬性,以及 基于iso20022標(biāo)準(zhǔn)的類型,當(dāng)子標(biāo)簽為“預(yù)警值通知類型”時,基于iso20022標(biāo)準(zhǔn)的值可能為“enab”(預(yù)警開啟)或者“disa”(預(yù)警解除),假設(shè)cnaps報文子標(biāo)簽“預(yù)警值通知類型”的基于iso20022標(biāo)準(zhǔn)的值為“enab”,則當(dāng)接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的值為“enab”時,該子標(biāo)簽“預(yù)警值通知類型”的值合法,而當(dāng)接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的值為“disa”時,該子標(biāo)簽“預(yù)警值通知類型”的值不合法,以此完成對接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的值的校驗;基于iso20022標(biāo)準(zhǔn)的屬性可能為“[1..1]”(表示cnaps報文必須有子標(biāo)簽“預(yù)警值通知類型”,若接收到的cnaps報文沒有子標(biāo)簽“預(yù)警值通知類型”,則對接收到的cnaps報文格式不能正常解析)或者“[0..1]”(表示cnaps報文可有可無子標(biāo)簽“預(yù)警值通知類型”,若接收到的cnaps報文沒有填寫子標(biāo)簽“預(yù)警值通知類型”,cnaps報文格式不會解析錯誤),以此完成對接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的屬性的校驗;基于iso20022標(biāo)準(zhǔn)的類型例如為“max4text”(文本格式,包含字母和數(shù)字,最短長度為1,最大長度為4,長度超過4時,報錯),假設(shè)cnaps報文子標(biāo)簽“預(yù)警值通知類型”的基于iso20022標(biāo)準(zhǔn)的類型為“max4text”,則當(dāng)接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的類型為“12x”時,該子標(biāo)簽“預(yù)警值通知類型”的值合法,而當(dāng)接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的類型為“12345”時,該子標(biāo)簽“預(yù)警值通知類型”的值不合法,以此完成對接收到的cnaps報文子標(biāo)簽“預(yù)警值通知類型”的值的校驗。基于iso20022標(biāo)準(zhǔn)的類型還可以例如,maxnnumerictext,表示數(shù)字串,最少1位,最多n位的數(shù)字;isodate:表示日期,格式為yyyy-mm-dd;isodatetime:表示日期和時間,格式為yyyy-mm-ddthh:mm:ss。
s609:根據(jù)特征校驗器的校驗值對金融報文的子標(biāo)簽的特征點進(jìn)行校驗。
例如,在從第二配置表中讀取金融報文的特征校驗器的校驗值后,根據(jù)特征校驗器的校驗值對金融報文的子標(biāo)簽的特征點進(jìn)行校驗。
s610:從第三配置表中獲取與子標(biāo)簽的鍵值對應(yīng)的路徑校驗值。
本發(fā)明的實施例中,在獲取到金融報文的子標(biāo)簽后,還可以從第三配置表中獲取與子標(biāo)簽的鍵值對應(yīng)的路徑校驗值,其中,第三配置表是根據(jù)與金融報文的一級標(biāo)簽對應(yīng)的一級標(biāo)簽校驗器預(yù)先生成的,可以實現(xiàn)根據(jù)子標(biāo)簽的鍵值從第三配置表中調(diào)取對應(yīng)校驗器的校驗值進(jìn)行路徑校驗,在保證金融報文子標(biāo)簽路徑校驗的精確度的情況下,提升金融報文的校驗效率。
s611:根據(jù)對應(yīng)的路徑校驗值對金融報文的子標(biāo)簽的路徑進(jìn)行校驗。
例如,在從第三配置表中讀取金融報文的路徑校驗值后,根據(jù)路徑校驗值對金融報文的子標(biāo)簽的路徑進(jìn)行校驗。
本實施例中,通過增加一級標(biāo)簽對子標(biāo)簽的路徑校驗,使一級標(biāo)簽校驗器能適用于任何結(jié)構(gòu)不相同的金融報文的校驗,在保證金融報文子標(biāo)簽路徑校驗的精確度的情況下,提升金融報文的校驗效率。通過先判斷該金融報文所屬的業(yè)務(wù)類型,并獲取與金融報文所屬的業(yè)務(wù)類型對應(yīng)的通用校驗器作為目標(biāo)校驗器,后續(xù)從目標(biāo)校驗器中的至少一個的基礎(chǔ)xml標(biāo)簽校驗器中獲取與子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器即可,不需要遍歷所有子標(biāo)簽的基礎(chǔ)xml標(biāo)簽校驗器,減少了校驗金融報文的子標(biāo)簽需要的基礎(chǔ)xml標(biāo)簽校驗器的個數(shù),提升金融報文的校驗效率。通過獲取金融報文的子標(biāo)簽,并根據(jù)基礎(chǔ)xml標(biāo)簽校驗器的校驗值和特征校驗器的校驗值對金融報文進(jìn)行校驗,能夠有效提升金融報文的校驗效率。
圖12是本發(fā)明另一實施例提出的應(yīng)用于金融報文的校驗裝置的結(jié)構(gòu)示意圖。
其中,該應(yīng)用于金融報文的校驗裝置可以例如設(shè)置在支付系統(tǒng)中,本發(fā)明實施例對此不作限制。
本實施例的方法可以基于國際金融服務(wù)金融業(yè)通用報文標(biāo)準(zhǔn)(iso20022標(biāo)準(zhǔn))。
參見圖12,該裝置120包括:第一獲取模塊121、讀取模塊122,以及校驗?zāi)K123。其中,
第一獲取模塊121,用于獲取金融報文,并對金融報文進(jìn)行解析以獲取金融報文的子標(biāo)簽。
讀取模塊122,用于從第一配置表中讀取與子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器的校驗值,以及從第二配置表中讀取金融報文的特征校驗器的校驗值。
校驗?zāi)K123,用于根據(jù)基礎(chǔ)xml標(biāo)簽校驗器的校驗值和特征校驗器的校驗值對金融報文進(jìn)行校驗。
可選地,一些實施例中,參見圖13,該裝置120還包括:
第二獲取模塊124,用于獲取與金融報文所屬的業(yè)務(wù)類型對應(yīng)的目標(biāo)校驗器,其中,目標(biāo)校驗器包含至少一個的一級標(biāo)簽校驗器,每個一級標(biāo)簽校驗器包含至少一個的基礎(chǔ)xml標(biāo)簽校驗器。
第三獲取模塊125,用于從至少一個的基礎(chǔ)xml標(biāo)簽校驗器中獲取與子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器。
第四獲取模塊126,用于從第三配置表中獲取與子標(biāo)簽的鍵值對應(yīng)的路徑校驗值。
配置模塊127,用于根據(jù)與金融報文的子標(biāo)簽對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器生成第一配置表;根據(jù)與金融報文的子標(biāo)簽對應(yīng)的特征校驗器生成第二配置表。
配置模塊127還用于:根據(jù)與金融報文的一級標(biāo)簽對應(yīng)的一級標(biāo)簽校驗器生成第三配置表。
可選地,一些實施例中,參見圖13,校驗?zāi)K123還包括:
基礎(chǔ)信息校驗子模塊1231,用于根據(jù)基礎(chǔ)xml標(biāo)簽校驗器的校驗值對金融報文的子標(biāo)簽的值、屬性,以及類型進(jìn)行校驗。
特征點校驗子模塊1232,用于根據(jù)特征校驗器的校驗值對金融報文的子標(biāo)簽的特征點進(jìn)行校驗。
路徑校驗子模塊1233用于根據(jù)對應(yīng)的路徑校驗值對金融報文的子標(biāo)簽的路徑進(jìn)行校驗。
需要說明的是,前述對應(yīng)用于金融報文的校驗方法實施例的解釋說明也適用于該實施例的應(yīng)用于金融報文的校驗裝置120,其實現(xiàn)原理類似,此處不再贅述。
本實施例中,通過增加一級標(biāo)簽對子標(biāo)簽的路徑校驗,使一級標(biāo)簽校驗器能適用于任何結(jié)構(gòu)不相同的金融報文的校驗,在保證金融報文子標(biāo)簽路徑校驗的精確度的情況下,提升金融報文的校驗效率。通過先判斷該金融報文所屬的業(yè)務(wù)類型,并獲取與金融報文所屬的業(yè)務(wù)類型對應(yīng)的通用校驗器作為目標(biāo)校驗器,后續(xù)從目標(biāo)校驗器中的至少一個的基礎(chǔ)xml標(biāo)簽校驗器中獲取與子標(biāo)簽的鍵值對應(yīng)的基礎(chǔ)xml標(biāo)簽校驗器即可,不需要遍歷所有子標(biāo)簽的基礎(chǔ)xml標(biāo)簽校驗器,減少了校驗金融報文的子標(biāo)簽需要的基礎(chǔ)xml標(biāo)簽校驗器的個數(shù),提升金融報文的校驗效率。通過獲取金融報文的子標(biāo)簽,并根據(jù)基礎(chǔ)xml標(biāo)簽校驗器的校驗值和特征校驗器的校驗值對金融報文進(jìn)行校驗,能夠有效提升金融報文的校驗效率。
需要說明的是,在本發(fā)明的描述中,術(shù)語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對重要性。此外,在本發(fā)明的描述中,除非另有說明,“多個”的含義是兩個或兩個以上。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項或他們的組合來實現(xiàn):具有 用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(pga),現(xiàn)場可編程門陣列(fpga)等。
本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。
此外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理模塊中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。
上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。
盡管上面已經(jīng)示出和描述了本發(fā)明的實施例,可以理解的是,上述實施例是示例性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對上述實施例進(jìn)行變化、修改、替換和變型。