function getCallbackHmacString($p1_MerId, $r0_Cmd, $r1_Code, $r2_TrxId, $r3_Amt, $r4_Cur, $r5_Pid, $r6_Order, $r7_Uid, $r8_MP, $r9_BType, $merchantKey) { // global $p1_MerId,$merchantKey; // return $p1_MerId; #取得加密前的字符串 $sbOld = ""; #加入商家ID $sbOld = $sbOld . $p1_MerId; #加入消息类型 $sbOld = $sbOld . $r0_Cmd; #加入业务返回码 $sbOld = $sbOld . $r1_Code; #加入交易ID $sbOld = $sbOld . $r2_TrxId; #加入交易金额 $sbOld = $sbOld . $r3_Amt; #加入货币单位 $sbOld = $sbOld . $r4_Cur; #加入产品Id $sbOld = $sbOld . $r5_Pid; #加入订单ID $sbOld = $sbOld . $r6_Order; #加入用户ID $sbOld = $sbOld . $r7_Uid; #加入商家扩展信息 $sbOld = $sbOld . $r8_MP; #加入交易结果返回类型 $sbOld = $sbOld . $r9_BType; // return $sbOld; return HmacMd5($sbOld, $merchantKey); }
function getCallbackHmacString($r0_Cmd, $r1_Code, $r2_TrxId, $r3_Amt, $r4_Cur, $r5_Pid, $r6_Order, $r7_Uid, $r8_MP, $r9_BType) { global $settings; include 'merchantProperties.php'; #取得加密前的字符串 $sbOld = ""; #加入商家ID $sbOld = $sbOld . $p1_MerId; #加入消息类型 $sbOld = $sbOld . $r0_Cmd; #加入业务返回码 $sbOld = $sbOld . $r1_Code; #加入交易ID $sbOld = $sbOld . $r2_TrxId; #加入交易金额 $sbOld = $sbOld . $r3_Amt; #加入货币单位 $sbOld = $sbOld . $r4_Cur; #加入产品Id $sbOld = $sbOld . $r5_Pid; #加入订单ID $sbOld = $sbOld . $r6_Order; #加入用户ID $sbOld = $sbOld . $r7_Uid; #加入商家扩展信息 $sbOld = $sbOld . $r8_MP; #加入交易结果返回类型 $sbOld = $sbOld . $r9_BType; //logstr($r6_Order,$sbOld,HmacMd5($sbOld,$merchantKey)); return HmacMd5($sbOld, $merchantKey); }
function getCallbackHmacString($r0_Cmd,$p1_MerId,$r1_Code,$r2_TrxId,$r3_Amt,$r4_Cur,$r5_Pid,$r6_Order,$r7_Uid,$r8_MP,$r9_BType,$merchantKey) { $sbOld = ""; $sbOld = $sbOld.$p1_MerId; $sbOld = $sbOld.$r0_Cmd; $sbOld = $sbOld.$r1_Code; $sbOld = $sbOld.$r2_TrxId; $sbOld = $sbOld.$r3_Amt; $sbOld = $sbOld.$r4_Cur; $sbOld = $sbOld.$r5_Pid; $sbOld = $sbOld.$r6_Order; $sbOld = $sbOld.$r7_Uid; $sbOld = $sbOld.$r8_MP; $sbOld = $sbOld.$r9_BType; return HmacMd5($sbOld,$merchantKey); }
function verifyCallback(array $bizArray, $callBackHmac, $logName, $merchantKey) { $callBackString = ""; $callBackStringLog = ""; foreach ($bizArray as $key => $value) { $callBackString .= $value; $callBackStringLog .= $key . "=" . $value . "&"; } $newLocalHmac = HmacMd5($callBackString, $merchantKey, $logName); if ($newLocalHmac == $callBackHmac) { logurl("callBack页面回调成功,交易信息正常!", "回调参数串:" . $callBackStringLog . "LocalHmac(" . $newLocalHmac . ") == ResponseHmac(" . $callBackHmac . ")!", $logName); return true; } else { echo "交易信息被篡改!</br>newLocalHmac=" . $newLocalHmac . "</br>callBackHmac=" . $callBackHmac; logurl("callBack页面回调成功,但交易信息被篡改!", "回调参数串:" . $callBackStringLog . "LocalHmac(" . $newLocalHmac . ") != ResponseHmac(" . $callBackHmac . ")!", $logName); return false; } }
$sbOld = $sbOld . $r5_Pid; #加入商户订单号 $sbOld = $sbOld . $r6_Order; #加入商户扩展信息 $sbOld = $sbOld . $r8_MP; #加入支付状态 $sbOld = $sbOld . $rb_PayStatus; #加入已退款次数 $sbOld = $sbOld . $rc_RefundCount; #加入已退款金额 $sbOld = $sbOld . $rd_RefundAmt; echo "[" . $sbOld . "]"; //echo $sNewString; //echo $sNewString; $sNewString = HmacMd5($sbOld, $merchantKey); logstr($r6_Order, $sbOld, HmacMd5($sbOld, $merchantKey)); //校验码正确 if ($sNewString == $hmac) { if ($r1_Code == "1") { echo "<br>查询成功!"; echo "<br>订单号:" . $r6_Order; echo "<br>易宝支付交易流水号:" . $r2_TrxId; echo "<br>商品名称:" . $r5_Pid; echo "<br>支付金额:" . $r3_Amt; echo "<br>商户扩展信息:" . $r8_MP; echo "<br>订单状态:" . $rb_PayStatus; echo "<br>已退款次数:" . $rc_RefundCount; echo "<br>已退款金额:" . $rd_RefundAmt; } else { if ($r1_Code == "50") { echo "<br>该订单不存在";
} } #进行校验码检查 取得加密前的字符串 $sbOld = ""; #加入业务类型 $sbOld = $sbOld . $r0_Cmd; #加入退款申请是否成功 $sbOld = $sbOld . $r1_Code; #加入易宝支付交易流水号 $sbOld = $sbOld . $r2_TrxId; #加入退款金额 $sbOld = $sbOld . $r3_Amt; #加入交易币种 $sbOld = $sbOld . $r4_Cur; $sNewString = HmacMd5($sbOld, $merchantKey); logstr($r2_TrxId, $sbOld, HmacMd5($sbOld, $merchantKey)); //校验码正确 if ($sNewString == $hmac) { if ($r1_Code == "1") { echo "<br>订单退款请求成功!"; echo "<br>易宝支付交易流水号:" . $r2_TrxId; echo "<br>退款金额:" . $r3_Amt; } else { echo "<br>订单退款请求失败"; exit; } } else { echo "<br>localhost::" . $sNewString; echo "<br>YeePay:" . $hmac; echo "<br>交易签名无效."; exit;
public function index1() { $data = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?><request platformNo='10040011137110'><platformUserNo>19920327</platformUserNo><requestNo>201504171617111</requestNo><amount>10</amount><feeMode>PLATFORM</feeMode><callbackUrl>http:www.baidu.com</callbackUrl><notifyUrl>http:www.baidu.com</notifyUrl></request>"; //hmac签名串 $merchantKey = '8oi7tY85Q27zqy836CCc6p5J1K13EW496cf41645k11qhE282655017251Jr'; $hmac = HmacMd5($data, $merchantKey); dump($hmac); //header('location:http://119.161.147.110:8088/member/bha/toRecharge?req='.$data.'&sign='.$hmac); exit; /*//业务类型 $p0_Cmd = 'Buy'; //商户编号 $p1_MerId = C('MERID'); //商户订单号 $p2_Order = $_POST['p2_Order']; //支付金额 $p3_Amt = $_POST['p3_Amt']; //交易币种 $p4_Cur = 'CNY'; //商品名称 $p5_Pid = $_POST['p5_Pid']; //商品种类 $p6_Pcat = ''; //商品描述 $p7_Pdesc = ''; //商户接受支付成功数据的地址 $p8_Url = 'http://127.0.0.1/Demo/index.php/Index/success'; //送货地址 $p9_SAF = ''; //商品扩展信息 $pa_MP = ''; //支付通道编码 $pd_FrpId = $_POST['pd_FrpId']; //选择支付银行 //$pd_FrpId = ""; //默认为空,则跳转到收银台 //应答机制 $pr_NeedResponse = '1'; //我们把请求参数一个个拼接 $data = ''; $data = $data.$p0_Cmd; $data = $data.$p1_MerId; $data = $data.$p2_Order; $data = $data.$p3_Amt; $data = $data.$p4_Cur; $data = $data.$p5_Pid; $data = $data.$p6_Pcat; $data = $data.$p7_Pdesc; $data = $data.$p8_Url; $data = $data.$p9_SAF; $data = $data.$pd_FrpId; $data = $data.$pr_NeedResponse; $merchantKey = C('KEY'); #测试使用 //hmac签名串 $hmac = HmacMd5($data,$merchantKey); $this->assign('p0_Cmd',$p0_Cmd); $this->assign('p1_MerId',$p1_MerId); $this->assign('p2_Order',$p2_Order); $this->assign('p3_Amt',$p3_Amt); $this->assign('p4_Cur',$p4_Cur); $this->assign('p5_Pid',$p5_Pid); $this->assign('p6_Pcat',$p6_Pcat); $this->assign('p7_Pdesc',$p7_Pdesc); $this->assign('p8_Url',$p8_Url); $this->assign('p9_SAF',$p9_SAF); $this->assign('pa_MP',$pa_MP); $this->assign('pd_FrpId',$pd_FrpId); $this->assign('pr_NeedResponse',$pr_NeedResponse); $this->assign('hmac',$hmac); */ /*//组装数据 分配页面 $payInfo = array( //业务类型 'p0_Cmd' =>$p0_Cmd, //商品编号 'p1_MerId'=>$p1_MerId, //商品订单号 'p2_Order'=>$p2_Order, //支付金额 'p3_Amt' => $p3_Amt, //交易币种 'p4_Cur' => $p4_Cur, //商品名称 'p5_Pid' => $p5_Pid, //商品种类 'p6_Pcat' => $p6_Pcat, //商品描述 'p7_Pdesc' => $p7_Pdesc, //商户接受支付成功数据的地址 'p8_Url' => $p8_Url, //送货地址 'p9_SAF' => $p9_SAF, //商品扩展信息 'pa_MP' => $pa_MP, //支付通道编码 'pd_FrpId' => $pd_FrpId, //应答机制 'pr_NeedResponse' => $pr_NeedResponse, //hmac签名串 'hmac' =>$hmac ); $data2 = iconv("UTF-8","GB2312",$payInfo); dump($data2); $this->assign('data',$data2);*/ $this->display(); }