zoukankan      html  css  js  c++  java
  • PE框架学习之道:PE框架——发送报文流程

    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>

  • 相关阅读:
    Big Data 應用:第二季(4~6月)台湾地区Game APP 变动分布趋势图
    大数据应用:五大地区喜新厌旧游戏APP类别之比较与分析
    Big Data應用:以"玩家意見"之數據分析來探討何謂"健康型線上遊戲"(上)
    Example:PanGu分詞系統-批次匯入新詞
    C#数据类型02--结构
    C#数据类型01--数组
    C#基础知识点
    陌生Layout属性
    LinearLayout(线性布局)
    Android--入门常识
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3325052.html
Copyright © 2011-2022 走看看