251 lines
10 KiB
XML
251 lines
10 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Application name="lps" trace="yes">
|
|
|
|
<!--贴片卡好卡销户-->
|
|
<Transaction code="2135040" log_switch="1">
|
|
<DynSentence name="QRY_LPSTCRD_STSMBL"> <!--用贴片卡卡号查询手机钱包卡的卡状态和手机号-->
|
|
<Sentence>
|
|
SELECT MBL_NO,CRD_STS,MAIN_AC,USR_NO,CRD_STSW
|
|
FROM LPSTCRD
|
|
WHERE SUB_AC=? AND CRD_TYP='E'
|
|
</Sentence>
|
|
<Fields>SUB_AC|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="QRY_LPSTWEMK_INFO"> <!--用贴片卡卡号查询补登明细表是否存在待补登信息-->
|
|
<Sentence>
|
|
SELECT MAIN_AC,HLD_NO,ORD_NO,TX_AMT AMT
|
|
FROM LPSTWEMK
|
|
WHERE SUB_AC=? and (PROC_RSL ='U' OR PROC_RSL='C')
|
|
</Sentence>
|
|
<Fields>SUB_AC|</Fields>
|
|
</DynSentence>
|
|
|
|
<DynSentence name="UPD_LPSTWEMK_INFO"> <!--更新补登明细表补登状态-->
|
|
<Sentence>
|
|
UPDATE LPSTWEMK
|
|
SET PROC_RSL = 'F',TM_SMP = ?
|
|
WHERE SUB_AC=? and (PROC_RSL ='U' OR PROC_RSL='C')
|
|
</Sentence>
|
|
<Fields>SYS_TM_SMP|SUB_AC|</Fields>
|
|
</DynSentence>
|
|
|
|
<FlowCtrl>
|
|
<!-- 检查商户是否为营业厅 -->
|
|
<Call package="LPS_PUB" function="CheckMercTyp">
|
|
<Input>MERC_ID|</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>
|
|
|
|
<!--查询子账户是否存在及状态是否正常(钱包子账户注销组件件中对钱包卡的信息表及状态进行了查询)-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_LPSTCRD_STSMBL" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20060"/>
|
|
<Arg name="MsgDat" value="用户未开通手机钱包,或未与该贴片卡绑定"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=-1">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS19999"/>
|
|
<Arg name="MsgDat" value="系统错误"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<!--判断子账户状态,如果子账户已销户,则直接下发销户的短信-->
|
|
<If condition="IS_EQUAL_STRING($CRD_STS,2)">
|
|
<Set>RSP_CD=00</Set>
|
|
<Goto>END</Goto>
|
|
</If>
|
|
|
|
<!--判断子账户状态-->
|
|
<If condition="AND(IS_NOEQUAL_STRING($CRD_STS,1),IS_NOEQUAL_STRING($CRD_STS,3))">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20058"/>
|
|
<Arg name="MsgDat" value="子账户为预开户状态,交易失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--营业厅不是商户,所以暂不做商户信息及状态的检查-->
|
|
<If condition="ISNULL($TX_AMT)">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20061"/>
|
|
<Arg name="MsgDat" value="交易金额为空,上传报文出错"/>
|
|
</Exec>
|
|
<Set>RSP_CD=99</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Set>TX_AMT=AMTSIMPLEFMT($TX_AMT)</Set> <!--金额转化为十进制 -->
|
|
|
|
<!--如果钱包余额不为0,对余额进行处理-->
|
|
<If condition="DOUBLECMP($TX_AMT,4,0.00)">
|
|
<!--钱包账户的余额清零-->
|
|
<Set>INP_DAT_PUR.USR_NO=$USR_NO</Set>
|
|
<Set>INP_DAT_PUR.ORD_NO=$GWA.JRN_NO</Set>
|
|
<Set>INP_DAT_PUR.ORD_TYP=05</Set>
|
|
<Set>INP_DAT_PUR.APP_SEQ_NO=$SUB_AC</Set>
|
|
<Set>INP_DAT_PUR.TX_CD=2135040</Set>
|
|
<Set>INP_DAT_PUR.C_TX_DT=$GWA.TX_DT</Set>
|
|
<Set>INP_DAT_PUR.TX_TM=$GWA.TX_TM</Set>
|
|
<Set>INP_DAT_PUR.AC_TYP=101</Set>
|
|
<Set>INP_DAT_PUR.CAP_TYP=1</Set>
|
|
<Set>INP_DAT_PUR.AMT=$TX_AMT</Set>
|
|
<Set>INP_DAT_PUR.TX_TYP=07</Set> <!-- 反圈存 -->
|
|
<Set>INP_DAT_PUR.BUS_TYP=0701</Set>
|
|
<Exec func="ACM:PurseAccountWithdraw">
|
|
<Arg name="_I_GWA" value="GWA"/>
|
|
<Arg name="_I_INP_DAT" value="INP_DAT_PUR"/>
|
|
<Arg name="_O_OUT_DAT" value="OUT_DAT_PUR"/>
|
|
</Exec>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Set>RSP_CD=99</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--主账户存入钱包余额相等的金额-->
|
|
<Set>INP_DAT_MAIN.AC_NO=$MAIN_AC</Set>
|
|
<Set>INP_DAT_MAIN.ORD_NO=$GWA.JRN_NO</Set>
|
|
<Set>INP_DAT_MAIN.ORD_TYP=05</Set>
|
|
<Set>INP_DAT_MAIN.CAP_TYP=1</Set>
|
|
<Set>INP_DAT_MAIN.AMT=$TX_AMT</Set>
|
|
<Set>INP_DAT_MAIN.TX_CD=2135040</Set>
|
|
<Set>INP_DAT_MAIN.TX_DT=$GWA.TX_DT</Set>
|
|
<Set>INP_DAT_MAIN.TX_TM=$GWA.TX_TM</Set>
|
|
<Set>INP_DAT_MAIN.AC_TYP=100</Set>
|
|
<Set>INP_DAT_MAIN.TX_TYP=07</Set> <!-- 反圈存 -->
|
|
<Set>INP_DAT_MAIN.BUS_TYP=0701</Set>
|
|
<Set>INP_DAT_MAIN.MAX_CHK_FLG=N</Set> <!--主账户存入时,暂定最高限额不做检查 -->
|
|
|
|
<Exec func="ACM:MainAccountDeposit"> <!--主账户存入-->
|
|
<Arg name="_I_GWA" value="GWA"/>
|
|
<Arg name="_I_INP_DAT" value="INP_DAT_MAIN"/>
|
|
<Arg name="_O_OUT_DAT" value="OUT_DAT_MAIN"/>
|
|
</Exec>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Set>RSP_CD=99</Set>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
|
|
<!--用贴片卡卡号查询补登明细表是否存在待补登信息-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_LPSTWEMK_INFO" />
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
</Exec>
|
|
</If>
|
|
<ElseIf condition="~RetCod=0">
|
|
<!--主账户解冻待补登的金额-->
|
|
<Set>INP_DAT_UNHOLD.AC_NO=$MAIN_AC</Set>
|
|
<Set>INP_DAT_UNHOLD.HLD_NO=$HLD_NO</Set>
|
|
<Set>INP_DAT_UNHOLD.HLD_CD=BD</Set>
|
|
<Set>INP_DAT_UNHOLD.CAP_TYP=1</Set>
|
|
<Set>INP_DAT_UNHOLD.UN_HLD_AMT=$AMT</Set>
|
|
<Set>INP_DAT_UNHOLD.ORD_TYP=05</Set>
|
|
<Set>INP_DAT_UNHOLD.ORD_NO=$ORD_NO</Set>
|
|
<Set>INP_DAT_UNHOLD.TX_CD=2135040</Set>
|
|
<Set>INP_DAT_UNHOLD.TX_TYP=07</Set>
|
|
<Set>INP_DAT_UNHOLD.BUS_TYP=0701</Set>
|
|
|
|
<Exec func="ACM:UnHoldAccount"> <!--解冻-->
|
|
<Arg name="_I_GWA" value="GWA"/>
|
|
<Arg name="_I_INP_DAT" value="INP_DAT_UNHOLD"/>
|
|
<Arg name="_O_OUT_DAT" value="OUT_DAT_UNHOLD"/>
|
|
</Exec>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Set>RSP_CD=99</Set>
|
|
<Return/>
|
|
</If>
|
|
<Else>
|
|
<Exec func="PUB:ExecSql"> <!-- 更新补登记录的处理结果 -->
|
|
<Arg name="SqlCmd" value="UPD_LPSTWEMK_INFO"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20062"/>
|
|
<Arg name="MsgDat" value="不存在此待补登记录"/>
|
|
</Exec>
|
|
<Set>RSP_CD=99</Set>
|
|
<Return/>
|
|
</If>
|
|
</Else>
|
|
</ElseIf>
|
|
|
|
<!--手机钱包卡销户-->
|
|
<Call package="LPS_PUB" function="CancelOldSubAccount">
|
|
<Input>GWA|SUB_AC|CRD_STSW|</Input>
|
|
<Output>MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="IS_SUCC(@O.MSG_CD)">
|
|
<!--子账户销户成功-->
|
|
<Set>RSP_CD=00</Set>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
</If>
|
|
<Else>
|
|
<!--子账户销户失败-->
|
|
<Set>RSP_CD=99</Set>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</Else>
|
|
|
|
<Label>END</Label>
|
|
|
|
<!-- 调用BOSS贴片卡订购关系同步 -->
|
|
<Set>PRO_TIM=GETDATETIME()</Set>
|
|
<Exec func="PUB:GetUniqueNo">
|
|
<Arg name="Name" value="BOSS_LPS_SEQ"/>
|
|
<Arg name="Len" value="6"/>
|
|
</Exec>
|
|
<Set>OPR_LOG=STRCAT(0034BIP2B295,$PRO_TIM,$SEL_VAL)</Set>
|
|
<Set>OPR_FLG=07</Set>
|
|
<Set>SUB_TYP=1</Set>
|
|
<Set>CRD_NO=$SUB_AC</Set>
|
|
<Set>TRAN_IDO=$GWA.JRN_NO</Set> <!-- 发起方流水号 -->
|
|
<Set>TLOG_NO=$GWA.JRN_NO</Set> <!-- 业务流水号 -->
|
|
<Exec func="PUB:CallThirdComm" error="IGNORE">
|
|
<Arg name="ObjSvr" value="SBSGPUB1"/>
|
|
<Arg name="HTxnCd" value="T2001095"/>
|
|
</Exec>
|
|
|
|
|
|
<!--如果贴片卡销户成功,则短信通知用户-->
|
|
<If condition="STRCMP($RSP_CD,00)=0">
|
|
<Set>SMS_CD=LPS002</Set>
|
|
<Call package="LPS_PUB" function="SendShortMessage"/>
|
|
</If>
|
|
|
|
<!-- 贴片卡销户成功,通知posp -->
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
</Exec>
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
</Application>
|