使用 DB2 pureXML 和 WebSphere Transformation Extender 處理 SEPA 支付
Danielle Vann, WTX 諮詢軟體工程師, IBM
Jim Hobler, WTX 高階軟體工程師, IBM
轉自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0904sepapayments/index.html
WebSphere® Transformation Extender 和 WTX Pack for SEPA 提供各種轉換和檢驗過程,支援與用於 SEPA 支付的 European Payments Council 實現進行互動。本文講解如何使用 DB2® pureXML™ 為有效的 SEPA 支付實現完整的儲存解決方案,解釋在處理支付拒絕或返回時如何檢驗原始文件。
什麼是 WebSphere Transformation Extender (WTX)?
WTX 是 IBM 的通用資料轉換和檢驗引擎。WTX 是一種真正的多對多轉換設計和開發工具,具有容易使用的拖放介面。WTX 解決方案還是跨平臺的。開發之後,可以把它們部署到各種作業系統上,比如 Windows®、Linux®、UNIX®、USS 和 MVS™。WTX 包含靈活的資料 “介面卡”,支援流行的資料庫引擎、Enterprise Resources Planning (ERP) 應用程式、Customer Relationship Management (CRM) 應用程式以及各種檔案或資料格式,比如 XML、HTML、S/MIME 和 COBOL Copybooks。
什麼是 WebSphere Transformation Extender Pack for SEPA?
WebSphere Transformation Extender Pack for SEPA 執行 European Payments Council (EPC) 指定的擴充套件檢驗規則,支援無需編寫程式碼的開發以及跨多種平臺進行重用和部署。WebSphere Transformation Extender Pack for SEPA 還可以在 SEPA 格式與內部應用程式和業務系統所需的格式(比如 DTAUS、MINOS、CFONB 和 BACS)之間進行轉換。
關於 WTX 產品系列的更多資訊,請參見 http://www.ibm.com/software/integration/wtx。
DB2 pureXML 支援以 XML 資料原有的層次化格式儲存、管理、檢驗和搜尋 XML 資料。開發人員不再需要編寫程式碼把 XML 資料分解為單獨的欄位,也不需要把 XML 儲存為大字串或 CLOB 資料型別。通過使用 pureXML,可以使用 SQL/XML 搜尋資料庫中的 XML 資料。DB2 pureXML 還可以在插入或更新時根據模式檢驗 XML。參考資料 包含關於 pureXML 的更多資訊。
本文演示如何:
- 使用 WTX 在 DB2 pureXML 資料庫中儲存有效的 SEPA Payments Clearing and Settlement 訊息 (pacs.008.001.01) 文件。
- 獲取這些 “原始” 文件以便建立和檢驗拒絕或返回訊息。
- 使用獲取的原始 SEPA 資料呼叫 WTX SEPA Pack 擴充套件檢驗。
本文描述的工作需要以下軟體:
- WTX Design Studio 8.2.0.3 或更高版本。
- DB2 Version 9.1 或更高版本。如果不打算在 z/OS® 平臺上使用這個示例,可以下載和使用免費的 DB2 Express-C 產品。
- WTX Command Server 8.2.0.3 或更高版本(如果希望在 UNIX 平臺上執行 WTX 對映)。
- WTX Pack for SEPA。只有在希望執行最後一個示例(執行 SEPA Validation Framework)時需要這個軟體。
WTX Design Studio 需要 Microsoft Windows(2000、XP、2003 Server 或 Vista)。
在本文中,講解如何使用一個簡單的 WTX 對映把 SEPA 資料直接插入 DB2 資料庫中。在實際的實現中,應該在使用 WebSphere Transformation Extender Pack for SEPA 檢驗支付資料之後呼叫這個對映。
下載 WTXSEPAExample.zip 並把它解壓到一個臨時位置。這會建立一個名為 WTXSEPAExample 的目錄(資料夾),其中包含本文的 Eclipse 專案、對映、樹和示例資料。示例假設在 c:\temp 目錄中建立這個目錄。請根據需要調整下面的命令。要想在 Windows 計算機上執行這些命令,可以使用 DB2 Control Center 的 Command Editor 或 DB2 命令視窗。下面的示例使用後者。如果要在 z/OS 系統上設定資料庫,請使用 z/OS 資料庫設定說明 中的步驟。
為了開啟一個 DB2 命令視窗,啟動 MS-DOS 命令提示,進入下載的目錄並執行 db2cmd 和 db2 命令,見清單 1。
cd c:\temp\WTXSEPAExample db2cmd db2
在 DB2 命令提示上,執行清單 2 中的語句以建立資料庫。
create database SEPA using codeset utf-8 territory US
模式需要註冊,但是由於模式的大小,首先需要增加應用程式堆的大小。在建立資料庫之後,執行清單 3 中的命令。
connect to SEPA UPDATE DB CFG USING APPLHEAPSZ 40000 UPDATE DB CFG USING CATALOGCACHE_SZ 100000
下載的包包含 SEPA 使用的 UNIFI 模式。在 DB2 命令視窗中,執行清單 4 中的程式碼註冊這些模式。
register xmlschema 'pacs.002.001.02.xsd' from 'schemas/pacs.002.001.02.xsd' \ as SEPADMIN.pacs_002_001_02 complete xmlschema SEPADMIN.pacs_002_001_02 register xmlschema 'pacs.008.001.01.xsd' from 'schemas/pacs.008.001.01.xsd' \ as SEPADMIN.pacs_008_001_01 complete xmlschema SEPADMIN.pacs_008_001_01
注意:如果出現錯誤 DB21107E,“An error has occurred when accessing the file”,那麼應該檢查是否已經切換到了示例目錄(見 清單 1)。
下面要建立一個表,其中包含一個 XML 資料型別的列、一個包含文件 ID 的列和一個包含註釋的列。執行清單 5 中的 CREATE TABLE 語句。
create table SEPADMIN.SEPAMESSAGES \ (ID varchar(60) PRIMARY KEY NOT NULL, COMMENT VARCHAR(500), DATA XML)
對於 z/OS,可以使用 SPUFI、Admin Tool 或 DataStudio 輸入建立資料庫和註冊模式的 DDL。
CREATE DATABASE SEPA;
下載的包包含 SEPA 使用的 UNIFI 模式。使用清單 6 中的程式碼註冊這些模式。
REGISTER XMLSCHEMA 'pacs.002.001.02.xsd' FROM file://pacs.002.001.02.xsd AS SEPADMIN.pacs_002_001_02 COMPLETE REGISTER XMLSCHEMA pacs.008.001.01.xsd FROM file://pacs.008.001.01.xsd' AS SEPADMIN.pacs_008_001_01 COMPLETE
下面要建立一個表,其中包含一個 XML 資料型別的列、一個包含文件 ID 的列和一個包含註釋的列。執行清單 8 中的 CREATE TABLE 語句。
create table SEPADMIN.SEPAMESSAGES(ID varchar(60) PRIMARY KEY NOT NULL, COMMENT VARCHAR(500), DATA XML)
前面解壓的 zip 檔案包含下面 WTX 物件和示例 SEPA 資料。使用 WTX 填充前面建立的資料庫。
- WTX 型別樹
- WTX 對映源
- WTX Database (MDQ) 檔案
- 在 WTX Database Interface Designer 中開啟 SEPA.mdq 檔案。
圖 1. WTX Database Interface Designer
- 可以使用原生連線驅動程式或 ODBC 連線到資料庫。更多資訊請參考 WTX Database Interface Designer 的文件。這個示例使用原生 DB2 連線。
- 右鍵單擊 SEPA 資料庫名並選擇 Edit。
- 展開 Database Source。這是一個下拉選單。選擇前面建立的資料庫(SEPA,除非前面使用了其他名稱)。還應該在 Security 部分中輸入自己的 DB2 使用者 ID 和密碼。如果在 PC 上執行 DB2 的本地拷貝(例如 DB2 Express),那麼根據安裝 DB2 的方式不同,可能可以清空 User ID 和 Password 框。
圖 2. Data Source and Security Settings 對話方塊
- 選擇 OK 退出配置對話方塊。
- 通過展開 SEPA 資料庫 (+) 並雙擊 Tables 部分,測試資料庫連線。如果連線設定正確,就會開啟 Generate Type Tree from Tables 對話方塊。
圖 3. 如果資料庫連線成功,Generate Type Tree 對話方塊會顯示完整的表列表
- 儲存 SEPA.mdq 並關閉 WTX Database Interface Designer。
- 開啟 WTX Design Studio 並匯入 zip 檔案中的 WTX 專案。為此,選擇 File... Import,然後選擇 General... Existing Projects 把這個專案匯入自己的工作空間。瀏覽到建立的示例目錄 (WTXSEPAExample),然後選擇 Next。Import Projects 對話方塊出現,其中已經選擇了 WTXSEPAExample。單擊 Finish。為了確認是否成功地建立了專案,在 WTX Extender Navigator 中展開 Maps。如果出現對映 “sepa_db2.mms”,就說明匯入成功了。
- 在 Design Studio 中開啟 sepa_db2.mms WTX 源對映並選擇 data_insert 對映。這個對映把資料插入資料庫中。輸入卡 (InputXML) 包含作為源的有效 SEPA XML 文件,輸出卡 (DBInsert) 將用正確的設定把輸入對映到資料庫中。
圖 4. data_insert 對映
- 如果需要,可以通過編輯輸入卡 (InputXML) 把輸入檔案改為您選擇的有效 SEPA 支付訊息。當前的設定把示例資料輸入到 DB2 pureXML 資料庫中,不需要編輯對映卡。
- 選擇工具欄中的 Map,然後選擇 Build 來構建對映。 注意:如果在非 Windows 平臺上執行對映,那麼應該選擇 Maps 選單中的 Build for Specific Platform 選單項。
- 如果在非 Windows 作業系統上執行,那麼必須通過二進位制傳輸部署對映、模式和資料。
- 選擇 Maps 選單中的 Run 執行對映。在任何 ESB 系統(比如 WTX Launcher 或 WebSphere Message Broker)中,都可以使用這個對映監視到達的資料,然後自動地把資料輸入資料庫中。在 UNIX 平臺上執行對映需要使用 WTX Command Server。關於在非 Windows 平臺上執行對映的說明,請參考 WTX 文件。
圖 5. 構建並執行 WTX 對映
- 成功地執行對映之後,支付文件已經被新增到資料庫中了。為了確認這一點,使用 DB2 Command Editor 或 CLI Editor 選擇 SEPAMESSAGES 表中的所有記錄,見清單 9。如果對映沒有成功執行,那麼在跟蹤檔案 data_insert.dbl 中尋找更多資訊。
SELECT * from SEPADMIN.SEPAMESSAGES
圖 6. 使用 DB2 Command Editor 檢視插入的資料
圖 7. DB2 Command Editor 查詢結果
獲取原始 SEPA 支付文件主要用於在 SEPA 中建立拒絕或返回訊息。下面向一個 WTX 對映傳遞要拒絕或返回的訊息的交易 ID,從而演示如何獲取原始 SEPA 支付文件。
- 如果還沒有匯入專案,那麼執行前面的步驟 1 - 3。
- 在 Design Studio 中開啟 sepa_db2.mms WTX 源對映並選擇 query_txid 對映。
圖 8. 開啟 ‘query_txid’ 對映
- 編輯 TxID 輸入卡,把 Echo 輸入改為要在資料庫中查詢的有效交易 ID。這個值是原始支付訊息中的 Credit Transfer Transaction Information\Transaction ID 元素,並與拒絕訊息中的 Transaction Information and Status\Original Transaction ID 相關聯。提供的預設值是 ‘pacs008\3’。如果使用示例資料執行了前面的資料插入示例,就會找到這個交易。
- 構建並執行 ‘query_txid’ 對映。輸出卡 2 的資料將包含與交易 ID 對應的完整 XML 訊息。
使用示例對映的輸出執行 SEPA 檢驗框架(可選 —— 必須安裝 WebSphere Transformation Extender Pack for SEPA)
可以在 WebSphere Transformation Extender Pack for SEPA 檢驗中使用示例 'query_txid' 對映的輸出。WebSphere Transformation Extender Pack for SEPA 會對 SEPA 文件執行擴充套件檢驗。
在檢驗拒絕或返回資料時,WebSphere Transformation Extender Pack for SEPA 必須獲得原始的支付訊息,而這正是 'query_txid' 對映的作用。
這個示例假設已經安裝了 WTX Pack for SEPA,構建了所有對映並把 'xliff.dtd' 複製到了 mapsandschemas 目錄中。
在這個示例中,要建立一個呼叫 SEPA 檢驗框架對映的對映。對於實際的實現,應該刪除這個對映;在從資料庫成功地獲取原始資料之後,query_txid 對映可以直接呼叫 WebSphere Transformation Extender Pack for SEPA 檢驗。
呼叫 Pack for SEPA 檢驗對映的步驟:
- 在 Design Studio 中開啟 ‘sepa_db2.mms’ WTX 源對映並選擇 Call_Validation 對映。
注意:這個示例假設已經在 “C:\IBM\WebSphere Transformation Extender 8.2” 中安裝了 WTX SEPA Pack version 4.2.3。如果安裝了更新的版本或安裝在另一個位置,那麼應該相應地修改輸出卡 CallSEPAValidation。 - 輸入卡 1 包含要檢驗的原始資料的內容。這是一個 SEPA Reject 訊息 (pacs.002.001.02)。輸入卡 2 是前面通過執行 ‘query_txid’ 對映獲取的訊息。如果需要,可以修改這些預設值。對於這個示例,在示例拒絕訊息中有 SEPA 檢驗錯誤。如果沒有錯誤,WTX SEPA 檢驗對映就不會返回任何資訊。
- 這個對映的輸出是一個檔案,它返回結果。
- 構建並執行 Call_Validation。
注意:如果遇到錯誤 “Fail function aborted map”,那麼可能是還沒有安裝 WTX SEPA pack,或者前面步驟 1 中指定的位置不正確。如果遇到 “One or more inputs are invalid”,那麼要檢查是否把 xliff.dtd 複製到了 mapsandschemas 目錄中。 - SEPA 檢驗的結果出現在與 sepvalid.mmc 對映相同的目錄中(也就是安裝 Pack for SEPA 的地方)。輸出檔案的預設名稱是 ‘seperror.xml’。執行示例資料的輸出在瀏覽器中的樣子見圖 9:
圖 9. WebSphere Transformation Extender Pack for SEPA 檢驗對映的結果
可以使用 WTX 和 DB2 pureXML 增強 SEPA 資料的處理和儲存。本文講解了如何設定資料庫、如何儲存 SEPA 訊息以及如何使用惟一標識獲取這些訊息。
儲存了 SEPA 資料之後,就可以按照多種方式增強 SEPA 過程。通過在使用 WTX Launcher 或 WebSphere Message Broker 的系統中實現這些對映,可以在接收和檢驗支付訊息時自動地把它們儲存到資料庫中。在接收到支付拒絕或返回時,系統可以獲取交易 ID 並把值傳遞給示例 ‘query_txid’ 對映。
衷心感謝 Christian Daser、Kirsten Ann Larsen、Susan Malaika、Cindy Saracco 和 Guogen Zhang 為本文提供意見和幫助!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-614791/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 WebSphere Message Broker 的 WebSphere Transformation Extender 外掛WebORM
- 使用WebSphere Service Registry and Repository 作為DB2 pureXML模式的主登錄檔WebDB2XML模式
- WebSphere和DB2效能問題的發現和處理KPWebDB2
- 使用 Java API 處理 WebSphere MQ 大訊息JavaAPIWebMQ
- PHP處理-微信支付PHP
- 使用 WebSphere Business Events V6.1 進行業務事件處理Web行業事件
- WebSphere Business Events 進行業務事件處理Web行業事件
- Db2 日誌處理二DB2
- WebSphere Business Monitor 事件處理內幕揭祕Web事件
- 使用JAXB處理JAVA和XMLJavaXML
- db2批次處理doubt transactionsDB2
- IBM DB2 日誌處理一IBMDB2
- IBM WebSphere Portal Web Content Manager 和 DB2 調優指南IBMWebDB2
- 支付類系統資料處理和資料中臺的資料處理方式有什麼不同?
- Java 異常處理:使用和思考Java
- 【支付BUG】呼叫某系統支付介面異常處理小記
- Websphere Adapter 中錯誤處理的原理與應用WebAPT
- 測試支付介面怎麼處理支付成功這種場景呢?
- 6使用 loader 處理 CSS 和 SassCSS
- 支付處理器 API :將你的支付應用帶到 Web 中來APIWeb
- 多對一處理 和一對多處理的處理
- 【問題處理】使用trim和 replace處理字串中的換行符號字串符號
- 使用WebSphere Integration Developer和WebSphere Process Server的二進位制Jar檔案WebDeveloperServerJAR
- 如何使用find和xargs查詢和處理檔案
- PHP錯誤處理和異常處理PHP
- 關於Yii2 微信支付回撥地址處理
- 【趙劼】分清ASP.NET AJAX中的Extender和Behavior模型ASP.NET模型
- Apache Beam,批處理和流式處理的融合!Apache
- 使用 Grapicmagick 和 Im4java 處理圖片APIJava
- 使用Spark和Cassandra進行資料處理(一)Spark
- 使用AD+處理崩潰和掛起 (轉)
- flink:StreamExecutionEnvironment、DataStream和Transformation與StreamOperatorASTORM
- SFP和SDP處理
- 使用Hive處理WordCountHive
- 命令列技巧:使用 find 和 xargs 查詢和處理檔案命令列
- Python錯誤處理和異常處理(二)Python
- Python異常處理 try、except和else的使用Python
- 使用AD+處理崩潰和掛起(2) (轉)