Files
2022-08-25 19:42:03 +08:00

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>