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; } }
/** * 响应操作 */ function respond() { $payment = get_payment_info('tenpay'); $key = $payment['ytauthkey']; /* 创建支付应答对象 */ $resHandler = new PayResponseHandler(); $resHandler->setKey($key); if ($resHandler->isTenpaySign()) { //商户单号 $sp_billno = $resHandler->getParameter("sp_billno"); //财付通交易单号 $transaction_id = $resHandler->getParameter("transaction_id"); //金额,以分为单位 $total_fee = $resHandler->getParameter("total_fee"); $pay_result = $resHandler->getParameter("pay_result"); if ("0" == $pay_result) { return order_paid($sp_billno); } else { return false; } } else { return false; } }
/** * 返回地址验证 * * @param * @return array */ public function return_verify() { require_once "./classes/PayResponseHandler.class.php"; /* 密钥 */ $key = $this->payment['payment_config']['tenpay_key']; /* 创建支付应答对象 */ $resHandler = new PayResponseHandler(); $resHandler->setKey($key); //判断签名 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) { //判断返回金额 $order_amount = $total_fee / 100; if ($this->order['order_amount'] != $order_amount) { return false; } return true; } else { return false; } } else { 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');
*/ //--------------------------------------------------------- //财付通即时到帐支付应答(处理回调)示例,商户按照此文档进行开发即可 //--------------------------------------------------------- error_reporting(0); require_once "./classes/PayResponseHandler.class.php"; require_once "tenpay_data.php"; //引入本站数据 require_once dirname(dirname(dirname(__FILE__))) . "/config/db.config.php"; require_once dirname(dirname(dirname(__FILE__))) . "/data/plus/config.php"; require_once dirname(dirname(dirname(__FILE__))) . "/app/include/mysql.class.php"; $db = new mysql($db_config['dbhost'], $db_config['dbuser'], $db_config['dbpass'], $db_config['dbname'], ALL_PS, $db_config['charset']); /* 密钥 */ $key = $tenpay[sy_tenpaycode]; /* 创建支付应答对象 */ $resHandler = new PayResponseHandler(); $resHandler->setKey($key); //判断签名 if ($resHandler->isTenpaySign()) { //交易单号 $transaction_id = $resHandler->getParameter("transaction_id"); //本站单号 $sp_billno = $resHandler->getParameter("sp_billno"); //金额,以分为单位 $total_fee = $resHandler->getParameter("total_fee"); //支付结果 $pay_result = $resHandler->getParameter("pay_result"); //类型 $attach = $resHandler->getParameter("attach"); if ("0" == $pay_result) { //------------------------------
<?php //--------------------------------------------------------- //财付通中介担保支付应答(处理回调)示例,商户按照此文档进行开发即可 //--------------------------------------------------------- require_once 'classes/PayResponseHandler.class.php'; /* 创建支付应答对象 */ $resHandler = new PayResponseHandler(); require_once '../pay_base.php'; $pay = new pay_base('tenpay'); $pay->by = 'pays'; $pay->order_sn = $resHandler->getParameter("attach"); if (!$pay->getData()) { echo "<br/>非法请求<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) { //------------------------------ //处理业务开始 //------------------------------ //注意交易单不要重复处理 //注意判断返回金额
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/>"; } }
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/>"; } }
} else { $db->query_unbuffered("update {$tpf}users set wealth=wealth+{$total_fee} where userid='{$pd_uid}' limit 1"); $db->query_unbuffered("update {$tpf}vip_orders set pay_status='fail' where order_id='{$order_id}'"); $s_title = __('pay_fail'); $msg = __('your_order') . ': ' . $out_trade_no . ',' . __('pay_fail'); } } else { $s_title = __('repay_title'); $msg = __('repay_tips'); } require_once template_echo('pd_payment', $user_tpl_dir); break; case 'tenpay': include_once PD_PLUGINS_DIR . "payment/tenpay/PayResponseHandler.class.php"; $key = $settings['ten_key']; $resHandler = new PayResponseHandler(); $resHandler->setKey($key); if ($resHandler->isTenpaySign()) { $transaction_id = $resHandler->getParameter("transaction_id"); $total_fee = $resHandler->getParameter("total_fee"); $total_fee = round($total_fee / 100, 2); $pay_result = $resHandler->getParameter("pay_result"); $rs = $db->fetch_one_array("select order_id,vip_id,pay_status from {$tpf}vip_orders where order_number='{$transaction_id}' and pay_method='{$action}' and userid='{$pd_uid}'"); if ($rs) { $vip_id = $rs[vip_id]; $order_id = (int) $rs['order_id']; $pay_status = $rs[pay_status]; } unset($rs); if ($pay_status == 'pendding') { if ("0" == $pay_result) {
<?php define("IN_KEKE", true); require_once dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . 'app_comm.php'; require_once "PayResponseHandler.php"; $pay_arr = kekezu::get_payment_config("tenpay"); @extract($pay_arr); $key = $safekey; $resHandler = new PayResponseHandler(); $resHandler->setKey($key); KEKE_DEBUG and file_put_contents(S_ROOT . '/data/log/tenpay_log.txt', var_export($_GET, 1), FILE_APPEND); $v_void = $resHandler->getParameter("sp_billno"); $v_attach = $resHandler->getParameter("attach"); $v_amount = $resHandler->getParameter("total_fee"); $v_amount = $v_amount * 0.01; $pay_result = $resHandler->getParameter("pay_result"); list($_, $charge_type, $uid, $obj_id, $order_id, $model_id) = explode('-', $v_attach, 6); if ($resHandler->isTenpaySign()) { if ("0" == $pay_result && $_ == 'charge') { $fac_obj = new pay_return_fac_class($charge_type, $model_id, $uid, $obj_id, $order_id, $v_amount, 'tenpay', $v_attach); $response = $fac_obj->load(); if ($charge_type == 'user_charge') { $total_fee /= 100; $show_url = 'index.php?do=recharge&cash=' . $total_fee . '&status=1'; } elseif ($charge_type == 'payitem_charge') { if (!in_array($model_id, array(6, 7))) { $show_url = 'index.php?do=task&id=' . $obj_id; } else { $show_url = 'index.php?do=goods&id=' . $obj_id; } } else {