步驟:
1. 在 action 中使用傳送報文,要指定報文在 router 端的交易名稱
2. 如果使用 supe.execute(context) 來傳送,不需要第一步
3. 配置從網銀到 router 的 xml 報文
4. 根據網銀交易名匹配到 router 端交易名(這裡對應的是第 2 步,如果用第一步的方式,可以跳過)
5. 在 router 端配置交易,記住命名空間,交易名等要一致
6. 配置報文編碼,轉換為主機的編碼(交易名對應的數字)
7. 配置 router 到主機的報文
8. 配置主機返回 router 的報文
9. 配置 router 返回網銀的報文
傳送報文配置 xml ,以查詢卡資訊為例 (cifactsqrybylhw) :
1. 在 action 中呼叫這句,就是用乙個 map 來裝載返回的報文內容
tohostmap.put(constants. host_transaction_code , "pquery.cifactsqrybylhw" );
雙引號中的是在 router 端呼叫的交易名稱,前半部為命名空間(同時也是 報文的名稱)
// 還要使用這個來傳送
map resultmap=(map) this .issuehosttrs(context,map);
使用這種方式傳送報文,由於指定了 router 端的交易名稱,所以不需要在 resolver.xml 中配置
也可以使用 super.execute(context) 來傳送報文,這樣上面兩步都不用了,不過一樣要引入父類 parent="basequeryaction" ,使用這種方式傳送報文,報文交易名必須在 common 包下的 resolver.xml 中配置(否則不知道該呼叫 router 端的那個交易)
2. 配置從網銀到路由的報文 fsegquery.cifactsqrybylhw.xml ,放在當前交易包下 ,
config.outbound.csxml.packets
< segment >
< xmltag >< string name = "cardno" >
< xmltag >< string name = "pageno" defaultvalue = "0001" >
格式就是 fseg+ 報文名稱 .xml
3. 在 resolver.xml 中配置報文名稱所對應的交易 id ,在 router 端還要呼叫這個交易去發報文到前置。該 xml 在網銀端 common 包下(如果在第 1 步中指定了交易名稱,此步可以跳過,它其實是根據網銀交易名匹配 router 到主機的交易名)
< param name = "cifactsqrybylhw" > pquery.cifactsqrybylhw
前面的 name 就是網銀交易名稱,這個一般 router 中的和要發報文的交易都是相同的,後面的是報文名稱,同時也是在 router 中的交易名稱, pquery 為命名空間
4. 在 router 包的 xml 內定義交易,就是上面的那個 id ,注意 namespace 和 transaction 要與匹配的一致
< transaction id = "cifactsqrybylhw" template = "publicquerytemplate" >
< actions >
< ref name = "action" > cifactsqrybycardqueryaction
這裡是在 router 中定義的,一般查詢就是用 publicquerytemplate ,有操作的用 publictwophasetrstemplate
5. 配置從路由到前置(主機)的報文 fsegpquery.cifactsqrybylhw.xml ,放在 router 包,
config.pquery.outbound.gdrcu.packets
< segment >
< xmltag tagname = "card_no" >< string name = "cardno" >
< xmltag tagname = "page_no" >< string name = "pageno" >
格式就是 fseg+ 報文名稱 .xml
6. 在 router 端定義報文對應的介面名稱,就是你所發報文與介面的對應關係,因為主機使用的是自己的編碼,而不是網銀的編碼
< param name = "pquery.cifactsqrybylhw" > 11130004
7. 配置前置到路由 router 的返回報文 pquery.cifactsqrybylhw.xml ,放在
rotuer 端
(經過第 6 步的轉換,這裡自動由 p11130004.xml 變為 pquery.cifactsqrybylhw.xml)
< mapalias name = "parse" >
< elementalias name = "currency" alias = "curreny" />
< elementalias name = "acctstate" alias = "acct_status" />
格式就是 p+ 報文名稱 .xml
如果返回的 是 list ,如下:
< mapalias name = "parse" >
< mapalias name = "list" alias = "list" >
< elementalias name = "acno" alias = "acct_no" />
8. 配置路由router到網銀的返回報文fsegpquery.cifactsqrybylhw.xml,放在
router 端 config.inbound.csxml.packets
< segment >
< xmltag >
< idxfield name = "list" >
< group name = "map" >
< xmltag >< string name = "acno" >
< xmltag >< string name = "acflag" >
格式就是 fseg+ 報文名稱 .xml
如果返回的是 map ,不是 list ,那麼如下寫:
< segment >
< xmltag >< string name = "acctno" >
< xmltag >< string name = "acname" >
DHCP SendPacket 傳送報文
函 數 名 dhcp sendpacket 功能描述 傳送報文 輸入引數 輸入的引數型別統一為小寫,對應的引數值區分大小寫 sendtype 傳送的埠,可以輸入 uni nni cni uni2 nni2 cni2 使用者側1 網路側1 級聯側1 使用者側2 網路側2 級聯側2 packet 傳送的...
PE框架從入門到放棄 報文傳送流程
pe框架傳送報文,適用於pe及vx技術 步驟 1.在action中使用傳送報文,要指定報文在router端的交易名稱 2.如果使用supe.execute context 來傳送,不需要第一步 3.配置從網銀到router的xml報文 4.根據網銀交易名匹配到router端交易名 這裡對應的是第2步...
傳送RST報文
file main.c author bearice created on 2009年12月31日,下午12 36 include stdio.h include stdlib.h include sys ioctl.h include sys types.h include sys socket....