310 lines
14 KiB
XML
310 lines
14 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Application name="lps" trace="yes">
|
|
|
|
<!--空中充值确认-->
|
|
<Transaction code="2140020" log_switch="1">
|
|
<!-- 查询卡片圈存记录表信息 -->
|
|
<DynSentence name="QRY_LPSTEMK_INFO">
|
|
<Sentence>
|
|
SELECT EMK_STS,LAST_EMK_CMD,TX_AMT,TX_DT,TX_TM,ORD_NO,POST_AC_DT
|
|
FROM LPSTEMK
|
|
WHERE SUB_AC=? AND CRD_TX_SEQ=? FOR UPDATE
|
|
</Sentence>
|
|
<Fields>SUB_AC|@O.STK_AREA.CRD_TX_SEQ|</Fields>
|
|
</DynSentence>
|
|
<!-- 更新圈存记录表圈存状态为充值成功 -->
|
|
<DynSentence name="UPD_LPSTEMK_EMKSTS_S">
|
|
<Sentence>
|
|
UPDATE LPSTEMK SET EMK_STS='2',CRD_PPD_RSL=?,LAST_EMK_CMD=?,TM_SMP=? WHERE SUB_AC=? AND CRD_TX_SEQ=?
|
|
</Sentence>
|
|
<Fields>@O.STK_AREA.CRD_PPD_RSL|LAST_EMK_CMD|SYS_TM_SMP|SUB_AC|@O.STK_AREA.CRD_TX_SEQ|</Fields>
|
|
</DynSentence>
|
|
<!-- 更新圈存记录表圈存状态为充值冲正 -->
|
|
<DynSentence name="UPD_LPSTEMK_EMKSTS_C">
|
|
<Sentence>
|
|
UPDATE LPSTEMK
|
|
SET EMK_STS='1',PPD_RVS_DT=?,PPD_RVS_TM=?,CRD_PPD_RSL=?,LAST_EMK_CMD=?,TM_SMP=?
|
|
WHERE SUB_AC=? AND CRD_TX_SEQ=?
|
|
</Sentence>
|
|
<Fields>PPD_RVS_DT|PPD_RVS_TM|@O.STK_AREA.CRD_PPD_RSL|LAST_EMK_CMD|SYS_TM_SMP|SUB_AC|@O.STK_AREA.CRD_TX_SEQ|</Fields>
|
|
</DynSentence>
|
|
<!--查询正常状态卡片版本信息-->
|
|
<DynSentence name="QRY_LPSTCRD_CRDVER">
|
|
<Sentence>
|
|
SELECT CRD_VER,SUB_AC,MAIN_AC,USR_NO FROM LPSTCRD WHERE MBL_NO=? AND CRD_STS='1'
|
|
</Sentence>
|
|
<Fields>MBL_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询手机用户信息表,获取累计冲正的必要信息 -->
|
|
<DynSentence name="QRY_URMTPINF">
|
|
<Sentence>
|
|
SELECT CI_NO FROM URMTPINF WHERE USR_NO=?
|
|
</Sentence>
|
|
<Fields>USR_NO|</Fields>
|
|
</DynSentence>
|
|
|
|
<FlowCtrl>
|
|
<Set>CMD_CD=SUBSTR($PIN_DAT,1,2)</Set>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
</Exec>
|
|
<!--查询卡片基本信息-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_LPSTCRD_CRDVER"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20091"/>
|
|
<Arg name="MsgDat" value="查询卡片基本信息失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 验证报文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))">
|
|
<Set>~MSG_DAT=验证报文MAC失败</Set>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 报文解析 -->
|
|
<Set>TXN_DAT=$PIN_DAT</Set>
|
|
<Call package="LPS_PUB" function="MessageParse">
|
|
<Input>CMD_CD|TXN_DAT|</Input>
|
|
<Output>MSG_CD|STK_AREA|</Output>
|
|
</Call>
|
|
<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>
|
|
|
|
<!--查询该笔充值请求平台处理状态-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_LPSTEMK_INFO"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2"> <!--不存在该笔充值请求-->
|
|
<!--调用风控-加入灰名单-->
|
|
<Set>RISK_DAT.MBL_NO=$MBL_NO</Set>
|
|
<Set>RISK_DAT.RISK_SWITCH=G</Set>
|
|
<Set>RISK_DAT.RISK_RSN=RECHARGE_SUBMIT_NOT_EXIST</Set> <!--该笔进行确认的交易在平台无记录-->
|
|
<Set>RISK_DAT.RISK_TYPE=ILLEGAL_TRAN</Set>
|
|
<Set>RISK_DAT.RISK_SEQ=$GWA.JRN_SEQ</Set>
|
|
<Set>RISK_DAT.TX_AMT=0.00</Set>
|
|
<Set>RISK_DAT.TX_TYP=06</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:GWAAddMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
</If>
|
|
<Set>GWA.JRN_SEQ=ADD($GWA.JRN_SEQ,1)</Set> <!--流水顺序号加一-->
|
|
</If>
|
|
<ElseIf condition="~RetCod=0">
|
|
<If condition="IS_EQUAL_STRING($EMK_STS,0)"> <!--平台处理结果为充值完成-->
|
|
<If condition="IS_EQUAL_STRING(@O.STK_AREA.CRD_PPD_RSL,9000)"> <!--卡片写卡成功-->
|
|
<!--验证TAC暂未做-->
|
|
<Set>LAST_EMK_CMD=2</Set> <!-- 指令为充值确认 -->
|
|
<Exec func="PUB:ExecSql" error="IGNORE">
|
|
<Arg name="SqlCmd" value="UPD_LPSTEMK_EMKSTS_S"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20089"/>
|
|
<Arg name="MsgDat" value="更新圈存记录状态失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
<Else> <!--卡片写卡失败-->
|
|
<!--圈存冲正账务处理开始-->
|
|
<!-- 账户-主账户支出冲正 -->
|
|
<Set>M_AWC.OLD_AC_NO=$MAIN_AC</Set>
|
|
<Set>M_AWC.OLD_CAP_TYP=1</Set>
|
|
<Set>M_AWC.OLD_AMT=$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>
|
|
<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>S_ADC.OLD_APP_SEQ_NO=$SUB_AC</Set>
|
|
<Set>S_ADC.OLD_CAP_TYP=1</Set>
|
|
<Set>S_ADC.OLD_AMT=$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>
|
|
<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>LAST_EMK_CMD=2</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_C"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS20089"/>
|
|
<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:GWASetMsg">
|
|
<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=$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="RRC:CmlInf">
|
|
<Arg name="_I_INP_DAT" value="INP_CRR" />
|
|
<Arg name="_O_OUT_DAT" value="OUT_CRR" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<!-- @msg 风控累计冲正失败 -->
|
|
<Arg name="MsgCd" value="LPS00001" />
|
|
<Arg name="MsgDat" value="数据库操作错误" />
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<Else>
|
|
<If condition="IS_SUCC(@O.MSG_CD)=0">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<!-- @msg 风控累计冲正失败 -->
|
|
<Arg name="MsgCd" value="@O.MSG_CD" />
|
|
<Arg name="MsgDat" value="风控累计冲正失败" />
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</Else>
|
|
|
|
<Exec func="PUB:CommitWork"/>
|
|
<Return/>
|
|
</Else>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($EMK_STS,1,2)">
|
|
<Set>~MSG_DAT=此笔充值确认请求平台已处理</Set>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
<Else>
|
|
<!-- 调用风控-加入灰名单 -->
|
|
<Set>RISK_DAT.MBL_NO=$MBL_NO</Set>
|
|
<Set>RISK_DAT.RISK_SWITCH=G</Set>
|
|
<Set>RISK_DAT.RISK_RSN=ILLEGAL_TXN_STS</Set> <!--非法的交易状态-->
|
|
<Set>RISK_DAT.RISK_TYPE=ILLEGAL_TRAN</Set>
|
|
<Set>RISK_DAT.RISK_SEQ=$GWA.JRN_SEQ</Set>
|
|
<Set>RISK_DAT.TX_AMT=$TX_AMT</Set>
|
|
<Set>RISK_DAT.TX_TYP=06</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:GWAAddMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
</Exec>
|
|
</If>
|
|
<Set>GWA.JRN_SEQ=ADD($GWA.JRN_SEQ,1)</Set> <!--流水顺序号加一-->
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS19999"/>
|
|
<Arg name="MsgDat" value="系统错误"/>
|
|
</Exec>
|
|
<Return/>
|
|
</Else>
|
|
</ElseIf>
|
|
<Else>
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="LPS00001"/>
|
|
<Arg name="MsgDat" value="数据库操作出错"/>
|
|
</Exec>
|
|
<Return/>
|
|
</Else>
|
|
|
|
|
|
<!-- 查询主账户余额 -->
|
|
<Set>AC_INF.MBL_NO=$MBL_NO</Set>
|
|
<Set>AC_INF.CAP_TYP=1</Set>
|
|
<Set>AC_INF.AC_TYP=100</Set>
|
|
<Exec func="ACM_MNG:QueryMainAccountBalance">
|
|
<Arg name="_I_INP_DAT" value="AC_INF"/>
|
|
<Arg name="_O_OUT_DAT_1" value="AC_AMT1" /> <!-- 输出信息 -->
|
|
<Arg name="_O_OUT_DAT_2" value="AC_AMT2" /> <!-- 输出信息 -->
|
|
</Exec>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Exec func="PUB:GWASetMsg">
|
|
<Arg name="MsgCd" value="@O.MSG_CD"/>
|
|
<Arg name="MsgDat" value="查询主账户余额出错"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Set>AC_BAL=@O.AC_AMT1.BAL</Set> <!-- 账户可用余额 -->
|
|
|
|
|
|
<Set>SMS_CD=LPS009</Set>
|
|
<Call package="LPS_PUB" function="SendShortMessage"/>
|
|
|
|
|
|
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
</Application>
|