185 lines
8.6 KiB
XML
185 lines
8.6 KiB
XML
<?xml version='1.0' encoding='GB2312'?>
|
|
<Package>
|
|
<!-- 商户状态检查 -->
|
|
<Function name="CHK_MER_STS">
|
|
<Input>INP_DAT|GWA</Input>
|
|
<Output>OUT_DAT|MSG_CD</Output>
|
|
|
|
<!-- 检查商户基本信息表中商户是否存在 -->
|
|
<DynSentence name="QRY_URMTMINF_INFO">
|
|
<Sentence>
|
|
SELECT MERC_ID,USR_NO TMP_USR_NO,MERC_STS,MERC_STSW,EXP_DT AGR_EXP_DT,CI_NO FROM URMTMINF WHERE MERC_ID=?
|
|
</Sentence>
|
|
<Fields>MERC_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询商户交易权限表中的数据是否存在 -->
|
|
<DynSentence name="QRY_URMTMTXA_INFO">
|
|
<Sentence>
|
|
SELECT PMS_FLG FROM URMTMTXA WHERE MERC_ID=? AND MERC_TX_TYP=? AND MERC_CAP_TYP=?
|
|
</Sentence>
|
|
<Fields>MERC_ID|MERC_TX_TYP|MERC_CAP_TYP</Fields>
|
|
</DynSentence>
|
|
|
|
<!-- 查询主账户表 -->
|
|
<DynSentence name="QRY_ACMTACIN_INFO">
|
|
<Sentence>
|
|
SELECT AC_STS MERC_AC_STS,AC_STSW MERC_AC_STSW,PAY_PSWD_STS MERC_PAY_PSWD_STS,ERR_PPSW_DT MERC_ERR_PPSW_DT
|
|
FROM ACMTACIN
|
|
WHERE USR_NO=? AND AC_TYP='800'
|
|
</Sentence>
|
|
<Fields>TMP_USR_NO|</Fields>
|
|
</DynSentence>
|
|
<Process>
|
|
<!-- 将TPEL的组件的返回值放入O区 -->
|
|
|
|
<Set>MERC_ID=$INP_DAT.MERC_ID</Set>
|
|
<Set>TX_CD=$INP_DAT.TX_CD</Set>
|
|
<Set>SUB_TX_CD=$INP_DAT.SUB_TX_CD</Set>
|
|
<Set>DC_PTY_FLG=$INP_DAT.DC_PTY_FLG</Set>
|
|
<Set>MERC_TX_TYP=$INP_DAT.MERC_TX_TYP</Set>
|
|
<Set>MERC_CAP_TYP=$INP_DAT.MERC_CAP_TYP</Set>
|
|
|
|
<!-- 根据商户编号,检查商户基本信息表中商户是否存在 -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_URMTMINF_INFO"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<!-- 该商户不存在 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20085"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<!-- 数据库错误 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM00001"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<!-- 如果内部用户号为空,则返回报错信息 -->
|
|
<If condition="ISNULL(DELBOTHSPACE($TMP_USR_NO))">
|
|
<!-- 该商户不存在 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20085"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 如果商户的状态为销户,则报商户不存在 -->
|
|
<If condition="IS_EQUAL_STRING($MERC_STS,1)">
|
|
<!-- 该商户不存在 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20085"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!-- 根据内部用户号查询商户的主账户状态 -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_ACMTACIN_INFO"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<!-- 该商户不存在 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20085"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<!-- 数据库错误 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM00001"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<If condition="IS_EQUAL_STRING($AC_STS,1)">
|
|
<!-- 该商户不存在 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20085"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
|
|
<!-- 查询商户交易权限表信息 -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_URMTMTXA_INFO"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<!-- 根据交易权限表查询结果判断是否允许商户交易 -->
|
|
<If condition="IS_NOEQUAL_STRING($PMS_FLG,0)">
|
|
<!-- 商户交易权限不允许该交易 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM20041"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=2">
|
|
<!-- 数据库错误 -->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM00001"/>
|
|
</Exec>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<Set>SYS_LCK_DT=1</Set> <!-- 系统密码锁定天数 -->
|
|
|
|
<!-- 若支付密码状态为锁定,判断是否已经超过系统锁定日期 -->
|
|
<If condition="IS_EQUAL_STRING($MERC_PAY_PSWD_STS,1)">
|
|
<Set>~ADD_DT=CALCDATE($MERC_ERR_PPSW_DT,+,d,$SYS_LCK_DT)</Set>
|
|
<If condition="INTCMP(~ADD_DT,gt,$GWA.AC_DT)">
|
|
<Set>MERC_PAY_PSWD_STS=0</Set>
|
|
</If>
|
|
</If>
|
|
|
|
<Set>AGR_EXP_DT=$AGR_EXP_DT</Set>
|
|
|
|
<!-- 比较协议到期日和当前会计日期,判断是否已过期,设置商户协议状态-->
|
|
<If condition="INTCMP($AGR_EXP_DT,lt,$GWA.AC_DT)">
|
|
<Set>MERC_AGR_STS=1</Set> <!-- 1:已过期-->
|
|
</If>
|
|
<Else>
|
|
<Set>MERC_AGR_STS=0</Set> <!-- 0:未过期-->
|
|
</Else>
|
|
|
|
<Set>INP_DAT.DC_PTY_FLG=$DC_PTY_FLG</Set> <!-- 收付标志 -->
|
|
<Set>INP_DAT.TX_CD=$TX_CD</Set> <!-- 交易码 -->
|
|
<Set>INP_DAT.SUB_TX_CD=$SUB_TX_CD</Set> <!-- 交易字码 -->
|
|
<Set>INP_DAT.STSW_NUM=6</Set> <!-- 状态字个数 -->
|
|
<Set>INP_DAT.STSW_VAR_NM_1=MERC_STS</Set> <!-- 商户状态名 -->
|
|
<Set>INP_DAT.STSW_VAL_1=$MERC_STS</Set> <!-- 商户状态值 -->
|
|
<Set>INP_DAT.STSW_VAR_NM_2=MERC_STSW</Set> <!-- 商户状态字 -->
|
|
<Set>INP_DAT.STSW_VAL_2=$MERC_STSW</Set> <!-- 商户状态值 -->
|
|
<Set>INP_DAT.STSW_VAR_NM_3=MERC_AC_STS</Set> <!-- 主账户状态 -->
|
|
<Set>INP_DAT.STSW_VAL_3=$MERC_AC_STS</Set> <!-- 主账户状态值 -->
|
|
<Set>INP_DAT.STSW_VAR_NM_4=MERC_AC_STSW</Set> <!-- 主账户状态字 -->
|
|
<Set>INP_DAT.STSW_VAL_4=$MERC_AC_STSW</Set> <!-- 主账户状态字值 -->
|
|
<Set>INP_DAT.STSW_VAR_NM_5=MERC_PAY_PSWD_STS</Set> <!-- 支付密码状态 -->
|
|
<Set>INP_DAT.STSW_VAL_5=$MERC_PAY_PSWD_STS</Set> <!--支付密码状态值 -->
|
|
<Set>INP_DAT.STSW_VAR_NM_6=MERC_AGR_STS</Set> <!-- 协议到期状态 -->
|
|
<Set>INP_DAT.STSW_VAL_6=$MERC_AGR_STS</Set> <!-- 状协议到期状态值 -->
|
|
<!-- 检查商户状态 -->
|
|
<Exec func="CMM:CheckTxnStsWord">
|
|
<Arg name="_I_INP_DAT" value="INP_DAT"/> <!-- 输入节点 -->
|
|
<Arg name="_O_OUT_DAT" value="OUT_DAT"/> <!-- 输出节点 -->
|
|
</Exec>
|
|
<If condition="NOT(IS_SUCC(@O.MSG_CD))">
|
|
<Set>MSG_CD=@O.MSG_CD</Set>
|
|
<Set>OUT_DAT.MSG_CD=@O.MSG_CD</Set>
|
|
<Set>OUT_DAT.MSG_DAT=@O.MSG_DAT</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="URM00000"/>
|
|
</Exec>
|
|
<Set>OUT_DAT.USR_NO=$TMP_USR_NO</Set>
|
|
<Set>OUT_DAT.CI_NO=$CI_NO</Set> <!-- 客户号 -->
|
|
</Process>
|
|
</Function>
|
|
</Package> |