225 lines
7.7 KiB
XML
225 lines
7.7 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Application name="lps" trace="yes">
|
|
|
|
<!--钱包暂停STK-->
|
|
<Transaction code="2131010" log_switch="1">
|
|
|
|
<DynSentence name="QRY_LPSTCRD_SUBAC"> <!--通过手机号查询应用序列号-->
|
|
<Sentence>
|
|
SELECT SUB_AC
|
|
FROM LPSTCRD
|
|
WHERE MBL_NO=? AND CRD_STS <> '2'
|
|
</Sentence>
|
|
<Fields>MBL_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QRY_LPSTCRD_STSMBL"> <!--用应用序列号查询手机钱包卡的卡状态和手机号以及卡版本号-->
|
|
<Sentence>
|
|
SELECT CRD_STS,MBL_NO,CRD_VER,CRD_STSW
|
|
FROM LPSTCRD
|
|
WHERE SUB_AC=?
|
|
FOR UPDATE
|
|
</Sentence>
|
|
<Fields>SUB_AC|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="UPD_LPSTCRD_STS"> <!--更新手机钱包卡的状态-->
|
|
<Sentence>
|
|
UPDATE LPSTCRD SET CRD_STS='3',TM_SMP = ?
|
|
WHERE SUB_AC=?
|
|
</Sentence>
|
|
<Fields>SYS_TM_SMP|SUB_AC|</Fields>
|
|
</DynSentence>
|
|
|
|
<FlowCtrl>
|
|
|
|
<!--设置返回码-->
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
</Exec>
|
|
|
|
<!--查询应用序列号-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_LPSTCRD_SUBAC"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1" >
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS19999"/>
|
|
<Arg name="MsgDat" value="系统错误"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2" >
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20055"/>
|
|
<Arg name="MsgDat" value="用户未开通手机钱包"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<Set>CMD_CD=SUBSTR($PIN_DAT,1,2)</Set> <!--在报文中取命令类型字段-->
|
|
|
|
<!--报文MAC校验-->
|
|
<Call package="LPS_PUB" function="CheckMessageMAC">
|
|
<Input>SUB_AC|PIN_DAT|</Input>
|
|
<Output>MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--报文解析-->
|
|
<Call package="LPS_PUB" function="MessageParse">
|
|
<Input>CMD_CD|PIN_DAT|</Input>
|
|
<Output>MSG_CD|STK_AREA|</Output>
|
|
</Call>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</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))">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Set>RSL_CD=01</Set>
|
|
<Goto>END</Goto>
|
|
</If>
|
|
|
|
<!--检查钱包账户是否存在及更改钱包状态-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_LPSTCRD_STSMBL"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1" >
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS19999"/>
|
|
<Arg name="MsgDat" value="系统错误"/>
|
|
</Exec>
|
|
<Set>RSL_CD=01</Set>
|
|
<Goto>END</Goto>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2" >
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20055"/>
|
|
<Arg name="MsgDat" value="用户未开通手机钱包"/>
|
|
</Exec>
|
|
<Set>RSL_CD=01</Set>
|
|
<Goto>END</Goto>
|
|
</ElseIf>
|
|
|
|
<!--判断钱包是否是锁定状态-->
|
|
<If condition="IS_EQUAL_STRING(SUBSTR($CRD_STSW,4,1),1)">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20056"/>
|
|
<Arg name="MsgDat" value="用户子账户状态异常"/>
|
|
</Exec>
|
|
<Set>RSL_CD=01</Set>
|
|
<Goto>END</Goto>
|
|
</If>
|
|
|
|
<!--判断钱包是否为预开户或销户状态-->
|
|
<If condition="OR(IS_EQUAL_STRING($CRD_STS,0),IS_EQUAL_STRING($CRD_STS,2))">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20056"/>
|
|
<Arg name="MsgDat" value="用户子账户状态异常"/>
|
|
</Exec>
|
|
<Set>RSL_CD=01</Set>
|
|
<Goto>END</Goto>
|
|
</If>
|
|
|
|
<!--判断钱包是否为暂停状态-->
|
|
<If condition="IS_EQUAL_STRING($CRD_STS,3)">
|
|
<Set>RSL_CD=00</Set>
|
|
<Goto>END</Goto>
|
|
</If>
|
|
|
|
|
|
<!--更改钱包状态为暂停-->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UPD_LPSTCRD_STS"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1"> <!--数据库错误-->
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS19999"/>
|
|
<Arg name="MsgDat" value="系统错误"/>
|
|
</Exec>
|
|
<Set>RSL_CD=01</Set>
|
|
</If>
|
|
<ElseIf condition="~RetCod=2">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20055"/>
|
|
<Arg name="MsgDat" value="用户未开通手机钱包"/>
|
|
</Exec>
|
|
<Set>RSL_CD=01</Set>
|
|
</ElseIf>
|
|
<Else> <!--钱包暂停成功-->
|
|
<Set>RSL_CD=00</Set>
|
|
</Else>
|
|
|
|
<Label>END</Label>
|
|
|
|
<!--下行报文组织-->
|
|
<If condition="IS_EQUAL_STRING($CRD_VER,01)">
|
|
<Set>CMD_CD=13</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>CMD_CD=03</Set>
|
|
</Else>
|
|
<Set>SUB_CMD_CD=01</Set>
|
|
<Set>CRD_JRN_NO=@O.STK_AREA.CRD_JRN_NO</Set>
|
|
<Call package="LPS_PUB" function="MessageBuild">
|
|
<Output>BK_TXN_DAT|MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<If condition="IS_SUCC($GWA.MSG_CD)"> <!--报文组织失败-->
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
</If>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--生成报文MAC-->
|
|
<Call package="LPS_PUB" function="CreateMessageMAC">
|
|
<Input>SUB_AC|@O.BK_TXN_DAT|</Input>
|
|
<Output>BK_TXN_DAT|MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<If condition="IS_SUCC($GWA.MSG_CD)">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
</If>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--设置返回报文-->
|
|
<Set>BK_TXN_DAT=@O.BK_TXN_DAT</Set>
|
|
|
|
<!--下发钱包暂停指令-->
|
|
<Set>SMS_CD=LPS800</Set>
|
|
<Call package="LPS_PUB" function="SendShortMessage"/>
|
|
|
|
<!--如果手机钱包暂停成功,则短信通知用户-->
|
|
<If condition="$RSL_CD=00">
|
|
<Set>SMS_CD=LPS003</Set>
|
|
<Call package="LPS_PUB" function="SendShortMessage"/>
|
|
</If>
|
|
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
|
|
</Application>
|