150 lines
6.7 KiB
XML
150 lines
6.7 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Tran>
|
|
<Transaction code="204020" log_switch='1' desc="平安保险批量代收">
|
|
<Quote name="SQL_RcvConfirm"/> <!--商户接入认证检查配套SQL语句-->
|
|
|
|
<!--查询文件是否入库 -->
|
|
<DynSentence name="QRY_CAPDSKINF_DSK_NAM">
|
|
<Sentence>
|
|
SELECT 1 FROM CAPDSKINF
|
|
WHERE DSK_NAM = ?
|
|
</Sentence>
|
|
<Fields>DSK_NAM|</Fields>
|
|
</DynSentence>
|
|
|
|
<FlowCtrl>
|
|
<Set>IS_TEST=FALSE</Set>
|
|
<Quote name="Init_CAP01"/> <!--交易初始化-->
|
|
<!-- 组合一些关键信息 -->
|
|
<Set>RCV_DT=$CRE_DT</Set>
|
|
<Set>RCV_TM=$CRE_TM</Set>
|
|
|
|
<If condition="INTCMP(STRLEN($DSK_NAM),3,37)">
|
|
<Set>SYS_ID=SUBSTR($DSK_NAM,1,2)</Set> <!-- 系统定义 -->
|
|
<Set>FIL_TYP=SUBSTR($DSK_NAM,3,2)</Set> <!-- 文件类型 00混合 01 批扣 02批付 -->
|
|
<Set>BNK_CD=SUBSTR($DSK_NAM,5,4)</Set> <!-- 银行代码 -->
|
|
<Set>ARE_CD=SUBSTR($DSK_NAM,9,4)</Set> <!-- 区域码 -->
|
|
<Set>MERC_ID=SUBSTR($DSK_NAM,13,15)</Set> <!-- 商户 -->
|
|
<Set>ORD_DT=SUBSTR($DSK_NAM,28,8)</Set> <!-- 日期 -->
|
|
<Set>DSK_DAT=$ORD_DT</Set> <!-- 日期 -->
|
|
<Set>DSK_NO=SUBSTR($DSK_NAM,36,2)</Set> <!-- 批次号 -->
|
|
</If>
|
|
<Else>
|
|
<Set>SYS_ID=SUBSTR($DSK_NAM,1,1)</Set> <!-- 系统定义 -->
|
|
<Set>FIL_TYP=SUBSTR($DSK_NAM,2,2)</Set> <!-- 文件类型 00混合 01 批扣 02批付 -->
|
|
<Set>BNK_CD=SUBSTR($DSK_NAM,4,4)</Set> <!-- 银行代码 -->
|
|
<Set>ARE_CD=SUBSTR($DSK_NAM,8,4)</Set> <!-- 区域码 -->
|
|
<Set>MERC_ID=SUBSTR($DSK_NAM,12,15)</Set> <!-- 商户 -->
|
|
<Set>ORD_DT=SUBSTR($DSK_NAM,27,8)</Set> <!-- 日期 -->
|
|
<Set>DSK_DAT=$ORD_DT</Set> <!-- 日期 -->
|
|
<Set>DSK_NO=SUBSTR($DSK_NAM,35,2)</Set> <!-- 批次号 -->
|
|
</Else>
|
|
|
|
<Set>TACC_TM=GETDATETIME()</Set>
|
|
|
|
<If condition="IS_NOEQUAL_STRING($ORD_DT,SUBSTR($TACC_TM,1,8))">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=请求日期非当日</Set>
|
|
<Return/>
|
|
</If>
|
|
<!-- 查询文件是否入库 -->
|
|
<Exec func="PUB:ReadRecord" error="IGNORE">
|
|
<Arg name="SqlCmd" value="QRY_CAPDSKINF_DSK_NAM"/>
|
|
</Exec>
|
|
<If condition="~RetCod=0">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=批文件重复</Set>
|
|
<Return/>
|
|
</If>
|
|
|
|
<Quote name="ChkRcvInf"/> <!--商户接入认证检查-->
|
|
|
|
<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=$MERC_ID</Set>
|
|
<!-- 商户营业时间判断 -->
|
|
<Call package="CEL" function="MERC_TIM_RAG_VERIFY">
|
|
<Input>CAP_TYP|MERC_ID|</Input>
|
|
<Output>MSG_CD|EVT_TYP|EVT_DSC|</Output>
|
|
</Call>
|
|
<If condition="SUBSTR(@O.MSG_CD,4,5)!=00000">
|
|
<Set>MSG_INF=@O.EVT_DSC</Set>
|
|
<Set>EVT_TYP=@O.EVT_TYP</Set>
|
|
<!-- 事物推送 -->
|
|
<Call package="CEL" function="PUSH_EVENT">
|
|
<Input>EVT_TYP|MERC_ID|MSG_INF|</Input>
|
|
<Output>MSG_CD|</Output>
|
|
</Call>
|
|
<If condition="SUBSTR(@O.MSG_CD,4,5)!=00000">
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=事务推送失败</Set>
|
|
<Return/>
|
|
</If>
|
|
<Else>
|
|
<Set>Rsp_Cd=80</Set>
|
|
<Set>Rsp_Msg=$MSG_INF</Set>
|
|
<Return/>
|
|
</Else>
|
|
</If>
|
|
|
|
|
|
<Set>D_DSK_NAM=SUBSTR($DSK_NAM,1,SUB(STRLEN($DSK_NAM),4))</Set>
|
|
<!--判断文件是否存在 -->
|
|
<Exec func="PUB:IsValidFile" error="IGNORE">
|
|
<Arg name="FileName" value="STRCAT(GETENV(WORKDIR),/dat/cap/recv/,$DSK_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>TGZ_NAME=STRCAT(GETENV(WORKDIR),/dat/cap/recv/,$DSK_NAM)</Set>
|
|
<Set>TGZ_PATH=STRCAT(GETENV(WORKDIR),/dat/cap/recv/)</Set>
|
|
<Exec func="PUB:SystemAndWait">
|
|
<Arg name="cmd" value="tar"/>
|
|
<Arg name="arg1" value="zxvf"/>
|
|
<Arg name="arg2" value="$TGZ_NAME"/>
|
|
<Arg name="arg3" value="-C"/>
|
|
<Arg name="arg4" value="$TGZ_PATH"/>
|
|
</Exec>
|
|
<!–判断文件是否存在 –>
|
|
<Set>DSK_NAM=$D_DSK_NAM</Set>
|
|
<Exec func="PUB:IsValidFile" error="IGNORE">
|
|
<Arg name="FileName"
|
|
value="STRCAT(GETENV(WORKDIR),/dat/cap/recv/,$D_DSK_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>
|
|
|
|
<!–判断文件是否存在–>
|
|
<Exec func="PUB:IsValidFile" error="IGNORE">
|
|
<Arg name="FileName" value="STRCAT(GETENV(WORKDIR),/dat/cap/recv/,$DSK_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>-->
|
|
<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>
|