278 lines
11 KiB
XML
278 lines
11 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Tran>
|
|
<Transaction code="DISK_APPLY" log_switch='1' desc="批量代付申请">
|
|
|
|
<!--查询文件是否入库 -->
|
|
<DynSentence name="QRY_CAPDSKINF_DSK_NAM">
|
|
<Sentence>
|
|
SELECT 1 FROM CAPDSKINF
|
|
WHERE DSK_NAM = ?
|
|
</Sentence>
|
|
<Fields>DSK_NAM|</Fields>
|
|
</DynSentence>
|
|
<!--查询客户是否有效 -->
|
|
<DynSentence name="QRY_CAPCUSINF">
|
|
<Sentence>
|
|
SELECT ENABLED,RANK,CUSTOMER_NAME,LMT_NM FROM CAPCUSINF
|
|
WHERE CUSTOMER_ID = ? AND ENABLED = 'Y'
|
|
</Sentence>
|
|
<Fields>CUSTOMER_ID|</Fields>
|
|
</DynSentence>
|
|
<!--查询支付地信息 -->
|
|
<DynSentence name="QRY_CAPACCOUNTINF">
|
|
<Sentence>
|
|
SELECT count(1) CUS_NUM FROM CAPACCOUNTINF
|
|
WHERE TITLE_ID = ? AND ENABLED = 'Y'
|
|
</Sentence>
|
|
<Fields>TITLE_ID|</Fields>
|
|
</DynSentence>
|
|
<!--查询渠道是否停用 -->
|
|
<DynSentence name="QRY_CAPCNLINF">
|
|
<Sentence>
|
|
SELECT * FROM CAPCNLINF
|
|
WHERE TXN_CNL = ? AND RLR_STS = '0'
|
|
</Sentence>
|
|
<Fields>TXN_CNL|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="QRY_TITRTRGRP">
|
|
<Sentence>
|
|
SELECT RTR_GRP GRP_NM FROM TITRTRGRP WHERE TITLE_ID = ?
|
|
</Sentence>
|
|
<Fields>TITLE_ID|</Fields>
|
|
</DynSentence>
|
|
<DynSentence name="QRY_TITRTRGRP_CUS">
|
|
<Sentence>
|
|
SELECT RTR_GRP GRP_NM FROM CAPSPECIALROUTE a,TITRTRGRP b
|
|
WHERE a.ENABLED = 'Y' AND a.TITLE_ID = ? AND a.CUSTOMER_ID = ?
|
|
AND a.TITLE_ID||a.CUSTOMER_ID = b.TITLE_ID
|
|
</Sentence>
|
|
<Fields>TITLE_ID|CUSTOMER_ID|</Fields>
|
|
</DynSentence>
|
|
|
|
|
|
|
|
<FlowCtrl>
|
|
<Quote name="Init_CAP01"/> <!--交易初始化-->
|
|
<Set>NodNo=341</Set>
|
|
<Exec func="PUB:IsWorkDate" error="IGNORE">
|
|
<Arg name="Date" value="20210311" />
|
|
</Exec>
|
|
<If condition="~RetCod=1">
|
|
<Set>SKIP_HLD=Y</Set>
|
|
</If>
|
|
<Else>
|
|
<Set>SKIP_HLD=N</Set>
|
|
</Else>
|
|
<!-- 组合一些关键信息 -->
|
|
<Set>RCV_DT=$CRE_DT</Set>
|
|
<Set>RCV_TM=$CRE_TM</Set>
|
|
<Set>TXN_CNL=HRO</Set>
|
|
|
|
<Set>VER_NO=$FILE_VERSION</Set>
|
|
|
|
<Set>SYS_ID=$DISK_NO</Set> <!-- 系统定义 -->
|
|
<Set>FIL_TYP=02</Set> <!-- 文件类型 00混合 01 批扣 02批付 -->
|
|
<Set>ORD_DT=$APPLY_DATE</Set> <!-- 日期 -->
|
|
<Set>DSK_DAT=$APPLY_DATE</Set> <!-- 日期 -->
|
|
<Set>DSK_NO=$DISK_NO</Set> <!-- 批次号 -->
|
|
<Set>DSK_NAM=$DISK_NO</Set><!--文件名称-->
|
|
|
|
<Set>TXN_MOD=02</Set> <!-- 交易模式 01 批扣 02 批付 99 联机 -->
|
|
<Set>COP_BUS_TYP=12</Set> <!--合作业务类型 11:代收 12:代付 -->
|
|
<Set>CAP_TYP=CAP_PAY_BAT</Set>
|
|
<Set>MERC_ID=$CUSTOMER_ID</Set>
|
|
|
|
<Set>TACC_TM=GETDATETIME()</Set>
|
|
|
|
<Set>FILE_PATH=STRCAT(GETENV(WORKDIR),/dat/cap/recv/,$ORD_DT)</Set>
|
|
|
|
<Set>SRC_FIL_PATH=STRCAT(GETENV(WORKDIR),/dat/cap/recv/)</Set>
|
|
<Set>FIL_CMD=STRCAT("cd ",$SRC_FIL_PATH," ",\46\46," mkdir ",$ORD_DT)
|
|
</Set>
|
|
|
|
<Set>ZIP_FIL_NAM=STRCAT($FILE_PATH,/,$DSK_NAM,.zip)</Set>
|
|
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CAPCNLINF"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=渠道未配置或已停用</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<If condition="IS_NOEQUAL_STRING($ORD_DT,SUBSTR($TACC_TM,1,8))">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=请求日期非当日</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
|
|
<!--客户ID验证-->
|
|
<Set>CUSTOMER_ID=$CUSTOMER_ID</Set>
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CAPCUSINF"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=客户不在白名单内</Set>
|
|
<Return/>
|
|
</If>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=交易异常</Set>
|
|
<Return/>
|
|
</If>
|
|
<Set>MERC_NAM=$CUSTOMER_NAME</Set>
|
|
|
|
<Set>RANK=$RANK</Set>
|
|
<!--支付地抬头验证-->
|
|
<Set>TITLE_ID=$TITLE_ID</Set>
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CAPACCOUNTINF"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=系统异常</Set>
|
|
<Return/>
|
|
</If>
|
|
<If condition="IS_EQUAL_STRING($CUS_NUM,0)">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=支付地抬头信息有误</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
|
|
<!--查询支付地对应路由类型,特殊支付第路由-->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_TITRTRGRP_CUS"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_TITRTRGRP"/>
|
|
</Exec>
|
|
<If condition="~RetCod=2">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=支付地路由未配置</Set>
|
|
<Return/>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=数据库错误</Set>
|
|
<Return/>
|
|
</ElseIf>
|
|
</If>
|
|
<ElseIf condition="~RetCod!=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=数据库错误</Set>
|
|
<Return/>
|
|
</ElseIf>
|
|
|
|
<!-- 查询文件是否入库 -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CAPDSKINF_DSK_NAM"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<Set>Rsp_Cd=94</Set>
|
|
<Set>Rsp_Msg=批次重复</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--获取TOKEN-->
|
|
<Exec func="PUB:PARAM_GRP_GET" error="IGNORE">
|
|
<Arg name="ParamNam" value="CAPPARAMTER"/>
|
|
<Arg name="KeyNam" value="FIL_TOKEN"/>
|
|
<Arg name="GrpNam" value="CLOUD_SHIELD"/>
|
|
</Exec>
|
|
<Set>FIL_TOKEN=$CLOUD_SHIELD.P_VALUES</Set>
|
|
|
|
<!--下载文件-->
|
|
<Exec func="PUB:PARAM_GRP_GET" error="IGNORE">
|
|
<Arg name="ParamNam" value="CAPPARAMTER"/>
|
|
<Arg name="KeyNam" value="FIL_TOKEN_URL"/>
|
|
<Arg name="GrpNam" value="URL"/>
|
|
</Exec>
|
|
|
|
<Exec func="PUB:SystemAndWait" error="IGNORE">
|
|
<Arg name="cmd" value="$FIL_CMD" />
|
|
<Arg name="FIL_NM" value="" />
|
|
</Exec>
|
|
|
|
<Set>FIL_TOKEN_URL=$URL.P_VALUES</Set>
|
|
<Exec func="CTG:downloadStream">
|
|
<Arg name="token" value="$FIL_TOKEN"/>
|
|
<Arg name="url" value="$FIL_TOKEN_URL"/>
|
|
<Arg name="fileId" value="$FILE_ID"/>
|
|
<Arg name="fileName" value="$ZIP_FIL_NAM"/>
|
|
</Exec>
|
|
|
|
<!--判断文件是否存在 -->
|
|
<Exec func="PUB:IsValidFile" error="IGNORE">
|
|
<Arg name="FileName" value="$ZIP_FIL_NAM"/>
|
|
</Exec>
|
|
<If condition="OR(INTCMP($FIL_BYT,3,0), INTCMP(~RetCod,4,0) )">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=文件字节数不合法或数据文件不完整或不存在</Set>
|
|
<Set>EVENT.DSK_NO=$DSK_NAM</Set>
|
|
<Set>EVENT.ERR_MSG=文件下载失败</Set>
|
|
<Set>EVENT.FID=$FILE_ID</Set>
|
|
<Set>EVT_TYP=EVT_DFS_DOWNLOAD_FAILURE</Set>
|
|
<Exec func="PUB:InvokeService" error="IGNORE">
|
|
<Arg name="ServiceName" value="PUSH_EVENT" />
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
<!--MD5验证-->
|
|
<!-- 计算MD5校验和 -->
|
|
<Exec func="ENC:EncryptFilByMD5" error="IGNORE">
|
|
<Arg name="fileName" value="$ZIP_FIL_NAM"/>
|
|
<Arg name="nodeName" value="BSIG_VAL"/>
|
|
</Exec>
|
|
<Set>MD5CHECK=$BSIG_VAL</Set> <!--文件校验值-->
|
|
<If condition="IS_NOEQUAL_STRING($MD5,$MD5CHECK)">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg="文件MD5值不正确"</Set>
|
|
<Break/>
|
|
</If>
|
|
<Exec func="PUB:PARAM_GRP_GET" error="IGNORE">
|
|
<Arg name="ParamNam" value="CAPPARAMTER"/>
|
|
<Arg name="KeyNam" value="FIL_ZIP_PWD"/>
|
|
<Arg name="GrpNam" value="PWD"/>
|
|
</Exec>
|
|
<Set>FIL_PWD=$PWD.P_VALUES</Set>
|
|
<!-- 解压开始 -->
|
|
<Exec func="CTG:unzip">
|
|
<Arg name="targetPath" value="$FILE_PATH"/>
|
|
<Arg name="zipFileName" value="$ZIP_FIL_NAM"/>
|
|
<Arg name="password" value="$FIL_PWD"/>
|
|
</Exec>
|
|
<Set>FIL_NAM=STRCAT($FILE_PATH,/,$DSK_NAM)</Set>
|
|
<!--判断文件是否存在-->
|
|
<Exec func="PUB:IsValidFile" error="IGNORE">
|
|
<Arg name="FileName"
|
|
value="$FIL_NAM"/>
|
|
</Exec>
|
|
<If condition="OR( INTCMP($FIL_BYT,3,0), INTCMP(~RetCod,4,0) )">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=解压失败</Set>
|
|
<Return/>
|
|
</If>
|
|
<Set>MD5_APPLY=$MD5</Set>
|
|
<Exec func="PUB:InvokeService" error="IGNORE">
|
|
<Arg name="ServiceName" value="204025"/>
|
|
<Arg name='Mode' value='NOTIFY'/>
|
|
<Arg name="LogID" value="BAT_OFRTCAP1"/>
|
|
<Arg name="ObjSvr" value="OFRTCAP1"/>
|
|
</Exec>
|
|
<If condition="INTCMP(~RetCod,4,0)">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=系统错误</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Set>Rsp_Cd=00</Set>
|
|
<Set>Rsp_Msg=交易成功</Set>
|
|
</FlowCtrl>
|
|
</Transaction>
|
|
</Tran>
|