function respond() { require_once ("tenpay/PayResponseHandler.class.php"); $resHandler = new PayResponseHandler(); $sp_billno = $resHandler->getParameter("sp_billno"); if(preg_match('/(select|union|and|\'|"|\))/i',$sp_billno)){ exit('非法参数'); } preg_match_all("/-(.*)-(.*)-(.*)/isu",$sp_billno,$oidout); $paytype = $where['pay_code'] = $oidout[3][0]; include_once ROOT.'/lib/plugins/pay/'.$paytype.'.php'; $pay = pay::getInstance()->getrows($where); $payconfig = unserialize($pay[0]['pay_config']); $resHandler->setKey($payconfig[1]['value']); $where = array(); $where['oid']=$sp_billno; $orders=orders::getInstance()->getrow($where); if($resHandler->isTenpaySign()) { $transaction_id = $resHandler->getParameter("transaction_id"); $total_fee = $resHandler->getParameter("total_fee"); $pay_result = $resHandler->getParameter("pay_result"); if("0" == $pay_result) { if (!pay::check_money($orders['id'],$total_fee/100)) { echo "<br/>" . "金额不符" . "<br/>"; return false; } pay::changeorders($orders['id'],$_GET); $show = config::get('site_url'); $resHandler->doShow($show); } else { echo "<br/>" . "支付失败" . "<br/>"; return false; } } else { echo "<br/>" . "认证签名失败" . "<br/>"; return false; } }
<?php require_once dirname(dirname(dirname(__FILE__))) . '/app.php'; $key = $INI['tenpay']['sec']; $resHandler = new PayResponseHandler(); $resHandler->setKey($key); if ($resHandler->isTenpaySign()) { $v_oid = $resHandler->getParameter("sp_billno"); $v_amount = moneyit($resHandler->getParameter("total_fee") * 0.01); $pay_result = $resHandler->getParameter("pay_result"); list($_, $order_id, $city_id, $_) = explode('-', $v_oid, 4); if ("0" == $pay_result) { /* charge */ if ($_ == 'charge') { @(list($_, $user_id, $create_time, $_) = explode('-', $v_oid, 4)); if (ZFlow::CreateFromCharge($v_amount, $user_id, $create_time, 'tenpay')) { Session::Set('notice', "财付通充值{$v_amount}元成功!"); } redirect(WEB_ROOT . '/credit/index.php'); } /* end charge */ $currency = 'CNY'; $service = 'tenpay'; $bank = '财付通'; ZOrder::OnlineIt($order_id, $v_oid, $v_amount, $currency, $service, $bank); $show = WEB_ROOT . "/order/pay.php?id={$order_id}"; $resHandler->doShow($show); die(0); } } include template('order_return_error');
private function func_pay($order_status) { // //自动通关代码 // $this->load->model('checkout/order'); // $order_info = $this->model_checkout_order->getOrder("201507150987851"); // $order_totals=$this->model_checkout_order->Gettotals($order_info["order_id"]); // $products=$this->model_checkout_order->getproducts($order_info["order_id"]); // $cardifo_query= $this->db->query("SELECT * FROM " . DB_PREFIX . "card where customer_id='".$order_info['customer_id']."'"); // $sign=new sign(); // $sign->creareorder($order_info, $order_totals, $products, $cardifo_query,$this->db); // exit; require_once "tenpay_class/PayResponseHandler.class.php"; /* 密钥 */ $key = $this->config->get('tenpay_key'); /* 创建支付应答对象 */ $resHandler = new PayResponseHandler(); $resHandler->setKey($key); $this->log->debug("Tenpay :: exciting PayResponseHandler."); //判断签名 if ($resHandler->isTenpaySign()) { $this->load->model('checkout/order'); // 获取订单号 $order_id = $resHandler->getParameter("sp_billno"); $this->log->debug(' order_id ' . $order_id); $this->load->model('checkout/order'); $order_info = $this->model_checkout_order->getOrder($order_id); if ($order_info) { $order_status_id = $order_info["order_status_id"]; $order_info = $this->model_checkout_order->getOrder($order_id); //交易单号 $transaction_id = $resHandler->getParameter("transaction_id"); //金额,以分为单位 $total_fee = $resHandler->getParameter("total_fee"); //支付结果 $pay_result = $resHandler->getParameter("pay_result"); if ("0" == $pay_result) { $this->log->debug(' pay_result ' . $pay_result); //------------------------------ //处理业务开始 //------------------------------ $this->log->debug(); $this->log->debug(' order_status_id ' . $this->config->get('tenpay_order_status_id') . ' order_status_id ' . $order_status_id); $this->model_checkout_order->confirm($order_id, $this->config->get('tenpay_order_status_id'), $transaction_id); //自动通关代码 $order_totals = $this->model_checkout_order->Gettotals($order_info["order_id"]); $products = $this->model_checkout_order->getproducts($order_info["order_id"]); $cardifo_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "card where customer_id='" . $order_info['customer_id'] . "'"); $sign = new sign(); $sign->creareorder($order_info, $order_totals, $products, $cardifo_query, $this->db); //注意交易单不要重复处理 //注意判断返回金额 //------------------------------ //处理业务完毕 //------------------------------ //调用doShow, 打印meta值跟js代码,告诉财付通处理成功,并在用户浏览器显示$show页面. $show = HTTPS_SERVER . 'index.php?route=checkout/success'; $resHandler->doShow($show); } else { //当做不成功处理 echo "<br/>" . iconv('utf-8', 'gbk', "支付失败") . "<br/>"; } } else { echo "<br/>" . iconv('utf-8', 'gbk', "支付失败") . "<br/>"; } } else { echo "<br/>" . iconv('utf-8', 'gbk', "认证签名失败") . "<br/>"; } }
exit; } $resHandler->setKey($pay->keyt); //判断签名 if ($resHandler->isTenpaySign()) { //交易单号 $transaction_id = $resHandler->getParameter("transaction_id"); //金额,以分为单位 $total_fee = intval($resHandler->getParameter("total_fee")) / 100; //支付结果 $pay_result = $resHandler->getParameter("pay_result"); if ("0" == $pay_result) { //------------------------------ //处理业务开始 //------------------------------ //注意交易单不要重复处理 //注意判断返回金额 $pay->setStatus(PAY_FINISHED); //------------------------------ //处理业务完毕 //------------------------------ //调用doShow, 打印meta值跟js代码,告诉财付通处理成功,并在用户浏览器显示$show页面. $resHandler->doShow($pay->show_url()); } else { //当做不成功处理 echo "<br/>" . "支付失败" . "<br/>"; } } else { echo "<br/>" . "认证签名失败" . "<br/>"; } //echo $resHandler->getDebugInfo();
private function func_pay($order_status) { require_once "tenpay_class/PayResponseHandler.class.php"; /* 密钥 */ $key = $this->config->get('tenpay_key'); /* 创建支付应答对象 */ $resHandler = new PayResponseHandler(); $resHandler->setKey($key); $this->log->debug("Tenpay :: exciting PayResponseHandler."); //判断签名 if ($resHandler->isTenpaySign()) { $this->load->model('checkout/order'); // 获取订单号 $order_id = $resHandler->getParameter("sp_billno"); $this->log->debug(' order_id ' . $order_id); $this->load->model('checkout/order'); $order_info = $this->model_checkout_order->getOrder($order_id); if ($order_info) { $order_status_id = $order_info["order_status_id"]; $order_info = $this->model_checkout_order->getOrder($order_id); //交易单号 $transaction_id = $resHandler->getParameter("transaction_id"); //金额,以分为单位 $total_fee = $resHandler->getParameter("total_fee"); //支付结果 $pay_result = $resHandler->getParameter("pay_result"); if ("0" == $pay_result) { $this->log->debug(' pay_result ' . $pay_result); //------------------------------ //处理业务开始 //------------------------------ $this->log->debug(); $this->log->debug(' order_status_id ' . $this->config->get('tenpay_order_status_id') . ' order_status_id ' . $order_status_id); $this->model_checkout_order->confirm($order_id, $this->config->get('tenpay_order_status_id')); //注意交易单不要重复处理 //注意判断返回金额 //------------------------------ //处理业务完毕 //------------------------------ //调用doShow, 打印meta值跟js代码,告诉财付通处理成功,并在用户浏览器显示$show页面. $show = HTTPS_SERVER . 'index.php?route=checkout/success'; $resHandler->doShow($show); } else { //当做不成功处理 echo "<br/>" . iconv('utf-8', 'gbk', "支付失败") . "<br/>"; } } else { echo "<br/>" . iconv('utf-8', 'gbk', "支付失败") . "<br/>"; } } else { echo "<br/>" . iconv('utf-8', 'gbk', "认证签名失败") . "<br/>"; } }