325 lines
11 KiB
XML
325 lines
11 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Root>
|
|
<!--向商户发送通用结果通知--><!-- 远程组件 -->
|
|
<Function name="SendNotifyToMer">
|
|
<!--
|
|
Input>SMT_FLG|CRE_DT|ORD_NO|MERC_ID|MERC_ORD_NO|STM_FLG|HLD_NO|MBL_NO|TX_AMT1|TX_AMT2|TX_AMT3|TX_AMT4|TX_AMT5|SYS_ACS_CNL|BUS_TYP|ORD_AMT|NOTIFY_TYP|STATUS|
|
|
</Input
|
|
-->
|
|
<Input>STM_FLG|NOTIFY_TYP|ORD_INF|OAMT_INF|FRD_INF|AGR_INF|MERC_ID|MERC_REQ_NO|GWA|
|
|
</Input>
|
|
<Output>MSG_CD|MSG_DAT|</Output>
|
|
<!--查询原订单状态-->
|
|
<DynSentence name="QRY_RPMTINVD1">
|
|
<Sentence>
|
|
SELECT * FROM RPMTINVD WHERE MERC_ID=? AND MERC_REQ_NO=?
|
|
</Sentence>
|
|
<Fields>MERC_ID|MERC_REQ_NO|</Fields>
|
|
</DynSentence>
|
|
<!--查询原订单状态-->
|
|
<DynSentence name="QRY_RPMTINVD2">
|
|
<Sentence>
|
|
SELECT * FROM RPMTINVD WHERE CRE_DT=? AND ORD_NO=? AND
|
|
MERC_GW_TYP='01'
|
|
</Sentence>
|
|
<Fields>CRE_DT|ORD_NO|</Fields>
|
|
</DynSentence>
|
|
<!--查询协议信息-->
|
|
<DynSentence name="QRY_RPMTAGLM">
|
|
<Sentence>
|
|
SELECT * FROM RPMTAGLM WHERE AGR_NO=?
|
|
</Sentence>
|
|
<Fields>AGR_INF.AGR_NO</Fields>
|
|
</DynSentence>
|
|
<!--查询订单信息-->
|
|
<DynSentence name="QRY_RPMTORD">
|
|
<Sentence>
|
|
SELECT * FROM RPMTORD WHERE CRE_DT=? AND ORD_NO=?
|
|
</Sentence>
|
|
<Fields>ORD_INF.CRE_DT|ORD_INF.ORD_NO|</Fields>
|
|
</DynSentence>
|
|
<Process>
|
|
<Set>SYS_CNL=$ORD_INF.SYS_CNL</Set>
|
|
<If condition="IS_EQUAL_STRING(DELBOTHSPACE($SYS_CNL),IPS)">
|
|
<Set>CRE_DT=$ORD_INF.CRE_DT</Set>
|
|
<Set>ORD_NO=$ORD_INF.ORD_NO</Set>
|
|
<!--查询订单信息-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_RPMTORD" />
|
|
<Arg name="GrpNam" value="ORD_INF" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>MSG_CD=RPM13001</Set>
|
|
<Return />
|
|
</If>
|
|
<Set>EXP_TIME=STRCAT($ORD_INF.ORD_EXP_DT,$ORD_INF.ORD_EXP_TM)</Set>
|
|
<Set>NOW_TIME=STRCAT($GWA.TX_DT,$GWA.TX_TM)</Set>
|
|
<If condition="NOT(ISNULL(DELBOTHSPACE($EXP_TIME)))">
|
|
<If condition="STRCMP($NOW_TIME,$EXP_TIME)!=-1">
|
|
<Set>ORD_STS=#D_EXTEND_STS</Set>
|
|
</If>
|
|
</If>
|
|
<Set>USR_PAY_DTTM=STRCAT($ORD_INF.USR_PAY_DT,$ORD_INF.USR_PAY_TM)
|
|
</Set>
|
|
<If condition="ISNULL($ORD_INF.MBL_NO)=0">
|
|
<Set>MBL_NO=STRCAT(SUBSTR($ORD_INF.MBL_NO,1,3),****,SUBSTR($ORD_INF.MBL_NO,8,4))
|
|
</Set>
|
|
</If>
|
|
<Set>BUS_TYP=$ORD_INF.BUS_TYP</Set>
|
|
<Set>ORD_STS=$ORD_INF.ORD_STS</Set>
|
|
<If condition="IS_EQUAL_STRING($NOTIFY_TYP,1)">
|
|
<!--查询商户接口信息-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_RPMTINVD2" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>MSG_CD=RPM13001</Set>
|
|
<Return />
|
|
</If>
|
|
<Set>MERC_ID=$ORD_INF.MERC_ID</Set>
|
|
<Set>MER_NOT_URL=$BNK_RTN_URL</Set>
|
|
<Set>SIGN_TYP=$SIGN_TYP</Set>
|
|
<Set>VER_NO=$VER_NO</Set>
|
|
<Set>TTXN_CD=4420430</Set>
|
|
<Set>CRE_DT=$ORD_INF.CRE_DT</Set>
|
|
<Set>ORD_NO=$ORD_INF.ORD_NO</Set>
|
|
<Set>ORD_AMT=$ORD_INF.ORD_AMT</Set>
|
|
<Set>MBL_NO=$ORD_INF.MBL_NO</Set>
|
|
<Set>MERC_ORD_NO=$ORD_INF.MERC_ORD_NO</Set>
|
|
<Set>LOG_FLG=$ORD_INF.LOG_FLG</Set>
|
|
<Set>SPL_CAP_CORG=$ORD_INF.SPL_CAP_CORG</Set>
|
|
<Set>USR_PAY_DTTM=STRCAT($ORD_INF.USR_PAY_DT,$ORD_INF.USR_PAY_TM)
|
|
</Set>
|
|
<Set>TX_AMT1=$OAMT_INF.TX_AMT1</Set>
|
|
<Set>TX_AMT2=$OAMT_INF.TX_AMT2</Set>
|
|
<!--红包金额-->
|
|
<If condition="ISNULL(DELBOTHSPACE($OAMT_INF.TX_AMT3))">
|
|
<Set>TX_AMT3=0</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>TX_AMT3=$OAMT_INF.TX_AMT3</Set>
|
|
</Else>
|
|
|
|
<!--代金券金额-->
|
|
<If condition="ISNULL(DELBOTHSPACE($OAMT_INF.TX_AMT4))">
|
|
<Set>TX_AMT4=0</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>TX_AMT4=$OAMT_INF.TX_AMT4</Set>
|
|
</Else>
|
|
<!--实际消费金额-->
|
|
<Set>TXN_AMT_INF=ADDAMT($OAMT_INF.TX_AMT1,$OAMT_INF.TX_AMT2)</Set>
|
|
<Set>FLG=\#</Set>
|
|
<Set>AMT_ITEM=STRCAT(TXN_AMT_INF,=,$TXN_AMT_INF,$FLG,RED_AMT,=,$RED_AMT,$FLG,VCH_AMT,=,$VCH_AMT)
|
|
</Set>
|
|
</If>
|
|
<ElseIf condition="IS_EQUAL_STRING($NOTIFY_TYP,2)"><!-- 预授权确认 -->
|
|
<!--查询商户接口信息-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_RPMTINVD1" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>MSG_CD=RPM13001</Set>
|
|
<Return />
|
|
</If>
|
|
<Set>MERC_ID=$ORD_INF.MERC_ID</Set>
|
|
<Set>MER_NOT_URL=$BNK_RTN_URL</Set>
|
|
<Set>SIGN_TYP=$SIGN_TYP</Set>
|
|
<Set>VER_NO=$VER_NO</Set>
|
|
<Set>TTXN_CD=4420440</Set>
|
|
<Set>TXN_AMT=$ORD_INF.ORD_AMT</Set>
|
|
<Set>FRZ_NO=$ORD_INF.HLD_NO</Set>
|
|
</ElseIf>
|
|
<ElseIf condition="IS_EQUAL_STRING($NOTIFY_TYP,3)"><!-- 预授权取消 -->
|
|
<!--查询商户接口信息-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_RPMTINVD1" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>MSG_CD=RPM13001</Set>
|
|
<Return />
|
|
</If>
|
|
<Set>MERC_ID=$ORD_INF.MERC_ID</Set>
|
|
<Set>MER_NOT_URL=$BNK_RTN_URL</Set>
|
|
<Set>SIGN_TYP=$SIGN_TYP</Set>
|
|
<Set>VER_NO=$VER_NO</Set>
|
|
<Set>TTXN_CD=4420450</Set>
|
|
<Set>FRZ_NO=$ORD_INF.HLD_NO</Set>
|
|
</ElseIf>
|
|
<ElseIf condition="IS_EQUAL_STRING($NOTIFY_TYP,4)"><!-- 退款 -->
|
|
<!--查询商户接口信息-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_RPMTINVD1" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>MSG_CD=RPM13001</Set>
|
|
<Return />
|
|
</If>
|
|
<Set>MERC_ID=$ORD_INF.MERC_ID</Set>
|
|
<Set>MER_NOT_URL=$BNK_RTN_URL</Set>
|
|
<Set>SIGN_TYP=$SIGN_TYP</Set>
|
|
<Set>VER_NO=$VER_NO</Set>
|
|
<Set>TTXN_CD=4420460</Set>
|
|
<Set>REF_AMT=$RFD_INF.CUR_RFD_AMT</Set>
|
|
<Set>MERC_ORD_NO=$ORD_INF.MERC_ORD_NO</Set>
|
|
</ElseIf>
|
|
<Exec func="PUB:CallThirdService">
|
|
<Arg name="HTxnCd" value="$TTXN_CD" />
|
|
<Arg name="ObjSvr" value="OMCGPUB2" />
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<If condition="IS_SUCC($GWA.MSG_CD)=1">
|
|
<Set>MSG_CD=RPM00000</Set>
|
|
<Set>MSG_DAT=通知报文直接返回成功</Set>
|
|
</If>
|
|
<Else>
|
|
<!--登记重发-->
|
|
<If condition="IS_EQUAL_STRING($STM_FLG,0)">
|
|
<Set>LOG_NO=$ORD_INF.ORD_NO</Set>
|
|
<Exec func="PUB:TranBeginWork" error="IGNORE">
|
|
<Arg name="Code" value="204000" />
|
|
<Arg name="Interval" value="30" />
|
|
<Arg name="TimeOut" value="30" />
|
|
<Arg name="MaxTms" value="20" />
|
|
<Arg name="TranTyp" value="rdo" />
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<Exec func="PUB:TranRollbackWork">
|
|
<Arg name="AutoCommit" value="Y" />
|
|
</Exec>
|
|
</If>
|
|
<Set>MSG_CD=RPM00000</Set>
|
|
<Set>MSG_DAT=通知报文直接返回成功</Set>
|
|
<!--Return/-->
|
|
</If>
|
|
<Else>
|
|
<Set>MSG_CD=RPM22704</Set>
|
|
<Set>MSG_DAT=通知商户失败</Set>
|
|
<Return />
|
|
</Else>
|
|
</Else>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<!--登记重发-->
|
|
<If condition="IS_EQUAL_STRING($STM_FLG,0)">
|
|
<Set>LOG_NO=$ORD_INF.ORD_NO</Set>
|
|
<Exec func="PUB:TranBeginWork" error="IGNORE">
|
|
<Arg name="Code" value="204000" />
|
|
<Arg name="Interval" value="30" />
|
|
<Arg name="TimeOut" value="30" />
|
|
<Arg name="MaxTms" value="20" />
|
|
<Arg name="TranTyp" value="crc" />
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<Exec func="PUB:TranRollbackWork">
|
|
<Arg name="AutoCommit" value="Y" />
|
|
</Exec>
|
|
</If>
|
|
<Set>MSG_CD=RPM00000</Set>
|
|
<Set>MSG_DAT=通知报文直接返回成功</Set>
|
|
<!--Return/-->
|
|
</If>
|
|
<Else>
|
|
<Set>MSG_CD=RPM22704</Set>
|
|
<Set>MSG_DAT=通知商户失败</Set>
|
|
<Return />
|
|
</Else>
|
|
</ElseIf>
|
|
</If>
|
|
<Else>
|
|
<Set>MID=SUBSTR($GWA.JRN_NO,5,14)</Set>
|
|
<Set>MERC_REQ_NO=$MID</Set>
|
|
<Set>DATE=$GWA.TX_DT</Set>
|
|
<Set>TIME=$GWA.TX_TM</Set>
|
|
<Set>MSGPRO=SF</Set>
|
|
<Set>VER=0001</Set>
|
|
<Set>SCH=rq</Set>
|
|
<Set>MSGATR=00</Set>
|
|
<If condition="IS_EQUAL_STRING($NOTIFY_TYP,5)"><!-- 省平台协议通知 -->
|
|
<Set>TTXN_CD=4340492</Set><!--省平台交易码-->
|
|
<!--查询商户接口信息-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_RPMTAGLM" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>MSG_CD=RPM22201</Set>
|
|
<Return />
|
|
</If>
|
|
<Set>MCODE=101490</Set>
|
|
<Set>REQSYS=$PRVP_CD</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>TTXN_CD=4340493</Set><!--省平台交易码-->
|
|
<!--查询订单信息-->
|
|
<Exec func="PUB:ReadRecord">
|
|
<Arg name="SqlCmd" value="QRY_RPMTORD" />
|
|
<Arg name="GrpNam" value="ORD_INF" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>MSG_CD=RPM13001</Set>
|
|
<Return />
|
|
</If>
|
|
<Set>MERC_ID=$ORD_INF.MERC_ID</Set>
|
|
<Set>MER_NOT_URL=$BNK_RTN_URL</Set>
|
|
<Set>MCODE=101440</Set><!-- 报文类型 -->
|
|
<Set>PAYDAY=$ORD_INF.USR_PAY_DT</Set><!-- 支付日期 -->
|
|
<Set>MERC_ID=$ORD_INF.MERC_ID</Set><!-- 商户编号 -->
|
|
<Set>REQSYS=$ORD_INF.PRVP_CD</Set><!-- 省平台编号 -->
|
|
<Set>ORD_DT=$ORD_INF.ORD_DT</Set><!-- 订单日期 -->
|
|
<Set>MERC_ORD_NO=$ORD_INF.MERC_ORD_NO</Set><!-- 商户订单号 -->
|
|
<Set>ORD_NO=$ORD_INF.ORD_NO</Set><!-- 订单编号 -->
|
|
<If condition="ISNULL($ORD_INF.HLD_NO)">
|
|
<Set>HLD_NO=000000</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>HLD_NO=$ORD_INF.HLD_NO</Set><!-- 冻结编号 -->
|
|
</Else>
|
|
<Set>ORD_STS=$ORD_INF.ORD_STS</Set>
|
|
</Else>
|
|
<Set>MERC_ID=$ORD_INF.MERC_ID</Set>
|
|
<Set>MER_NOT_URL=$BNK_RTN_URL</Set>
|
|
|
|
<!--发送订单状态到省手机支付平台-->
|
|
<Exec func="PUB:CallThirdService" error="IGNORE">
|
|
<Arg name="HTxnCd" value="$TTXN_CD" />
|
|
<Arg name="ObjSvr" value="ORPGPUB1" />
|
|
<Arg name="srn" value="PAY_REGION" />
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<!--登记重发-->
|
|
<If condition="IS_EQUAL_STRING($STM_FLG,0)">
|
|
<Set>LOG_NO=$ORD_INF.ORD_NO</Set>
|
|
<Exec func="PUB:TranBeginWork" error="IGNORE">
|
|
<Arg name="Code" value="204000" />
|
|
<Arg name="Interval" value="30" />
|
|
<Arg name="TimeOut" value="30" />
|
|
<Arg name="MaxTms" value="20" />
|
|
<Arg name="TranTyp" value="rdo" />
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<Exec func="PUB:TranRollbackWork">
|
|
<Arg name="AutoCommit" value="Y" />
|
|
</Exec>
|
|
</If>
|
|
<Set>MSG_CD=RPM00000</Set>
|
|
<Set>MSG_DAT=通知报文直接返回成功</Set>
|
|
<!--Return/-->
|
|
</If>
|
|
<Else>
|
|
<Set>MSG_CD=RPM22704</Set>
|
|
<Set>MSG_DAT=通知商户失败</Set>
|
|
<Return />
|
|
</Else>
|
|
</If>
|
|
<Else>
|
|
<Set>MSG_CD=RPM00000</Set>
|
|
<Set>MSG_DAT=发送订单状态通知成功</Set>
|
|
<!--Return/-->
|
|
</Else>
|
|
</Else>
|
|
|
|
<Set>MSG_CD=RPM00000</Set>
|
|
<Set>MSG_DAT=交易成功</Set>
|
|
</Process>
|
|
</Function>
|
|
</Root> |