Files
2021-01-12 23:30:48 +08:00

810 lines
38 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<Package>
<Function name="CheckMercAndBankVerify">
<!-- 根据商户号、渠道标志、业务类型查询capmercdef表中,该商户支持卡类型-->
<!--DynSentence name="QRY_CAPMERCDEF">
<Sentence>
SELECT * FROM CAPMERCDEF WHERE MERC_ID=? AND TXN_CNL=? AND CAP_TYP=?
</Sentence>
<Fields>MERC_ID|TXN_CNL|CAP_TYP|</Fields>
</DynSentence -->
<!--查询商户端校验信息名称同时校验是否生效-->
<DynSentence name="QRY_CAPMERCEL_INFO">
<Sentence>
SELECT CAP_MERC_NM,IS_USED FROM CAPMERCREL WHERE MERC_ID=? AND TXN_CNL=? AND CAP_TYP=? AND IS_DEFAULT='Y'
</Sentence>
<Fields>MERC_ID|TXN_CNL|CAP_TYP|</Fields>
</DynSentence>
<!--查询商户端校验信息-->
<DynSentence name="QRY_CAPMERCCHK_INFO">
<Sentence>
SELECT IS_USED MERC_IS_USED,CHK_CUS_NM MERC_CHK_CUS_NM,CHK_CRD_NO MERC_CHK_CRD_NO,CHK_ID_TYP MERC_CHK_ID_TYP,CHK_ID_NO MERC_CHK_ID_NO,CHK_MOBLE MERC_CHK_MOBLE,CHK_PURPOSE MERC_CHK_PURPOSE,CHK_BAK_NO MERC_CHK_BAK_NO
FROM CAPMERCCHK WHERE TXN_CNL=? AND CAP_TYP=? AND CAP_MERC_NM=?
</Sentence>
<Fields>TXN_CNL|CAP_TYP|CAP_MERC_NM|</Fields>
</DynSentence>
<!--银行端校验信息查询-->
<DynSentence name="QRY_CAPBANKCHK_INFO">
<Sentence>
SELECT IS_USED BANK_IS_USED,CHK_CUS_NM BANK_CHK_CUS_NM,CHK_CRD_NO BANK_CHK_CRD_NO,CHK_ID_TYP BANK_CHK_ID_TYP,CHK_ID_NO
BANK_CHK_ID_NO,CHK_MOBLE BANK_CHK_MOBLE,CHK_PURPOSE BANK_CHK_PURPOSE,CHK_BAK_NO BANK_CHK_BAK_NO
FROM CAPBANKCHK WHERE CORG_NO=? AND CAP_TYP=?
</Sentence>
<Fields>CORG_NO|CAP_TYP|</Fields>
</DynSentence>
<Process>
<Exec func="PUB:DumpETF" />
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPMERCEL_INFO" />
</Exec>
<If condition="~RetCod=-1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP99999" />
</Exec>
<Return />
</If>
<ElseIf condition="~RetCod=2">
<!-- @MSG 商户端校验信息不存在-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00028" />
</Exec>
<Return />
</ElseIf>
<If condition="IS_EQUAL_STRING($IS_USER,N)">
<!-- @MSG 商户端校验信息未生效-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00029" />
</Exec>
<Return />
</If>
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPMERCCHK_INFO" />
</Exec>
<If condition="~RetCod=-1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP99999" />
</Exec>
<Return />
</If>
<ElseIf condition="~RetCod=2">
<!-- @MSG 商户端校验信息不存在-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00028" />
</Exec>
<Return />
</ElseIf>
<If condition="IS_EQUAL_STRING($MERC_IS_USER,N)">
<!-- @MSG 商户端校验信息未生效-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00029" />
</Exec>
<Return />
</If>
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="QRY_CAPBANKCHK_INFO" />
</Exec>
<If condition="~RetCod=-1">
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP99999" />
</Exec>
<Return />
</If>
<ElseIf condition="~RetCod=2">
<!-- @MSG 银行端校验信息不存在-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00030" />
</Exec>
<Return />
</ElseIf>
<If condition="IS_EQUAL_STRING($BANK_IS_USER,N)">
<!-- @MSG 银行端校验信息未生效-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00031" />
</Exec>
<Return />
</If>
<!-- @MSG 校验户名判断-->
<If condition="AND(IS_EQUAL_STRING($MERC_CHK_CUS_NM,Y),IS_EQUAL_STRING($BANK_CHK_CUS_NM,Y))">
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="CUS_NAM" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “CUS_NAM”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00032" />
</Exec>
<Return />
</If>
<If condition="ISNULL($CUS_NAM)">
<!--@MSG “CUS_NAM”是银行端必验字段,不可空。-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00032" />
</Exec>
<Return />
</If>
</If>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CUS_NM,Y),IS_EQUAL_STRING($BANK_CHK_CUS_NM,N))">
<!--@MSG 银行端不支持校验“CUS_NAM”-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00033" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CUS_NM,Y),IS_EQUAL_STRING($BANK_CHK_CUS_NM,O))">
<!--@MSG 商户送就校验,不送就不验证-->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CUS_NM,N),IS_EQUAL_STRING($BANK_CHK_CUS_NM,Y))">
<!--@MSG “CUS_NAM”是银行端必验字段,不可空 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00032" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CUS_NM,N),IS_EQUAL_STRING($BANK_CHK_CUS_NM,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CUS_NM,N),IS_EQUAL_STRING($BANK_CHK_CUS_NM,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CUS_NM,O),IS_EQUAL_STRING($BANK_CHK_CUS_NM,Y))">
<!--@MSG “CUS_NAM”是银行端必验字段,不可空 -->
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="CUS_NAM" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “CUS_NAM”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00032" />
</Exec>
<Return />
</If>
<If condition="ISNULL($CUS_NAM)">
<!--@MSG “CUS_NAM”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00032" />
</Exec>
<Return />
</If>
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CUS_NM,O),IS_EQUAL_STRING($BANK_CHK_CUS_NM,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CUS_NM,O),IS_EQUAL_STRING($BANK_CHK_CUS_NM,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<!-- @MSG 校验卡号判断-->
<If condition="AND(IS_EQUAL_STRING($MERC_CHK_CRD_NO,Y),IS_EQUAL_STRING($BANK_CHK_CRD_NO,Y))">
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="CRD_NO" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “CRD_NO”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00035" />
</Exec>
<Return />
</If>
<If condition="ISNULL($CRD_NO)">
<!--@MSG “CRD_NO”是银行端必验字段,不可空。-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00035" />
</Exec>
<Return />
</If>
</If>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CRD_NO,Y),IS_EQUAL_STRING($BANK_CHK_CRD_NO,N))">
<!--@MSG 银行端不支持校验“CRD_NO”-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00036" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CRD_NO,Y),IS_EQUAL_STRING($BANK_CHK_CRD_NO,O))">
<!--@MSG 商户送就校验,不送就不验证-->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CRD_NO,N),IS_EQUAL_STRING($BANK_CHK_CRD_NO,Y))">
<!--@MSG “CRD_NO”是银行端必验字段,不可空 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00035" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CRD_NO,N),IS_EQUAL_STRING($BANK_CHK_CRD_NO,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CRD_NO,N),IS_EQUAL_STRING($BANK_CHK_CRD_NO,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CRD_NO,O),IS_EQUAL_STRING($BANK_CHK_CRD_NO,Y))">
<!--@MSG “CRD_NO”是银行端必验字段,不可空 -->
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="CRD_NO" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “CRD_NO”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00035" />
</Exec>
<Return />
</If>
<If condition="ISNULL($CRD_NO)">
<!--@MSG “CRD_NO”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00035" />
</Exec>
<Return />
</If>
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CRD_NO,O),IS_EQUAL_STRING($BANK_CHK_CRD_NO,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_CRD_NO,O),IS_EQUAL_STRING($BANK_CHK_CRD_NO,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<!-- @MSG 校验证件类型判断-->
<If condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_TYP,Y),IS_EQUAL_STRING($BANK_CHK_ID_TYP,Y))">
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="ID_TYP" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “ID_TYP”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00037" />
</Exec>
<Return />
</If>
<If condition="ISNULL($ID_TYP)">
<!--@MSG “ID_TYP”是银行端必验字段,不可空。-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00037" />
</Exec>
<Return />
</If>
</If>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_TYP,Y),IS_EQUAL_STRING($BANK_CHK_ID_TYP,N))">
<!--@MSG 银行端不支持校验“ID_TYP”-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00038" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_TYP,Y),IS_EQUAL_STRING($BANK_CHK_ID_TYP,O))">
<!--@MSG 商户送就校验,不送就不验证-->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_TYP,N),IS_EQUAL_STRING($BANK_CHK_ID_TYP,Y))">
<!--@MSG “ID_TYP”是银行端必验字段,不可空 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00037" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_TYP,N),IS_EQUAL_STRING($BANK_CHK_ID_TYP,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_TYP,N),IS_EQUAL_STRING($BANK_CHK_ID_TYP,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_TYP,O),IS_EQUAL_STRING($BANK_CHK_ID_TYP,Y))">
<!--@MSG “ID_TYP”是银行端必验字段,不可空 -->
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="ID_TYP" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “ID_TYP”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00037" />
</Exec>
<Return />
</If>
<If condition="ISNULL($ID_TYP)">
<!--@MSG “ID_TYP”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00037" />
</Exec>
<Return />
</If>
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_TYP,O),IS_EQUAL_STRING($BANK_CHK_ID_TYP,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_TYP,O),IS_EQUAL_STRING($BANK_CHK_ID_TYP,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<!-- @MSG 校验证件号码判断-->
<If condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_NO,Y),IS_EQUAL_STRING($BANK_CHK_ID_NO,Y))">
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="ID_NO" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “ID_NO”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00039" />
</Exec>
<Return />
</If>
<If condition="ISNULL($ID_NO)">
<!--@MSG “ID_NO”是银行端必验字段,不可空。-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00039" />
</Exec>
<Return />
</If>
</If>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_NO,Y),IS_EQUAL_STRING($BANK_CHK_ID_NO,N))">
<!--@MSG 银行端不支持校验“ID_NO”-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00040" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_NO,Y),IS_EQUAL_STRING($BANK_CHK_ID_NO,O))">
<!--@MSG 商户送就校验,不送就不验证-->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_NO,N),IS_EQUAL_STRING($BANK_CHK_ID_NO,Y))">
<!--@MSG “ID_NO”是银行端必验字段,不可空 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00039" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_NO,N),IS_EQUAL_STRING($BANK_CHK_ID_NO,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_NO,N),IS_EQUAL_STRING($BANK_CHK_ID_NO,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_NO,O),IS_EQUAL_STRING($BANK_CHK_ID_NO,Y))">
<!--@MSG “ID_NO”是银行端必验字段,不可空 -->
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="ID_NO" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “ID_NO”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00039" />
</Exec>
<Return />
</If>
<If condition="ISNULL($ID_NO)">
<!--@MSG “ID_NO”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00039" />
</Exec>
<Return />
</If>
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_NO,O),IS_EQUAL_STRING($BANK_CHK_ID_NO,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_ID_NO,O),IS_EQUAL_STRING($BANK_CHK_ID_NO,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<!-- @MSG 校验手机号判断-->
<If condition="AND(IS_EQUAL_STRING($MERC_CHK_MOBLE,Y),IS_EQUAL_STRING($BANK_CHK_MOBLE,Y))">
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="MOBILE" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “MOBILE”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00041" />
</Exec>
<Return />
</If>
<If condition="ISNULL($MOBILE)">
<!--@MSG “MOBILE”是银行端必验字段,不可空。-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00041" />
</Exec>
<Return />
</If>
</If>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_MOBLE,Y),IS_EQUAL_STRING($BANK_CHK_MOBLE,N))">
<!--@MSG 银行端不支持校验“MOBILE”-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00042" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_MOBLE,Y),IS_EQUAL_STRING($BANK_CHK_MOBLE,O))">
<!--@MSG 商户送就校验,不送就不验证-->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_MOBLE,N),IS_EQUAL_STRING($BANK_CHK_MOBLE,Y))">
<!--@MSG “MOBILE”是银行端必验字段,不可空 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00041" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_MOBLE,N),IS_EQUAL_STRING($BANK_CHK_MOBLE,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_MOBLE,N),IS_EQUAL_STRING($BANK_CHK_MOBLE,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_MOBLE,O),IS_EQUAL_STRING($BANK_CHK_MOBLE,Y))">
<!--@MSG “MOBILE”是银行端必验字段,不可空 -->
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="MOBILE" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “MOBILE”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00041" />
</Exec>
<Return />
</If>
<If condition="ISNULL($MOBILE)">
<!--@MSG “MOBILE”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00041" />
</Exec>
<Return />
</If>
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_MOBLE,O),IS_EQUAL_STRING($BANK_CHK_MOBLE,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_MOBLE,O),IS_EQUAL_STRING($BANK_CHK_MOBLE,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<!-- @MSG 校验开户行行号判断-->
<If condition="AND(IS_EQUAL_STRING($MERC_CHK_BAK_NO,Y),IS_EQUAL_STRING($BANK_CHK_BAK_NO,Y))">
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="LBNK_NO" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “LBNK_NO”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00043" />
</Exec>
<Return />
</If>
<If condition="ISNULL($LBNK_NO)">
<!--@MSG “LBNK_NO”是银行端必验字段,不可空。-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00043" />
</Exec>
<Return />
</If>
</If>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_BAK_NO,Y),IS_EQUAL_STRING($BANK_CHK_BAK_NO,N))">
<!--@MSG 银行端不支持校验“LBNK_NO”-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00044" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_BAK_NO,Y),IS_EQUAL_STRING($BANK_CHK_BAK_NO,O))">
<!--@MSG 商户送就校验,不送就不验证-->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_BAK_NO,N),IS_EQUAL_STRING($BANK_CHK_BAK_NO,Y))">
<!--@MSG “LBNK_NO”是银行端必验字段,不可空 -->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00043" />
</Exec>
<Return />
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_BAK_NO,N),IS_EQUAL_STRING($BANK_CHK_BAK_NO,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_BAK_NO,N),IS_EQUAL_STRING($BANK_CHK_BAK_NO,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_BAK_NO,O),IS_EQUAL_STRING($BANK_CHK_BAK_NO,Y))">
<!--@MSG “LBNK_NO”是银行端必验字段,不可空 -->
<Exec func="PUB:IsExistNode">
<Arg name="FieldName" value="LBNK_NO" />
</Exec>
<If condition="~RetCod=0"><!-- 节点不存在 -->
<!--@MSG “LBNK_NO”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00043" />
</Exec>
<Return />
</If>
<If condition="ISNULL($LBNK_NO)">
<!--@MSG “LBNK_NO”是银行端必验字段,不可空-->
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="CAP00043" />
</Exec>
<Return />
</If>
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_BAK_NO,O),IS_EQUAL_STRING($BANK_CHK_MOBLE,N))">
<!--@MSG 不用校验 -->
</ElseIf>
<ElseIf condition="AND(IS_EQUAL_STRING($MERC_CHK_BAK_NO,O),IS_EQUAL_STRING($BANK_CHK_MOBLE,O))">
<!--@MSG 不用校验 -->
</ElseIf>
<Exec func="PUB:CmpSetMsg">
<Arg name="MsgCd" value="RRC00000" />
</Exec>
</Process>
</Function>
<!-- 批量接口校验 -->
<Function name="BatCheckMercFunc">
<Input>DSK_NAM|CORG_NO|ORD_DT|CORG_DSK_NO|</Input>
<Output>BAT_CNT|BAT_SUM|</Output>
<DynSentence name="QryMercChkInf"><!--查询需要接口校验的记录-->
<Sentence>
SELECT JRN_NO
FROM CAPTXNJNL
WHERE DSK_NAM=? AND ORD_DT=? AND CORG_NO=? AND CORG_DSK_NO = ? AND DSK_NAM_STS='0' AND TXN_STS='U'
</Sentence>
<Fields>DSK_NAM|ORD_DT|CORG_NO|CORG_DSK_NO|</Fields>
</DynSentence>
<DynSentence name="QryMercChkListInf"><!--查询需要接口校验的明细信息-->
<Sentence>
SELECT *
FROM CAPTXNJNL
WHERE JRN_NO=?
</Sentence>
<Fields>JRN_NO|</Fields>
</DynSentence>
<DynSentence name="UpdChkMercResult"> <!--更新接口校验结果-->
<Sentence>
UPDATE CAPTXNJNL
SET TTXN_ST=?,TXN_STS=?,
RSP_CD=? , RSP_MSG=? , DSK_NAM_STS = '4'
WHERE ORD_DT=? AND JRN_NO=?
</Sentence>
<Fields>TTXN_ST|TXN_STS|RSP_CD|RSP_MSG|ORD_DT|JRN_NO|</Fields>
</DynSentence>
<DynSentence name="CntMercChkPassInf"><!--统计校验通过记录-->
<Sentence>
SELECT COUNT(*) AS BAT_CNT , SUM(TXN_AMT) AS BAT_SUM
FROM CAPTXNJNL
WHERE DSK_NAM=? AND ORD_DT=? AND CORG_NO=? AND CORG_DSK_NO = ? AND DSK_NAM_STS='0' AND TXN_STS='U'
</Sentence>
<Fields>DSK_NAM|ORD_DT|CORG_NO|CORG_DSK_NO|</Fields>
</DynSentence>
<DynSentence name="Qry_BatLstInf"> <!--查询批次信息-->
<Sentence>
SELECT DSK_NAM ODSK_NAM,ORD_DT OORD_DT,CORG_MERC_ID OCORG_MERC_ID,CORG_NO OCORG_NO,CORG_DSK_NO OCORG_DSK_NO,
AC_DT OAC_DT,SND_DT OSND_DT,SND_TM OSND_TM,BAT_STS OBAT_STS,BAT_ORN_AMT OBAT_ORN_AMT,BAT_ORN_CNT OBAT_ORN_CNT,
BAT_TYP OBAT_TYP,CORG_FIL_NAM OCORG_FIL_NAM,SND_DT,SND_TM,MERC_ID OMERC_ID,TCORG_DSK_NO,'批量代收付' RMK
FROM CAPBATINF
WHERE DSK_NAM=? AND ORD_DT=? AND CORG_NO=? AND CORG_DSK_NO = ?
</Sentence>
<Fields>DSK_NAM|ORD_DT|CORG_NO|CORG_DSK_NO|</Fields>
</DynSentence>
<DynSentence name="Tot_Fai"> <!--统计失败笔数-->
<Sentence>
SELECT COUNT(*) BAT_FAL_CNT,NVL(SUM(TXN_AMT),0) BAT_FAL_AMT FROM CAPTXNJNL WHERE ORD_DT = ? AND CORG_NO = ? AND CORG_DSK_NO = ? AND TTXN_ST = 'F'
</Sentence>
<Fields>OORD_DT|CORG_NO|OCORG_DSK_NO</Fields>
</DynSentence>
<DynSentence name="Tot_Suc"> <!--统计成功笔数-->
<Sentence>
SELECT COUNT(*) BAT_SUC_CNT,NVL(SUM(TXN_AMT),0) BAT_SUC_AMT FROM CAPTXNJNL WHERE ORD_DT = ? AND CORG_NO = ? AND CORG_DSK_NO = ? AND TTXN_ST = 'S'
</Sentence>
<Fields>OORD_DT|CORG_NO|OCORG_DSK_NO</Fields>
</DynSentence>
<DynSentence name="Upd_DskInf">
<Sentence>
UPDATE CAPDSKINF SET
SUC_CNT=TO_NUMBER(NVL(TRIM(?),0)),SUC_AMT=TO_NUMBER(NVL(TRIM(?),0)),
FAL_CNT=TO_NUMBER(NVL(TRIM(?),0)),FAL_AMT=TO_NUMBER(NVL(TRIM(?),0))
WHERE DSK_NAM=?
</Sentence>
<Fields>SUC_CNT|SUC_AMT|FAL_CNT|FAL_AMT|ODSK_NAM</Fields>
</DynSentence>
<DynSentence name="DskTot_Fai"> <!--统计大批次总失败笔数-->
<Sentence>
SELECT COUNT(*) FAL_CNT,NVL(SUM(TXN_AMT),0) FAL_AMT FROM CAPTXNJNL WHERE ORD_DT = ? AND DSK_NAM = ? AND TTXN_ST = 'F'
</Sentence>
<Fields>OORD_DT|ODSK_NAM|</Fields>
</DynSentence>
<DynSentence name="DskTot_Suc"> <!--统计大批次总成功笔数-->
<Sentence>
SELECT COUNT(*) SUC_CNT,NVL(SUM(TXN_AMT),0) SUC_AMT FROM CAPTXNJNL WHERE ORD_DT = ? AND DSK_NAM = ? AND TTXN_ST = 'S'
</Sentence>
<Fields>OORD_DT|ODSK_NAM|</Fields>
</DynSentence>
<DynSentence name="Upd_CUPS_DSK_NO">
<Sentence>
UPDATE CAPBATINF
SET BAT_STS=? ,END_TM=? ,END_DT=?,BAT_SUC_AMT='%s',BAT_SUC_CNT=?,BAT_FAL_AMT=?,
BAT_FAL_CNT=?,RSP_CD = ?,RSP_MSG = ?
WHERE ORD_DT=? AND CORG_NO=? AND CORG_DSK_NO=? AND AC_DT=? AND BAT_STS=?
</Sentence>
<Fields>BAT_STS|END_TM|END_DT|BAT_SUC_AMT|BAT_SUC_CNT|BAT_FAL_AMT|BAT_FAL_CNT|RSP_CD|RSP_MSG|OORD_DT|OCORG_NO|OCORG_DSK_NO|OAC_DT|OBAT_STS|</Fields>
</DynSentence>
<DynSentence name="Upd_BatErrMsg"> <!--更新批次错误信息-->
<Sentence>
UPDATE CAPBATINF SET RSP_CD=? ,RSP_MSG=?
WHERE ORD_DT=? AND CORG_NO=? AND CORG_DSK_NO=? AND AC_DT=?
</Sentence>
<Fields>RSP_CD|RSP_MSG|OORD_DT|OCORG_NO|OCORG_DSK_NO|OAC_DT</Fields>
</DynSentence>
<Process>
<!-- 取出RTR_IN节点参数 -->
<Set>CORG_NO=$CORG_NO</Set><!-- 合作机构号 -->
<Set>ORD_DT=$ORD_DT</Set>
<Set>CORG_DSK_NO=$CORG_DSK_NO</Set>
<!-- 接口校验 -->
<Exec func="PUB:OpenCursor" error="IGNORE">
<Arg name="SqlCmd" value="QryMercChkInf"/>
</Exec>
<If condition="~RetCod != 0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=打开游标失败</Set>
<Return/>
</If>
<While>
<Exec func="PUB:FetchCursor" error="IGNORE"/>
<If condition="~RetCod=2">
<Exec func="PUB:CloseCursor"/>
<Break/>
</If>
<ElseIf condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=循环游标失败</Set>
<Return/>
</ElseIf>
<!-- 接口校验 -->
<Set>JRN_NO=$JRN_NO</Set>
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="QryMercChkListInf"/>
</Exec>
<Call package="CHKMERC" function="CheckMercAndBankVerify">
</Call>
<If condition="IS_SUCC(@O.MSG_CD)=0">
<Set>RSP_CD=80</Set>
<Set>RSP_MSG=@O.MSG_INF</Set>
<Set>TXN_STS=F</Set>
<Set>TTXN_ST=F</Set>
<!--更新接口校验结果-->
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UpdChkMercResult"/>
</Exec>
<If condition="~RetCod != 0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=更新流水表失败</Set>
<Return/>
</If>
<Return />
</If>
</While>
<Exec func="PUB:CloseCursor" error="IGNORE"/>
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="CntMercChkPassInf" />
</Exec>
<If condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=查询数据库出错</Set>
<Return/>
</If>
<If condition="INTCMP($BAT_CNT,3,0)"><!--3等于-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="Qry_BatLstInf"/>
</Exec>
<If condition="~RetCod!=0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=查询数据库出错</Set>
<Return/>
</If>
<!--清理数据-->
<Delete>RSP_CD</Delete>
<Delete>RSP_MSG</Delete>
<Set>TACC_DT=GETDATE()</Set> <!--交易日期-->
<Set>TACC_TM=GETDATETIME(HHMISS)</Set> <!--交易时间-->
<Set>END_TM=GETDATETIME()</Set>
<Set>END_DT=GETDATE()</Set>
<Set>BAT_SUC_AMT=0</Set>
<Set>BAT_SUC_CNT=0</Set>
<Set>BAT_FAL_CNT=0</Set>
<Set>BAT_FAL_AMT=0</Set>
<Set>SUC_AMT=0</Set>
<Set>SUC_CNT=0</Set>
<Set>FAL_CNT=0</Set>
<Set>FAL_AMT=0</Set>
<Set>RSP_CD=STRCAT( , )</Set>
<Set>RSP_MSG=STRCAT( , )</Set>
<!--统计成功,失败笔数-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="Tot_Suc"/>
</Exec>
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="Tot_Fai"/>
</Exec>
<Set>BAT_SUC_AMT=$BAT_SUC_AMT</Set>
<Set>BAT_SUC_CNT=$BAT_SUC_CNT</Set>
<Set>BAT_FAL_AMT=$BAT_FAL_AMT</Set>
<Set>BAT_FAL_CNT=$BAT_FAL_CNT</Set>
<!--统计大批次成功,失败笔数-->
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="DskTot_Suc"/>
</Exec>
<Exec func="PUB:ReadRecord" error="IGNORE">
<Arg name="SqlCmd" value="DskTot_Fai"/>
</Exec>
<Set>SUC_AMT=$SUC_AMT</Set>
<Set>SUC_CNT=$SUC_CNT</Set>
<Set>FAL_AMT=$FAL_AMT</Set>
<Set>FAL_CNT=$FAL_CNT</Set>
<!--更新文件信息-->
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="Upd_DskInf"/>
</Exec>
<If condition="~RetCod!=0">
<Set>BAT_STS=5</Set>
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=累加更新接入批量信息表成功失败总笔数及总金额失败</Set>
<Break/>
</If>
<Set>Rsp_Cd=00</Set>
<Set>Rsp_Msg=交易成功</Set>
<Set>BAT_STS=4</Set> <!-- 接收处理完成 -->
<!--更新批次信息-->
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="Upd_CUPS_DSK_NO"/>
</Exec>
<If condition="~RetCod != 0">
<Set>Rsp_Cd=80</Set>
<Set>Rsp_Msg=更新该批次为发送处理状态失败</Set>
<Break/>
<!--Exec func="PUB:RollbackWork"/-->
</If>
<Set>TXN_MOD_FLG=$OBAT_TYP</Set>
<If condition="IS_EQUAL_STRING($OBAT_TYP,01)">
<Set>CAP_TYP=CAP_RCV_BAT</Set>
</If>
<ElseIf condition="IS_EQUAL_STRING($OBAT_TYP,02)">
<Set>CAP_TYP=CAP_PAY_BAT</Set>
</ElseIf>
<Set>TX_AMT=$BAT_SUC_AMT</Set>
<Set>TX_JRN_NO=$OCORG_DSK_NO</Set>
<Set>CORG_NO=$OCORG_NO</Set>
<Set>BUS_CNL=BIS</Set>
<Call package="MERCACC" function="MERC_ACC_ALTER_CCRP10003">
<Input>OMERC_ID|TXN_MOD_FLG|OAC_DT|CAP_TYP|TX_AMT|TX_JRN_NO|CORG_NO|BUS_CNL|RMK|SYS_ID|TXN_CNL|</Input>
<Output>MSG_CD|</Output>
</Call>
<!--更新错误信息-->
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="Upd_BatErrMsg"/>
</Exec>
<!--提交事务-->
<Exec func="PUB:CommitWork"/>
</If>
<Set>BAT_CNT=$BAT_CNT</Set>
<Set>BAT_SUM=$BAT_SUM</Set>
</Process>
</Function>
</Package>