// 构造支付结果验证参数数组 $successCallBack = array('p1_MerId' => $p1_MerId, 'r0_Cmd' => $r0_Cmd, 'r1_Code' => $r1_Code, 'r2_TrxId' => $r2_TrxId, 'r3_Amt' => $r3_Amt, 'r4_Cur' => $r4_Cur, 'r5_Pid' => $r5_Pid, 'r6_Order' => $r6_Order, 'r7_Uid' => $r7_Uid, 'r8_MP' => $r8_MP, 'r9_BType' => $r9_BType); $failCallBack = array('p1_MerId' => $p1_MerId, 'r0_Cmd' => $r0_Cmd, 'r1_Code' => $r1_Code, 'r2_TrxId' => $r2_TrxId, 'r3_Amt' => $r3_Amt, 'r6_Order' => $r6_Order, 'rp_TrxDate' => $rp_TrxDate); // 回写success,通知易宝支付商户已收到点对点响应 //echo "success"; //在接收到支付结果通知后,判断是否进行过业务逻辑处理,不要重复进行业务逻辑处理 // 支付成功.可以调用您的业务逻辑,您无需关心易宝接口如何工作 if ($r0_Cmd == "Buy" && $r1_Code == "1") { if (verifyCallback($successCallBack, $hmac, $logName, $merchantKey)) { /*--------------------------------------------------------------------------------------*/ // 接入程序员关注部分 // 调用您的业务逻辑处理函数,比如:更新商户数据库的商品是否发货的状态,进行商品价格校验等 //处理数据库逻辑 //注意交易单不要重复处理 //注意判断返回金额 $uid = substruid($r6_Order, 14); //更新支付状态 $sql_getpayid = "SELECT max(id) id FROM {$dbTablePre}payment_new WHERE order_id='{$r6_Order}'"; $getpayid = $_MooClass['MooMySQL']->getOne($sql_getpayid, true); $id = $getpayid['id']; $sql_p = "SELECT pay_service FROM {$dbTablePre}payment_new WHERE id='{$id}'"; $payservice = $_MooClass['MooMySQL']->getOne($sql_p, true); $bgtime = time(); $apply_note = ''; $s_cid = ''; $total_money = ''; $total_fee_res = $r3_Amt; $confirm = array(); $attach = ''; if ($payservice['pay_service'] == '-1') { $attach = '-1';
$total_fee_res = $total_fee / 100; //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee $discount = $resHandler->getParameter("discount"); //支付结果 0-成功 1-失败 $trade_state = $resHandler->getParameter("trade_state"); //交易模式,1即时到账 $trade_mode = $resHandler->getParameter("trade_mode"); //支付银行 $bank_type = $resHandler->getParameter('bank_type'); //币种 1-人民币 $fee_type = $resHandler->getParameter("fee_type"); //商品价格 $product_fee = $resHandler->getParameter("product_fee"); $product_fee_res = $product_fee / 100; //用户ID $uid = substruid($out_trade_no, 14); if ($trade_state == '0' && $trade_mode == '1') { //------------------------------ //处理业务开始 //------------------------------ //注意交易单不要重复处理 //注意判断返回金额 $total_money = ''; if ($attach == '-1') { $total_money = $paymoney['platinum']; } elseif ($attach == '0') { $total_money = $paymoney['diamond']; } elseif ($attach == '1') { $total_money = $paymoney['vip']; } elseif ($attach == '2') { $total_money = $paymoney['citystar'];
require_once dirname(__FILE__) . '/./../../framwork/MooPHP.php'; require_once dirname(__FILE__) . '/./config.php'; //构造通知函数信息 $alipay = new alipay_notify($partner, $key, $sign_type, $_input_charset, $transport); //计算得出通知验证结果 $verify_result = $alipay->return_verify(); if ($verify_result) { //验证成功 //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 $uid = substruid($_GET['out_trade_no'], 14); //用户成功提示 $paytime = date("Y.m.d H:i:s"); $payurl = array('pay' => '1', 'out_trade_no' => $_GET['out_trade_no'], 'paytime' => $paytime, 'bank_type' => '支付宝支付', 'trade_state' => 0, 'get_img' => '05.gif', 'img' => $_GET['extra_common_param'], 'total_fee' => $_GET['total_fee'], 'uid' => $uid); //会员ID $payurl = implode(',', $payurl); $payurl = $payurl . ',alipay'; $jump = '../../index.php?n=payment&h=payreturnurl&payurl=' . $payurl; echo '<script language="JavaScript">self.location=\'' . $jump . '\';</script>'; exit; } else { //验证失败 $uid = substruid($_GET['out_trade_no'], 14); $paytime = date("Y.m.d H:i:s"); $payurl = array('pay' => '1', 'out_trade_no' => $_GET['out_trade_no'], 'paytime' => $paytime, 'bank_type' => '易宝支付', 'trade_state' => 1, 'get_img' => '01.gif', 'img' => $_GET['extra_common_param'], 'total_fee' => $_GET['total_fee'], 'uid' => $uid); //会员ID $payurl = implode(',', $payurl); $payurl = $payurl . ',alipay'; $jump = '../../index.php?n=payment&h=payreturnurl&payurl=' . $payurl; echo '<script language="JavaScript">self.location=\'' . $jump . '\';</script>'; exit; }
function eposSale(array $bizArray, $actionURL, $merchantKey, $logName) { // 调用签名函数生成签名串 $ReqHmacString = getReqHmacString($bizArray, $logName, $merchantKey); // 组成请求串 $actionHttpString = HttpClient::buildQueryString($bizArray) . "&pr_NeedResponse=1" . "&hmac=" . $ReqHmacString; // echo $actionURL."?".$actionHttpString;exit; // 记录发起支付请求的参数 logurl("发起请求", $actionURL . "?" . $actionHttpString, $logName); // 发起支付请求 $pageContents = HttpClient::quickPost($actionURL, $actionHttpString); if ($GLOBALS['uid'] == '20310462') { echo $pageContents . "<br>"; } // 记录收到的提交结果 logurl("请求回写", $pageContents, $logName); $result = explode("\n", $pageContents); for ($index = 0; $index < count($result); $index++) { $result[$index] = trim($result[$index]); if (strlen($result[$index]) == 0) { continue; } $aryReturn = explode("=", $result[$index]); $sKey = $aryReturn[0]; $sValue = $aryReturn[1]; if ($sKey == "r0_Cmd") { $r0_Cmd = $sValue; } elseif ($sKey == "r1_Code") { $r1_Code = $sValue; } elseif ($sKey == "r2_TrxId") { $r2_TrxId = $sValue; } elseif ($sKey == "r6_Order") { $r6_Order = $sValue; } elseif ($sKey == "errorMsg") { $errorMsg = $sValue; } elseif ($sKey == "hmac") { $hmac = $sValue; } /* else{ return $result[$index]; } */ } $hmac = iconv("UTF-8", "GB2312", $hmac); // 进行校验码检查 取得加密前的字符串 $sbOld = ""; // 加入业务类型 $sbOld = $sbOld . $r0_Cmd; // 加入支付结果 $sbOld = $sbOld . $r1_Code; // 加入易宝支付交易流水号 $sbOld = $sbOld . $r2_TrxId; // 加入商户订单号 $sbOld = $sbOld . $r6_Order; $sNewString = HmacMd5($sbOld, $merchantKey, $logName); logurl("订单号:" . $r6_Order, "本地生成HMAC:" . $sNewString . "返回HMAC:" . $hmac, $logName); $uid = substruid($r6_Order, 14); $money = $bizArray['p3_Amt']; global $_MooClass, $dbTablePre; $sql_getpayid = "SELECT max(id) id FROM {$dbTablePre}payment_new WHERE order_id='{$r6_Order}'"; $getpayid = $_MooClass['MooMySQL']->getOne($sql_getpayid, true); $id = $getpayid['id']; $sql_p = "SELECT pay_service FROM {$dbTablePre}payment_new WHERE id='{$id}'"; $payservice = $_MooClass['MooMySQL']->getOne($sql_p, true); // if($money=='1899'){ // $attach='0'; // }elseif($money=='1399'){ // $attach='1'; // }elseif($money=='1399.00'){ // $attach='2'; // }else{ // $attach='1'; // } // if ($payservice['pay_service'] == '0') { $attach = '0'; } elseif ($payservice['pay_service'] == '1' || $payservice['pay_service'] == '3') { $attach = '1'; } elseif ($payservice['pay_service'] == '2') { $attach = '2'; } else { $attach = '1'; } if ($GLOBALS['uid'] == '20310462') { echo $sNewString; exit; } // 校验码正确 if ($sNewString == $hmac) { if ($r1_Code == "1") { logurl("请求成功", "本地生成HMAC:" . $sNewString . "返回HMAC:" . $hmac, $logName); //返回信息 数组表示 $paytime = date("Y.m.d H:i:s"); $payurl = array('pay' => '1', 'out_trade_no' => $r6_Order, 'paytime' => $paytime, 'bank_type' => '易宝支付', 'trade_state' => '0', 'get_img' => '05.gif', 'img' => $attach, 'total_fee' => $bizArray['p3_Amt'], 'uid' => $uid); //会员ID $payurl = implode(',', $payurl); $payurl = $payurl . ',yeepay'; header("Location:./../../index.php?n=payment&h=payreturnurl&payurl=" . $payurl); return; } elseif ($r1_Code == "66") { $errorinfo = iconv("GB2312", "UTF-8", "订单金额过小!"); } elseif ($r1_Code == "30001") { $errorinfo = iconv("GB2312", "UTF-8", "填写信息格式有误!"); } elseif ($r1_Code == "3002") { $errorinfo = iconv("GB2312", "UTF-8", "创建订单异常!"); } elseif ($r1_Code == "3003") { $errorinfo = iconv("GB2312", "UTF-8", "创建交易异常!"); } elseif ($r1_Code == "3006") { $errorinfo = iconv("GB2312", "UTF-8", "提交失败!银行返回失败信息:{$errorMsg}!"); } elseif ($r1_Code == "3008") { $errorinfo = iconv("GB2312", "UTF-8", "卡号规则不符合!"); } elseif ($r1_Code == "3009") { $errorinfo = iconv("GB2312", "UTF-8", "卡号有误或不支持的银行!"); } elseif ($r1_Code == "3010") { $errorinfo = iconv("GB2312", "UTF-8", "查询信用卡类型出错!"); } elseif ($r1_Code == "3011") { $errorinfo = iconv("GB2312", "UTF-8", "日期格式错误!"); } elseif ($r1_Code == "-100") { $errorinfo = iconv("GB2312", "UTF-8", "未知错误!"); } else { $errorinfo = iconv("GB2312", "UTF-8", "提交失败,请检查后重新测试支付!"); } $trade_state = '1'; $payurl = array('pay' => '3', 'errorinfo' => $errorinfo, 'trade_state' => $trade_state); $payurl = implode(',', $payurl); $payurl = $payurl . ',yeepay'; header("Location:./../../index.php?n=payment&h=payreturnurl&payurl=" . $payurl); exit; } else { $trade_state = '1'; $errorinfo = iconv("GB2312", "UTF-8", "服务器出错!"); $payurl = array('pay' => '3', 'errorinfo' => $errorinfo, 'trade_state' => $trade_state); $payurl = implode(',', $payurl); $payurl = $payurl . ',yeepay'; header("Location:./../../index.php?n=payment&h=payreturnurl&payurl=" . $payurl); exit; } }