PE框架——发送报文流程

来源:互联网 发布:php is numeric 漏洞 编辑:程序博客网 时间:2024/05/17 13:42
PE框架发送报文,适用于PE及VX技术

 

步骤:

1.action中使用发送报文,要指定报文在router端的交易名称

2.如果使用supe.execute(context)来发送,不需要第一步

3.配置从网银到routerxml报文

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" ></String></xmlTag>

<xmlTag><Stringname="PageNo"defaultValue="0001"></String>

</xmlTag>

</segment>

   

格式就是fseg+报文名称.xml


 

3.resolver.xml中配置报文名称所对应的交易id,在router端还要调用这个交易去发报文到前置。该xml在网银端common包下(如果在第1步中指定了交易名称,此步可以跳过,它其实是根据网银交易名匹配router到主机的交易名)

  <param name="CifActsQryByLHW">pquery.CifActsQryByLHW</param>

 

前面的name就是网银交易名称,这个一般router中的和要发报文的交易都是相同的,后面的是报文名称,同时也是在router中的交易名称,pquery为命名空间


 

4.router包的xml内定义交易,就是上面的那个id,注意namespacetransaction要与匹配的一致

  <transaction id="CifActsQryByLHW" template="publicQueryTemplate">

   <actions>

     <ref name="action">CifActsQryByCardQueryAction</ref>

   </actions>

</transaction>


 

这里是在router中定义的,一般查询就是用publicQueryTemplate,有操作的用publicTwoPhaseTrsTemplate


 

5.配置从路由到前置(主机)的报文fsegpquery.CifActsQryByLHW.xml,放在router包,

  config.pquery.outbound.gdrcu.packets

 <segment>

<xmlTag tagName="card_no"><String name="CardNo" ></String>

   </xmlTag>

<xmlTag tagName="page_no"><String name="PageNo" ></String>

   </xmlTag>

</segment>

 

格式就是fseg+报文名称.xml


 

6.router端定义报文对应的接口名称,就是你所发报文与接口的对应关系,因为主机使用的是自己的编码,而不是网银的编码

  <param name="pquery.CifActsQryByLHW">11130004</param>


 

 

 

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"/>

  </mapAlias>

 

 

 

格式就是P+报文名称.xml


 

如果返回的list,如下:

<mapAlias name="parse">

   <mapAlias name="List" alias="list" >

     <elementAlias name="AcNo" alias="acct_no"  />

    </mapAlias>

</mapAlias>


 

8.配置路由router到网银的返回报文fsegpquery.CifActsQryByLHW.xml,放在

  Routerconfig.inbound.csxml.packets

  <segment>

<xmlTag>

   <idxField name="List"  >

     <Group name="Map">

       <xmlTag><String name="AcNo"></String></xmlTag>

       <xmlTag><String name="AcFlag"></String></xmlTag>

   </Group>

</idxField>

</xmlTag>

 

</segment>

 

格式就是fseg+报文名称.xml


 

如果返回的是map,不是list,那么如下写:

<segment>

 

<xmlTag><String name="AcctNo" ></String></xmlTag>

<xmlTag><String name="AcName" ></String></xmlTag>

</segment>

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为手环不计步怎么办 小米手环不计步怎么办 小米手环骑自行车不计步数怎么办 放逐之城着火了怎么办 城市天际线地价过低怎么办 放逐之城铁采完怎么办 车钥匙反锁车内怎么办 眼镜用热水洗了怎么办 眼镜放平后眼镜腿不平怎么办 瞄准镜十字歪了怎么办 瞄准镜调到底了怎么办 墨镜镜片刮花了怎么办 usb小风扇不转怎么办 金属眼镜压歪了怎么办 眼镜被电焊打了怎么办 电焊闪的眼睛疼怎么办 烧了电焊眼睛疼怎么办 用了电焊眼睛痛怎么办 烧电焊脸上红痛怎么办 眼睛让电焊晃了怎么办 眼被电焊打了怎么办 眼镜弹簧腿坏了怎么办 眼镜框铰链坏了怎么办 金属眼镜框歪了怎么办 眼镜框螺丝断了怎么办 眼镜被压变形了怎么办 金属眼镜腿断了怎么办 眼镜弹簧腿断了怎么办 眼镜腿螺丝太紧怎么办 眼镜金属柄断了怎么办 金属眼镜腿折了怎么办 眼镜腿中间断了怎么办 塑料眼镜腿断了怎么办 眼镜上的螺丝拧不紧怎么办 眼镜的把坏了怎么办 把眼镜坐坏了怎么办 梦见眼镜腿掉了怎么办 眼镜的腿掉了怎么办 眼镜腿的螺丝掉了怎么办 爱大爱眼镜掉腿了怎么办 合金眼镜腿断了怎么办