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

272 lines
11 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Application name="lps" trace="yes">
<!--待补登充值冲正-->
<Transaction code="2141069" log_switch="1">
<!--查询待补登圈存记录-->
<DynSentence name="QRY_LPSTEMK_EMKAMT">
<Sentence>
SELECT TX_AMT EMK_AMT,ORD_NO,EMK_STS,POST_AC_DT
FROM LPSTEMK
WHERE SUB_AC=? AND POS_TRM=? AND POS_JRN=? AND TX_DT=? AND TX_TM=? AND EMK_TYP='P' AND EMK_STS='0'
</Sentence>
<Fields>SUB_AC|POS_TRM|POS_JRN|TX_DT|TX_TM|</Fields>
</DynSentence>
<!-- 查询用户用户号 -->
<DynSentence name="QRY_LPSTCRD_USRNO">
<Sentence>
SELECT USR_NO,CRD_EMK_SEQ PRE_EMK_SEQ,CRD_VER,MAIN_AC FROM LPSTCRD WHERE SUB_AC=? AND CRD_STS!='2'
</Sentence>
<Fields>SUB_AC|</Fields>
</DynSentence>
<!-- 更新圈存记录表处理结果 -->
<DynSentence name="UPD_LPSTEMK_EMKSTS">
<Sentence>
UPDATE LPSTEMK
SET EMK_STS=? ,PPD_RVS_DT=?,PPD_RVS_TM=?,TM_SMP=?
WHERE POS_TRM=? AND POS_TRM_SEQ=? AND POS_JRN=? AND TX_DT=? AND TX_TM=? AND SUB_AC=? AND EMK_STS!='4'
</Sentence>
<Fields>EMK_STS|GWA.TX_DT|GWA.TX_TM|SYS_TM_SMP|POS_TRM|POS_TRM_SEQ|POS_JRN|TX_DT|TX_TM|SUB_AC|</Fields>
</DynSentence>
<!-- 更新卡余额处理结果 -->
<DynSentence name="UPD_LPSTWEMK_RSL">
<Sentence>
UPDATE LPSTWEMK SET PROC_RSL=?,HLD_NO=?,PROC_DT=?,PROC_TM=?,TM_SMP=? WHERE MAIN_AC=? AND ORD_NO=?
</Sentence>
<Fields>PROC_RSL|@O.M_UHD_OUT.HLD_NO|GWA.TX_DT|GWA.TX_TM|SYS_TM_SMP|MAIN_AC|ORD_NO|</Fields>
</DynSentence>
<!-- 更新卡片圈存序号 -->
<DynSentence name="UPD_LPSTCRD_EMKSEQ">
<Sentence>
UPDATE LPSTCRD SET CRD_EMK_SEQ=?,TM_SMP=? WHERE SUB_AC=?
</Sentence>
<Fields>CRD_EMK_SEQ|SYS_TM_SMP|SUB_AC|</Fields>
</DynSentence>
<!-- 查询手机用户信息表,获取累计冲正的必要信息 -->
<DynSentence name="QRY_URMTPINF">
<Sentence>
SELECT CI_NO FROM URMTPINF WHERE USR_NO=?
</Sentence>
<Fields>USR_NO|</Fields>
</DynSentence>
<FlowCtrl>
<!-- 金额类型转换 -->
<Set>TX_AMT=TOUPPER(ADDCHAR(DEC2HEX($TX_AMT),8,0,1))</Set>
<Set>REAL_TX_AMT=AMTSIMPLEFMT(HEX2DEC($TX_AMT))</Set>
<Set>REAL_CRD_BAL=AMTSIMPLEFMT(HEX2DEC($CRD_BAL))</Set>
<!-- 验证报文MAC -->
<Call package="LPS_PUB" function="CheckPOSTransactionMAC">
<Input>SUB_AC|RDM_NO1|CRD_BAL|TX_AMT|POS_TRM_ID|CRD_EMK_SEQ|MAC1|</Input>
<Output>MSG_CD|</Output>
</Call>
<If condition="IS_NOEQUAL_STRING(SUBSTR(@O.MSG_CD,4,5),00000)">
<Set>~MSG_DAT=验证报文MAC失败</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<!-- 查询用户用户号 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_LPSTCRD_USRNO"/>
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS20055"/>
<Arg name="MsgDat" value="用户尚未开通手机钱包"/>
</Exec>
<Return/>
</If>
<ElseIf condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00001"/>
<Arg name="MsgDat" value="数据库操作出错"/>
</Exec>
<Return/>
</ElseIf>
<!--查询换卡圈存金额-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_LPSTEMK_EMKAMT"/>
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS20103"/>
<Arg name="MsgDat" value="原待补登圈存交易记录扣款失败,无需冲正"/>
</Exec>
<Return/>
</If>
<ElseIf condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00001"/>
<Arg name="MsgDat" value="数据库操作出错"/>
</Exec>
<Return/>
</ElseIf>
<!--判断冲正金额与记录金额是否相等-->
<If condition="DOUBLECMP($EMK_AMT,4,$REAL_TX_AMT)">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS20100"/>
<Arg name="MsgDat" value="冲正金额与原交易金额不相等"/>
</Exec>
<Return/>
</If>
<!--换卡圈存冲正账务处理 开始-->
<!--子账户存入冲正-->
<Set>S_ADC.OLD_APP_SEQ_NO=$SUB_AC</Set>
<Set>S_ADC.OLD_CAP_TYP=1</Set>
<Set>S_ADC.OLD_AMT=$REAL_TX_AMT</Set>
<Set>S_ADC.OLD_JRN_NO=$ORD_NO</Set>
<Set>S_ADC.OLD_AC_DT=$POST_AC_DT</Set>
<Exec func="ACM:PurseAccountDepositCancel">
<Arg name="_I_GWA" value="GWA"/>
<Arg name="_I_INP_DAT" value="S_ADC"/>
<Arg name="_O_OUT_DAT" value="S_ADC_OUT"/>
</Exec>
<Exec func="PUB:DumpDs"/>
<If condition="NOT(IS_SUCC(@O.MSG_CD))"> <!--子账户存入冲正失败 -->
<Set>~MSG_DAT=子账户存入冲正失败</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<!-- 主账户支取冲正 -->
<Set>M_AWC.OLD_AC_NO=$MAIN_AC</Set>
<Set>M_AWC.OLD_CAP_TYP=1</Set>
<Set>M_AWC.OLD_AMT=$REAL_TX_AMT</Set>
<Set>M_AWC.OLD_JRN_NO=$ORD_NO</Set>
<Set>M_AWC.OLD_AC_DT=$POST_AC_DT</Set>
<Exec func="ACM:MainAccountWithdrawCancel">
<Arg name="_I_GWA" value="GWA"/>
<Arg name="_I_INP_DAT" value="M_AWC"/>
<Arg name="_O_OUT_DAT" value="M_AWC_OUT"/>
</Exec>
<Exec func="PUB:DumpDs"/>
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Set>~MSG_DAT=主账户支取冲正失败</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<!-- 主账户冻结 -->
<Set>HAC_IN.AC_NO=$MAIN_AC</Set>
<Set>HAC_IN.CAP_TYP=1</Set>
<Set>HAC_IN.HLD_AMT=$REAL_TX_AMT</Set>
<Set>HAC_IN.HLD_CD=BD</Set>
<Set>HAC_IN.DESC=卡片补登</Set>
<Set>HAC_IN.ORD_TYP=05</Set>
<Set>HAC_IN.ORD_NO=$GWA.JRN_NO</Set>
<Set>HAC_IN.PAY_FLG=N</Set>
<Set>HAC_IN.TX_OPP_TYP=1</Set>
<Set>HAC_IN.TX_AMT=$REAL_TX_AMT</Set>
<Set>HAC_IN.VCH_NO_TYP=0</Set>
<Set>HAC_IN.VCH_NO=$GWA.JRN_NO</Set>
<Set>HAC_IN.TX_DT=$GWA.TX_DT</Set>
<Set>HAC_IN.TX_TM=$GWA.TX_TM</Set>
<Set>HAC_IN.TX_CD=$GWA.TX_CD</Set>
<Set>HAC_IN.TX_TYP=07</Set>
<Set>HAC_IN.BUS_TYP=HBD0</Set>
<Exec func="ACM:HoldAccount">
<Arg name="_I_GWA" value="GWA" />
<Arg name="_I_INP_DAT" value="HAC_IN" />
<Arg name="_O_OUT_DAT" value="M_UHD_OUT" />
</Exec>
<Exec func="PUB:DumpDS" />
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD" />
</Exec>
<Return/>
</If>
<!-- 换卡圈存冲正账务处理 结束 -->
<!--更新圈存记录表状态为冲正-->
<Set>EMK_STS=1</Set>
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UPD_LPSTEMK_EMKSTS"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS20101"/>
<Arg name="MsgDat" value="更新原卡片圈存记录状态失败"/>
</Exec>
<Return/>
</If>
<!--更新卡余额处理状态以及冻结编号-->
<Set>PROC_RSL=C</Set>
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UPD_LPSTWEMK_RSL"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS20098"/>
<Arg name="MsgDat" value="更新待补登余额信息失败"/>
</Exec>
<Return/>
</If>
<!--更新卡片联机交易序号-->
<Set>CRD_EMK_SEQ=ADDCHAR(DEC2HEX(SUB(HEX2DEC($PRE_EMK_SEQ),1)),4,0,1)</Set> <!--写卡失败圈存序号减一-->
<Exec func="PUB:ExecSql">
<Arg name="SqlCmd" value="UPD_LPSTCRD_EMKSEQ"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS20093"/>
<Arg name="MsgDat" value="更新卡片联机交易序号失败"/>
</Exec>
<Return/>
</If>
<!-- 获取客户号 -->
<Exec func="PUB:ReadRecord">
<Arg name="SqlCmd" value="QRY_URMTPINF"/>
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="URM20012"/>
</Exec>
<Return/>
</If>
<!-- 风控累计参数区 -->
<Set>INP_CRR.PAY_CI_NO=$CI_NO</Set> <!-- 付款方客户号 -->
<Set>INP_CRR.PAY_USR_NO=$USR_NO</Set> <!-- 付款方内部用户号 -->
<Set>INP_CRR.PAY_AC_TYP=100</Set> <!-- 付款方账户类型 -->
<Set>INP_CRR.STL_CI_NO=$CI_NO</Set>
<Set>INP_CRR.STL_USR_NO=$USR_NO</Set>
<Set>INP_CRR.STL_AC_TYP=101</Set>
<Set>INP_CRR.AMT_FLG=1</Set> <!-- 金额类型 -->
<Set>INP_CRR.BUS_CNL=$GWA.BUS_CNL</Set> <!-- 交易渠道 -->
<Set>INP_CRR.RSV_FLG=C</Set> <!-- 冲正标志:冲正交易 -->
<Set>INP_CRR.TOT_FLG=1</Set> <!-- 统计类型: -->
<Set>INP_CRR.TX_AMT1=$REAL_TX_AMT</Set> <!-- 交易金额 -->
<Set>INP_CRR.JRN_NO=$GWA.JRN_NO</Set> <!-- 交易流水号 -->
<Set>INP_CRR.TX_DT=$GWA.TX_DT</Set> <!-- 交易日期 -->
<Set>INP_CRR.TX_TYP=06</Set> <!-- 交易类型 -->
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00000"/>
</Exec>
</FlowCtrl>
</Transaction>
</Application>