55 lines
2.1 KiB
XML
55 lines
2.1 KiB
XML
<?xml version='1.0' encoding='UTF-8'?>
|
|
<Package>
|
|
|
|
<!--验证交易数据MAC-->
|
|
<Function name="CheckPOSTransactionMAC">
|
|
<Input>SUB_AC|RDM_NO1|CRD_BAL|TX_AMT|POS_TRM_ID|CRD_EMK_SEQ|MAC1|</Input>
|
|
<Output>MSG_CD|</Output>
|
|
|
|
<Process>
|
|
<!--加密机参数设置-->
|
|
<Set>MK_VER=01</Set>
|
|
<Set>MK_IDX=20</Set>
|
|
<Set>MK_DVS_NUM=2</Set>
|
|
<Set>MK_DVS_DAT=STRCAT($MK_VER,SUBSTR($SUB_AC,7,14))</Set>
|
|
<Set>GC_KEY_FLG=1</Set>
|
|
<Set>GC_DAT=STRCAT($RDM_NO1,$CRD_EMK_SEQ,8000)</Set>
|
|
<Set>MAC_PAD_FLG=1</Set>
|
|
<Set>MAC_IV_DAT=0000000000000000</Set>
|
|
<Set>MAC_DAT=STRCAT($CRD_BAL,$TX_AMT,02,$POS_TRM_ID)</Set>
|
|
<Set>MAC_DAT_LEN=DIV(STRLEN($MAC_DAT),2)</Set>
|
|
<Set>MAC_LEN_FLG=1</Set>
|
|
|
|
<!--调用加密机接口进行交易数据MAC校验-->
|
|
<Exec func="HSM:HsmMACVerify4C">
|
|
<Arg name="MkVer" value="$MK_VER"/>
|
|
<Arg name="MkIndex" value="$MK_IDX"/>
|
|
<Arg name="MkDvsNum" value="$MK_DVS_NUM"/>
|
|
<Arg name="MkDvsData" value="$MK_DVS_DAT"/>
|
|
<Arg name="GCKEY_Flag" value="$GC_KEY_FLG"/>
|
|
<Arg name="GCDATA" value="$GC_DAT"/>
|
|
<Arg name="MACPadflag" value="$MAC_PAD_FLG"/>
|
|
<Arg name="MacIvData" value="$MAC_IV_DAT"/>
|
|
<Arg name="MACdata" value="$MAC_DAT"/>
|
|
<Arg name="MACdataLen" value="$MAC_DAT_LEN"/>
|
|
<Arg name="MAClenFlag" value="$MAC_LEN_FLG"/>
|
|
<Arg name="MAC" value="$MAC1"/>
|
|
</Exec>
|
|
<If condition="~RetCod!=0">
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="LPS81017"/>
|
|
<Arg name="MsgDat" value="验证交易MAC失败"/>
|
|
</Exec>
|
|
<Return/>
|
|
</If>
|
|
|
|
<!--交易成功-->
|
|
<Exec func="PUB:CmpSetMsg">
|
|
<Arg name="MsgCd" value="LPS00000"/>
|
|
<Arg name="MsgDat" value="验证交易MAC成功"/>
|
|
</Exec>
|
|
</Process>
|
|
</Function>
|
|
|
|
</Package>
|