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

208 lines
8.3 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Application name="lps" trace="yes">
<!--POS充值冲正-->
<Transaction code="2141019" log_switch="1">
<!-- 检查是否存在圈存成功记录 -->
<DynSentence name="CHK_LPSTEMK_EMKSTS">
<Sentence>
SELECT ORD_NO,POST_AC_DT
FROM LPSTEMK
WHERE SUB_AC=? AND POS_JRN=? AND POS_TRM_SEQ=? AND POS_TRM=? AND TX_DT=? AND TX_TM=? AND EMK_STS='0'
FOR UPDATE
</Sentence>
<Fields>SUB_AC|POS_JRN|POS_TRM_SEQ|POS_TRM|TX_DT|TX_TM|</Fields>
</DynSentence>
<!-- 更新圈存表状态 -->
<DynSentence name="UPD_LPSTEMK_EMKSTS">
<Sentence>
UPDATE LPSTEMK
SET EMK_STS=? ,PPD_RVS_DT=?,PPD_RVS_TM=?,TM_SMP=?
WHERE SUB_AC=? AND POS_JRN=? AND POS_TRM_SEQ=? AND POS_TRM=? AND TX_DT=? AND TX_TM=?
</Sentence>
<Fields>EMK_STS|PPD_RVS_DT|PPD_RVS_TM|SYS_TM_SMP|SUB_AC|POS_JRN|POS_TRM_SEQ|POS_TRM|TX_DT|TX_TM|</Fields>
</DynSentence>
<!-- 查询主账号信息 -->
<DynSentence name="QRY_LPSTCRD_INFO">
<Sentence>
SELECT MAIN_AC,USR_NO, UPPER(CRD_EMK_SEQ) PRE_EMK_SEQ ,MBL_NO
FROM LPSTCRD
WHERE SUB_AC=? FOR UPDATE
</Sentence>
<Fields>SUB_AC|</Fields>
</DynSentence>
<!-- 更新卡片联机交易序号信息 -->
<DynSentence name="UPD_LPSTCRD_EMKSEQ">
<Sentence>
UPDATE LPSTCRD SET CRD_EMK_SEQ=?,TM_SMP=? WHERE SUB_AC=?
</Sentence>
<Fields>NEW_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="NOT(IS_SUCC(@O.MSG_CD))">
<Set>~MSG_DAT=验证交易MAC失败</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="@O.MSG_CD"/>
</Exec>
<Return/>
</If>
<!-- 检查原交易记录信息 -->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="CHK_LPSTEMK_EMKSTS"/>
</Exec>
<If condition="~RetCod=2">
<Set>~MSG_DAT=无成功交易记录无需冲正</Set>
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS00000"/>
</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_LPSTCRD_INFO"/>
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWASetMsg">
<Arg name="MsgCd" value="LPS20091"/>
<Arg name="MsgDat" value="查询卡片基本信息失败"/>
</Exec>
<Return/>
</If>
<!-- 账务处理调用圈存-冲正 开始 -->
<!-- 调用子账户存入冲正-->
<Set>S_PADC.OLD_APP_SEQ_NO=$SUB_AC</Set>
<Set>S_PADC.OLD_JRN_NO=$ORD_NO</Set>
<Set>S_PADC.OLD_AMT=$REAL_TX_AMT</Set>
<Set>S_PADC.OLD_AC_DT=$POST_AC_DT</Set>
<Set>S_PADC.OLD_CAP_TYP=1</Set>
<Exec func="ACM:PurseAccountDepositCancel">
<Arg name="_I_GWA" value="GWA"/>
<Arg name="_I_INP_DAT" value="S_PADC"/>
<Arg name="_O_OUT_DAT" value="S_PADC_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>EMK_STS=1</Set>
<Set>PPD_RVS_DT=$GWA.TX_DT</Set>
<Set>PPD_RVS_TM=$GWA.TX_TM</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="LPS20089"/>
<Arg name="MsgDat" value="更新圈存记录状态失败"/>
</Exec>
<Return/>
</If>
<!-- 更新卡片圈存序号 -->
<!--待讨论-->
<Set>NEW_CRD_EMK_SEQ=ADDCHAR(DEC2HEX(SUB(HEX2DEC($PRE_EMK_SEQ),1)),4,0,1)</Set>
<Exec func="PUB:ExecSql" error="IGNORE">
<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>