123 lines
4.2 KiB
XML
123 lines
4.2 KiB
XML
<?xml version="1.0" encoding='UTF-8'?>
|
|
<Package>
|
|
|
|
<!-- 网络侧圈存检查 -->
|
|
<Function name="CheckNetRecharge">
|
|
<Input>MBL_NO|TXN_AMT|</Input>
|
|
<Output>MSG_CD|</Output>
|
|
|
|
<!-- 查询钱包状态 -->
|
|
<DynSentence name="QRY_CRDSTS">
|
|
<Sentence>
|
|
SELECT CRD_STS,CRD_STSW FROM LPSTCRD WHERE MBL_NO=? and CRD_STS!='2'
|
|
</Sentence>
|
|
<Fields>MBL_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<!--查询最后一笔充值转发时间是否大于30分钟-->
|
|
<DynSentence name='QRY_LPSTSFIF_LAST'>
|
|
<Sentence>
|
|
SELECT REG_DT, REG_TM
|
|
FROM LPSTSFIF
|
|
WHERE MBL_NO=? AND CMD_CD='16'
|
|
AND (to_date(?,'yyyymmddhh24miss')-to_date(REG_DT||REG_TM,'yyyymmddhh24miss'))*24*60 < '30'
|
|
|
|
</Sentence>
|
|
<Fields>MBL_NO|NOW_DTM|</Fields>
|
|
</DynSentence>
|
|
|
|
<process>
|
|
|
|
<Set>MSG_CD=LPS00000</Set>
|
|
<Set>NOW_DTM=GETDATETIME()</Set> <!-- 获取当前时间 -->
|
|
|
|
<!-- 判断本次充值是否离上笔充值交易的时间间隔大于30分钟 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_LPSTSFIF_LAST"/>
|
|
</Exec>
|
|
<If condition="~RetCod=-1">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="LPS00001"/>
|
|
<Arg name="MsgDat" value="系统异常,交易失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="LPS78012"/>
|
|
<Arg name="MsgDat" value="离上笔充值的存储转发尚未超过30分钟"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<!--钱包状态检查 -->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_CRDSTS"/>
|
|
</Exec>
|
|
<If condition="~RetCod =-1">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="LPS00001"/>
|
|
<Arg name="MsgDat" value="钱包状态查询出错"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod =2">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="LPS81012"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
<If condition="IS_NOEQUAL_STRING($CRD_STS,1)" >
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="LPS20062"/>
|
|
<Arg name="MsgDat" value="钱包状态异常,无法圈存"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<If condition="IS_EQUAL_STRING(SUBSTR($CRD_STSW,4,1),1)" >
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="LPS20062"/>
|
|
<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" 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:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Set>~TEMP=$GWA.TX_CD</Set>
|
|
<Set>GWA.TX_CD=2142020</Set>
|
|
|
|
<!-- 风控单笔限额检查 -->
|
|
<Set>RISK_DAT.MBL_NO=$MBL_NO</Set>
|
|
<Set>RISK_DAT.RISK_SWITCH=C</Set>
|
|
<Set>RISK_DAT.TX_AMT=$TXN_AMT</Set>
|
|
<Call package="LPS_PUB" function="LpsRiskControl">
|
|
<Input>RISK_DAT|GWA|</Input>
|
|
<Output>MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Set>GWA.TX_CD=~TEMP</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Set>GWA.TX_CD=~TEMP</Set>
|
|
</process>
|
|
</Function>
|
|
</Package>
|
|
|