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

211 lines
7.4 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Application name="lps" trace="yes">
<!--修改透支限额初始化响应STK-->
<Transaction code="2110030" log_switch="1">
<DynSentence name="QRY_LPSTCRD_SUBAC"> <!--通过手机号查询应用序列号-->
<Sentence>
SELECT SUB_AC
FROM LPSTCRD
WHERE MBL_NO=? AND CRD_STS &lt;&gt; '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=?
</Sentence>
<Fields>SUB_AC|</Fields>
</DynSentence>
<FlowCtrl>
<!--返回成功-->
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00000"/>
</Exec>
<!--查询应用序列号-->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_LPSTCRD_SUBAC"/>
</Exec>
<If condition="~RetCod=2" >
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS20055"/>
<Arg name="MsgDat" value="用户未开通手机钱包"/>
</Exec>
<Return/>
</If>
<!--在报文中取命令类型字段-->
<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>
<!--卡片端处理初始化请求失败-->
<If condition="IS_NOEQUAL_STRING(@O.STK_AREA.CRD_RSP_STS,9000)">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS20059"/>
<Arg name="MsgDat" value="修改透支限额初始化请求失败"/>
</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">
<Arg name="SqlCmd" value="QRY_LPSTCRD_STSMBL"/>
</Exec>
<If 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>
</If>
<!--判断钱包是否是锁定状态-->
<If condition="IS_EQUAL_STRING(SUBSTR($CRD_STSW,5,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),IS_EQUAL_STRING($CRD_STS,3))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS20056"/>
<Arg name="MsgDat" value="用户子账户状态异常"/>
</Exec>
<Set>RSL_CD=01</Set>
<Goto>END</Goto>
</If>
<Set>RSL_CD=00</Set> <!--交易处理成功-->
<Label>END</Label>
<Set>NOVR_LMT=000000</Set> <!--新的透支限额暂用固定值代替-->
<Set>TX_TYP=11</Set>
<!--生成修改透支限额MAC2-->
<Call package="LPS_PUB" function="CreateTransactionMAC2">
<Input>SUB_AC|@O.STK_AREA.RDM_NO1|@O.STK_AREA.CRD_EMK_SEQ|NOVR_LMT|GWA|</Input>
<Output>OUT_DAT|MSG_CD|</Output>
</Call>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<If condition="IS_SUCC($GWA.MSG_CD)"> <!--生成交易MAC2失败-->
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
</If>
<Return/>
</If>
<Set>MAC2=@O.OUT_DAT.MAC2</Set>
<!--下行报文组织-->
<Set>CMD_CD=1A</Set>
<Set>TXN_DT=@O.OUT_DAT.C_TX_DT</Set>
<Set>TXN_TM=@O.OUT_DAT.C_TX_TM</Set>
<Set>CRD_JRN_NO=@O.STK_AREA.CRD_JRN_NO</Set>
<Set>CRD_EMK_SEQ=@O.STK_AREA.CRD_EMK_SEQ</Set>
<Set>RDM_NO1=@O.STK_AREA.RDM_NO1</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)"> <!--生成报文MAC失败-->
<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="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>
<!--如果修改透支限额初始化处理成功,则短信通知用户(暂不通知用户)-->
<!--If condition="$RSL_CD=00">
<Set>SMS_CD=LPS010</Set>
<Call package="LPS_PUB" function="SendShortMessage"/>
</If-->
</FlowCtrl>
</Transaction>
</Application>