310 lines
11 KiB
XML
310 lines
11 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Application name="lps" trace="yes">
|
|
|
|
<!--异地未完成交易上送STK-->
|
|
<Transaction code="2110010" 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,USR_NO,CRD_STSW
|
|
FROM LPSTCRD
|
|
WHERE SUB_AC=?
|
|
</Sentence>
|
|
<Fields>SUB_AC|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QRY_CMMTCCPI_PROV"> <!--根据城市代码查询省代码-->
|
|
<Sentence>
|
|
SELECT PROV_CD
|
|
FROM CMMTCCPI
|
|
WHERE CITY_CD=?
|
|
</Sentence>
|
|
<Fields>CITY_CD|</Fields>
|
|
</DynSentence>
|
|
|
|
<FlowCtrl>
|
|
|
|
<!--查询应用序列号-->
|
|
<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> <!--在报文中取命令类型字段-->
|
|
<Set>CMD_VER=SUBSTR($PIN_DAT,3,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="MessageDecrypt">
|
|
<Input>CMD_CD|CMD_VER|SUB_AC|PIN_DAT|</Input>
|
|
<Output>PIN_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>
|
|
<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">
|
|
<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>CITY_CD=@O.STK_AREA.CTY_CD</Set> <!--获取商户的城市代码-->
|
|
|
|
<!--查询商户省代码-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_CMMTCCPI_PROV"/>
|
|
</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="LPS20054"/>
|
|
<Arg name="MsgDat" value="城市代码错误!"/>
|
|
</Exec>
|
|
<Set>RSL_CD=01</Set>
|
|
<Goto>END</Goto>
|
|
</ElseIf>
|
|
|
|
<Set>MERC_PROV=$PROV_CD</Set> <!--获得商户省代码-->
|
|
|
|
<!--使用企业运营代码 + 省代码调用用户模块【商户商户运营代码查询】获得商户编号-->
|
|
<Set>INP_DAT_MERC.MERC_PROV=$MERC_PROV</Set> <!--商户归属省代码-->
|
|
<Set>INP_DAT_MERC.MERC_CORP_ID=SUBSTR(@O.STK_AREA.CUS_DAT,5,6)</Set> <!--企业运营代码-->
|
|
<Exec func="URM:QueryMerchCorp">
|
|
<Arg name="_I_INP_DAT" value="INP_DAT_MERC"/>
|
|
<Arg name="_O_OUT_DAT" value="OUT_DAT_MERC"/>
|
|
</Exec>
|
|
<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>
|
|
<Else>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
</Exec>
|
|
<Set>MERC_ID=@O.OUT_DAT_MERC.MERC_ID</Set>
|
|
</Else>
|
|
|
|
<!--向账户模块发起【账户 商户存入接口】-->
|
|
<Set>INP_DAT_DEP.USR_NO=$USR_NO</Set> <!--内部用户号-->
|
|
<Set>INP_DAT_DEP.MERC_ID=$MERC_ID</Set> <!--商户编号-->
|
|
<Set>INP_DAT_DEP.CAP_TYP1=1</Set> <!--资金种类-->
|
|
<Set>INP_DAT_DEP.AMT1=@O.STK_AREA.TX_AMT</Set> <!--存入金额-->
|
|
<Exec func="ACM:MercDeposit">
|
|
<Arg name="_I_GWA" value="GWA"/>
|
|
<Arg name="_I_INP_DAT" value="INP_DAT_DEP"/>
|
|
<Arg name="_O_OUT_DAT" value="OUT_DAT_DEP"/>
|
|
</Exec>
|
|
<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>
|
|
<Else>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
</Exec>
|
|
</Else>
|
|
|
|
<!--向账户模块发起【账户 子账户支取接口】-->
|
|
<Set>INP_DAT_AWD.USR_NO=$USR_NO</Set> <!--内部用户号-->
|
|
<Set>INP_DAT_AWD.APP_SEQ_NO=$SUB_AC</Set> <!--应用序列号-->
|
|
<Set>INP_DAT_AWD.CAP_TYP=1</Set> <!--资金种类-->
|
|
<Set>INP_DAT_AWD.AMT=@O.STK_AREA.TX_AMT</Set> <!--支取金额-->
|
|
<Set>INP_DAT_AWD.OD_LMT=@O.STK_AREA.OVR_LMT</Set> <!--透支限额-->
|
|
<Exec func="ACM:PurseAccountWithdraw">
|
|
<Arg name="_I_GWA" value="GWA"/>
|
|
<Arg name="_I_INP_DAT" value="INP_DAT_AWD"/>
|
|
<Arg name="_O_OUT_DAT" value="OUT_DAT_AWD"/>
|
|
</Exec>
|
|
<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>
|
|
<Else>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
</Exec>
|
|
</Else>
|
|
|
|
<!-- O.STKAREA输出到ETF树 -->
|
|
<Set>ETF=@O.STK_AREA[~idx]</Set>
|
|
|
|
<!--登记异地未上传记录-->
|
|
<Exec func="PUB:InsertRecord">
|
|
<Arg name="TblNam" value="LPSTNSND"/>
|
|
</Exec>
|
|
<If condition="~RetCod = 1">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20053"/>
|
|
<Arg name="MsgDat" value="登记异地未上传交易失败"/>
|
|
</Exec>
|
|
<Set>RSL_CD=01</Set>
|
|
</If>
|
|
|
|
<Set>RSL_CD=00</Set> <!--交易处理成功-->
|
|
|
|
<Label>END</Label>
|
|
|
|
<!--下行报文组织-->
|
|
<Set>CMD_CD=18</Set>
|
|
<Set>CRD_BAL=@O.STK_AREA.CRD_BAL</Set>
|
|
<Set>CRD_TXN_SEQ=@O.STK_AREA.CRD_TXN_SEQ</Set>
|
|
<Set>OVR_LMT=@O.STK_AREA.OVR_LMT</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)"> <!--生成报文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>
|
|
|
|
<!--返回成功-->
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
</Exec>
|
|
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
|
|
</Application>
|
|
|