echo "fail"; } } //============END============================= /*--------------------------------------------------------------------------------------*/ $success = "支付成功!"; $order = "订单号:" . $r6_Order; $success = iconv("UTF-8", "GB2312", $success); $order = iconv("UTF-8", "GB2312", $order); logurl($success, $order, $logName); } } elseif ($r0_Cmd == "EposFailed" && $r1_Code == "-100") { // 支付失败 $fail = "支付失败!"; $order = "订单号:" . $r6_Order; $fail = iconv("UTF-8", "GB2312", $fail); $order = iconv("UTF-8", "GB2312", $order); logurl($fail, $order, $logName); verifyCallback($failCallBack, $hmac, $logName, $merchantKey); echo "fail"; } else { $fail = "支付失败!"; $fail = iconv("UTF-8", "GB2312", $fail); $failinfo = "未知错误。请联系技术支持!"; $failinfo = iconv("UTF-8", "GB2312", $failinfo); // logurl($fail,$failinfo,$logName); echo "fail"; } ?>
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; } }