Files
2021-01-12 22:04:24 +08:00

162 lines
5.8 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Application name="lps" code="010" trace="yes">
<!--支付密码修改-->
<Transaction code="2150210" log_switch = '1'>
<!--从手机钱包卡信息表中读取应用序列号-->
<DynSentence name="QRY_LPSTCRD_SUBAC">
<Sentence>
SELECT SUB_AC,MAIN_AC FROM LPSTCRD WHERE MBL_NO=? AND CRD_STS!='2'
</Sentence>
<Fields>MBL_NO|</Fields>
</DynSentence>
<!-- 查询钱包序列号 -->
<DynSentence name='QRY_LPSTSUBAC_INFO'>
<Sentence>
SELECT SUB_AC FROM LPSTSUBAC WHERE MBL_NO=?
</Sentence>
<Fields>MBL_NO|</Fields>
</DynSentence>
<FlowCtrl>
<!-- 交易设置-->
<Set>CMD_CD=SUBSTR($PIN_DAT,1,2)</Set>
<!-- 主账户状态检查 -->
<Set>INP_DAT.MBLNO_OR_LOGID=$MBL_NO</Set>
<Set>INP_DAT.TX_CD=$GWA.TX_CD</Set>
<Call package="URM" function="CHK_USER_STS">
<Input>INP_DAT</Input>
<Output>OUT_DAT|MSG_CD</Output>
</Call>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<!--查询应用序列号和手机钱包号-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_LPSTCRD_SUBAC" />
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_LPSTSUBAC_INFO" />
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="URM20211" />
<Arg name="MsgDat" value="主账户未开通" />
</Exec>
<Return/>
</If>
<ElseIf condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00001" />
</Exec>
<Return/>
</ElseIf>
<Set>QU_IN.MBL_NO=$MBL_NO</Set>
<!-- 查询用户主账号 -->
<Exec func="URM:QueryUser">
<Arg name="_I_GWA" value="GWA"/>
<Arg name="_I_INP_DAT" value="QU_IN"/>
<Arg name="_O_OUT_DAT" value="QU_OUT"/>
</Exec>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD" />
</Exec>
<Return/>
</If>
<Set>MAIN_AC=@O.QU_OUT.AC_NO</Set>
</If>
<ElseIf condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00001" />
<Arg name="MsgDat" value="系统异常,交易失败"/>
</Exec>
<Return/>
</ElseIf>
<!--验证报文MAC-->
<Call package="LPS_PUB" function="CheckMessageMAC">
<Input>SUB_AC|PIN_DAT|</Input>
<Output>MSG_CD|</Output>
</Call>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD" />
</Exec>
<Return/>
</If>
<!--解密报文-->
<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="IS_SUCC(@O.MSG_CD)=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<Set>PIN_DAT = @O.PIN_DAT</Set> <!--解密成功,将解密报文赋给PIN_DAT节点-->
<!--报文解析-->
<Call package="LPS_PUB" function="MessageParse">
<Input>CMD_CD|PIN_DAT|</Input>
<Output>MSG_CD|STK_AREA|</Output>
</Call>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<!--报文解析失败-->
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<!-- 判断新密码与原密码是否相同-->
<If condition="IS_EQUAL_STRING(@O.STK_AREA.OPAY_PW,@O.STK_AREA.NPAY_PW)">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS40087"/>
<Arg name="MsgDat" value="新旧密码相同"/>
</Exec>
<Return/>
</If>
<!-- 支付密码修改 -->
<Set>GWA.BUS_CNL=STK</Set>
<Set>GWA.SYS_CNL=SMS</Set>
<Set>INP_DAT.MBL_NO=$MBL_NO</Set>
<Set>INP_DAT.PAY_PSWD_OLD=@O.STK_AREA.OPAY_PW</Set>
<Set>INP_DAT.PAY_PSWD_NEW=@O.STK_AREA.NPAY_PW</Set>
<Call package="URM_PUB" function="UPD_PAY_PSWD">
<Input>INP_DAT|</Input>
<Output>OUT_DAT|MSG_CD</Output>
</Call>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<!--支付密码修改失败-->
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<!--下发成功短信给用户-->
<Set>SMS_CD=LPS008</Set>
<Call package="LPS_PUB" function="SendShortMessage"/>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00000" />
<Arg name="MsgDat" value="支付密码修改成功"/>
</Exec>
</FlowCtrl>
</Transaction>
</Application>