180 lines
6.7 KiB
XML
180 lines
6.7 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Application name="lps" trace="yes">
|
|
|
|
<!--空中充值同步-->
|
|
<Transaction code="2140030" log_switch="1">
|
|
<!-- 查询卡片信息 -->
|
|
<DynSentence name="QRY_LPSTCRD_INFO">
|
|
<Sentence>
|
|
SELECT CRD_STS,SUB_AC,CRD_STSW,MAIN_AC FROM LPSTCRD WHERE MBL_NO=? AND CRD_STS='1'
|
|
</Sentence>
|
|
<Fields>MBL_NO|</Fields>
|
|
</DynSentence>
|
|
<FlowCtrl>
|
|
<Set>CMD_CD=SUBSTR($PIN_DAT,1,2)</Set>
|
|
<!-- 获取卡片端流水号 -->
|
|
<Set>PIN_LEN=STRLEN($PIN_DAT)</Set>
|
|
<Set>JRN_NO_START=SUB($PIN_LEN,24)</Set>
|
|
<Set>CRD_JRN_NO=SUBSTR($PIN_DAT,$JRN_NO_START,8)</Set> <!-- 获取1.0卡片流水号 -->
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
</Exec>
|
|
<!--卡片状态查询-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_LPSTCRD_INFO"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20055"/>
|
|
<Arg name="MsgDat" value="用户尚未开通手机钱包"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=0">
|
|
<If condition="IS_EQUAL_STRING(SUBSTR($CRD_STSW,4,1),1)">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20092"/>
|
|
<Arg name="MsgDat" value="卡片被锁定无法进行充值同步"/>
|
|
</Exec>
|
|
<Set>RSL_CD=01</Set>
|
|
<Goto>END</Goto>
|
|
</If>
|
|
<Set>~MSG_DAT=查询卡片状态成功</Set>
|
|
</ElseIf>
|
|
<Else>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00001"/>
|
|
<Arg name="MsgDat" value="数据库操作出错"/>
|
|
</Exec>
|
|
<Return/>
|
|
</Else>
|
|
|
|
<!-- 验证报文MAC -->
|
|
<Call package="LPS_PUB" function="CheckMessageMAC">
|
|
<Input>SUB_AC|PIN_DAT|</Input>
|
|
<Output>MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000)">
|
|
<Set>~MSG_DAT=验证报文MAC失败</Set>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--解密充值同步报文-->
|
|
<If condition="IS_EQUAL_STRING($CMD_CD,13)"> <!--1.1卡片解密报文-->
|
|
<Call package="LPS_PUB" function="PasswordMessageDecrypt">
|
|
<Input>CMD_CD|SUB_AC|PIN_DAT|MAIN_AC|</Input>
|
|
<Output>PIN_DAT|MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Set>~MSG_DAT=解密失败</Set>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Set>TXN_DAT=@O.PIN_DAT</Set>
|
|
<!-- 报文解析 -->
|
|
<Call package="LPS_PUB" function="MessageParse">
|
|
<Input>CMD_CD|TXN_DAT|</Input>
|
|
<Output>MSG_CD|STK_AREA|</Output>
|
|
</Call>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Set>~MSG_DAT=报文解析失败</Set>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Set>CRD_JRN_NO=@O.STK_AREA.CRD_JRN_NO</Set> <!-- 获取1.1卡片流水号 -->
|
|
</If>
|
|
|
|
|
|
|
|
<!-- 调用用户-用户状态检查 -->
|
|
<!--用户-用户状态查询-->
|
|
<Set>INP_DAT.MBLNO_OR_LOGID=$MBL_NO</Set>
|
|
<Set>INP_DAT.TX_CD=$GWA.TX_CD</Set>
|
|
<Call package="URM_PUB" function="CHK_USER_STS">
|
|
<Input>INP_DAT|</Input>
|
|
<Output>OUT_DAT|MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Set>~MSG_DAT=用户状态异常</Set>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Set>RSL_CD=01</Set>
|
|
<Goto>END</Goto>
|
|
</If>
|
|
<If condition="IS_EQUAL_STRING($CMD_CD,13)">
|
|
<Set>TXN_DAT=@O.PIN_DAT</Set> <!--1.1解密后的报文-->
|
|
</If>
|
|
<Else>
|
|
<Set>TXN_DAT=$PIN_DAT</Set> <!--1.0原始报文-->
|
|
</Else>
|
|
|
|
<!--调用未确认信息同步组件-->
|
|
<Set>INP_DAT.CMD_CD=$CMD_CD</Set>
|
|
<Set>INP_DAT.TXN_DAT=$TXN_DAT</Set>
|
|
<Set>INP_DAT.SUB_AC=$SUB_AC</Set>
|
|
<Call package="LPS_PUB" function="UnverifiedMessageInStep">
|
|
<Input>INP_DAT|GWA|</Input>
|
|
<Output>MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Set>~MSG_DAT=未确认信息同步失败</Set>
|
|
<Set>RSL_CD=01</Set>
|
|
<Goto>END</Goto>
|
|
</If>
|
|
<Else>
|
|
<Set>~MSG_DAT=未确认信息处理完毕</Set>
|
|
<Set>RSL_CD=00</Set>
|
|
</Else>
|
|
|
|
<Label>END</Label>
|
|
<If condition="$CMD_CD=03"> <!-- 1.0版本 -->
|
|
<Set>CMD_CD=02</Set> <!-- 充值同步下行命令类型 -->
|
|
</If>
|
|
<Else> <!-- 1.1版本 -->
|
|
<Set>CMD_CD=12</Set> <!-- 充值同步下行命令类型 -->
|
|
</Else>
|
|
|
|
<!-- 组织报文 -->
|
|
|
|
<Call package="LPS_PUB" function="MessageBuild">
|
|
<Output>BK_TXN_DAT|MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Set>~MSG_CD=组织交易报文失败</Set>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 生成报文MAC -->
|
|
<Set>BK_TXN_DAT=@O.BK_TXN_DAT</Set>
|
|
<Call package="LPS_PUB" function="CreateMessageMAC">
|
|
<Input>SUB_AC|BK_TXN_DAT|</Input>
|
|
<Output>BK_TXN_DAT|MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Set>~MSG_CD=生成报文MAC失败</Set>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--下发钱包同步指令-->
|
|
<Set>SMS_CD=LPS800</Set>
|
|
<Set>BK_TXN_DAT=@O.BK_TXN_DAT</Set>
|
|
<Call package="LPS_PUB" function="SendShortMessage"/>
|
|
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
</Application>
|