function getresult()
 {
     $resHandler = new ResponseHandler();
     $resHandler->setKey($key);
     //判断签名
     if ($resHandler->isTenpaySign()) {
         //通知id
         $result_config['notify_id'] = $resHandler->getParameter("notify_id");
         //商户订单号
         $result_config['out_trade_no'] = $resHandler->getParameter("out_trade_no");
         //财付通订单号
         $result_config['transaction_id'] = $resHandler->getParameter("transaction_id");
         //金额,以分为单位
         $result_config['total_fee'] = $resHandler->getParameter("total_fee");
         //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
         $result_config['discount'] = $resHandler->getParameter("discount");
         //支付结果
         $result_config['trade_state'] = $resHandler->getParameter("trade_state");
         //交易模式,1即时到账
         $result_config['trade_mode'] = $resHandler->getParameter("trade_mode");
         return $result_config;
     } else {
         return null;
     }
 }
function getOrderStatusFromPlex($plexOrderId)
{
    $plexServiceRequestObject = new plexServiceRequest();
    $responseHandlerObject = new ResponseHandler();
    $paramArray = array(array('Name' => 'Customer_Code', 'Value' => '', 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Email_Address', 'Value' => '', 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Order_No', 'Value' => $plexOrderId, 'Required' => 'false', 'Output' => 'false'));
    $rawResponse = $plexServiceRequestObject->call('ExecuteDataSource', PLEX_GET_ORDER_STATUS, $paramArray);
    return $responseHandlerObject->getOrderStatusFromRawResponse($rawResponse);
}
 public function testHeadersAlreadySent()
 {
     $headers = $this->getMock('Riimu\\Kit\\FileResponse\\Headers', ['headersSent']);
     $headers->expects($this->once())->method('headersSent')->will($this->returnValue(true));
     $handler = new ResponseHandler($headers);
     $this->setExpectedException('RuntimeException');
     $handler->send($this->getMock('Riimu\\Kit\\FileResponse\\Response\\Response'));
 }
Exemple #4
0
 public function WriteNewPlexOrder($orderObject, $billingAddressCode, $shippingAddressCode, $Prepaid_Authorization, $poNo)
 {
     try {
         $plexServiceRequestObject = new plexServiceRequest();
         $responseHandlerObject = new ResponseHandler();
         if ($Prepaid_Authorization == 'test' || empty($Prepaid_Authorization)) {
             $Prepaid_Authorization = '1324567890';
             /*  This Prepaid_Authorization is for testing */
         }
         //echo 'Prepaid_Authorization='.$Prepaid_Authorization;
         $plexuserUserId = 'PWPU' . str_pad($orderObject->get_user_id(), 6, '0', STR_PAD_LEFT);
         $freightTerms = "PrePaid & Add";
         $shipping_service = str_replace(' ', '_', strtoupper($orderObject->get_shipping_method()));
         if ('FREE_SHIPPING' == trim($shipping_service)) {
             $shipping_service = 'UPS_GROUND';
             $freightTerms = 'PrePaid';
         } else {
             if ('FLAT_RATE' == trim($shipping_service)) {
                 $shipping_service = 'UPS_GROUND';
             }
         }
         /*request parameter*/
         $paramArray = array(array('Name' => 'Customer_Code', 'Value' => $plexuserUserId, 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Ship_To_Customer_Address_Code', 'Value' => $shippingAddressCode, 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Bill_To_Customer_Address_Code', 'Value' => $billingAddressCode, 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Tax_Amount', 'Value' => $orderObject->get_total_tax(), 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Prepaid_Authorization', 'Value' => $Prepaid_Authorization, 'Required' => 'false', 'Output' => 'false'), array('Name' => 'PO_No', 'Value' => $poNo, 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Order_No_Prefix', 'Value' => 'PWPU', 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Carrier Code', 'Value' => 'UNITED_PARCEL_SERVICE_INC', 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Shipping_Service', 'Value' => $shipping_service, 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Ship_From_Building_Code', 'Value' => "AND", 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Prepaid_Amount', 'Value' => $orderObject->get_total(), 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Freight_Terms', 'Value' => $freightTerms, 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Freight_Amount', 'Value' => $orderObject->get_total_shipping(), 'Required' => 'false', 'Output' => 'false'));
         PlexLog::addLog(' Info =>(' . $orderObject->get_user_id() . ') shipping cost (' . $orderObject->get_total_shipping() . ') ');
         foreach ($paramArray as $key => $value) {
             PlexLog::addLog(' Info =>(' . $orderObject->get_user_id() . ') order creation paramArray => ' . $value["Name"] . ' : ' . $value["Value"]);
             # code...
         }
         /* call the service*/
         $rawResponse = $plexServiceRequestObject->call('ExecuteDataSource', PLEX_WRITE_NEW_ORDER, $paramArray);
         // echo "<pre>";
         // print_r($rawResponse);
         // echo "</pre>";
         /* get the order id from the raw response data */
         $plexOrderId = $responseHandlerObject->getOrderNoFromRawResponse($rawResponse);
         PlexLog::addLog(' Info =>(' . $orderObject->get_user_id() . ') A new Plex Order is generated (' . $plexOrderId . ') ');
         /* add all item present in the wooCommerce order object to plex order */
         $allItems = $orderObject->get_items();
         foreach ($allItems as $key => $value) {
             $productId = $value['product_id'];
             $Part_No = get_post_meta($productId, 'plexPartNo', true);
             $Quantity = $value['qty'];
             /*$Price 		= get_post_meta($productId, '_regular_price', true);*/
             $lineTotalPrice = $value['line_total'];
             // total price /*  as we have to send discounted price to plex*/
             $Price = $lineTotalPrice / $Quantity;
             /* adding product to plex order*/
             $retVal = $this->addProductwithPlexOrder($plexOrderId, $orderObject, $Part_No, $Price, $Quantity);
             PlexLog::addLog(' Info =>(' . $orderObject->get_user_id() . ') Adding products(' . $value['product_id'] . ') to Plex order( id:' . $plexOrderId . ') : Resault=' . $retVal . ' ( Part_No = ' . $Part_No . ' ; Quantity = ' . $Quantity . ' ; Price=' . $Price . ') ');
         }
         return $plexOrderId;
     } catch (Exception $exec) {
         PlexLog::addLog(' Error =>(' . $customerId . ') Exception occure while WriteNewPlexOrder. Message :' . $exec->getMessage());
         return '';
     }
 }
Exemple #5
0
function globalExceptionHandler($e)
{
    global $responseHandler;
    Logging::logException($e);
    Logging::logDebug(Util::array2str(debug_backtrace()));
    if ($responseHandler == NULL) {
        $responseHandler = new ResponseHandler(new OutputHandler());
    }
    $responseHandler->unknownServerError($e->getMessage());
    die;
}
 public static function processRequest()
 {
     global $logger;
     $request = $rawResponse = $response = null;
     try {
         /* Authenticate */
         $valid = self::authenticateRequest($_SERVER);
         /* Fetch POST data */
         $post = file_get_contents("php://input");
         $logger->debug("POST Data Received: " . $post);
         /* Formulate the request object */
         $request = RequestParser::parseInput($_SERVER, $_GET, $post);
         $logger->debug("REQUEST Object: " . $request->toString());
         /* Handle the request */
         $rawResponse = RequestHandler::process($request);
         $logger->debug("RESPONSE Object: " . json_encode($rawResponse));
     } catch (ApiException $e) {
         /* Generate response from Exception details */
         $logger->error("ApiException encountered!! " . $e->toString());
         $rawResponse = array('httpStatusCode' => $e->getHttpStatusCode(), 'httpStatusCodeMessage' => $e->getHttpStatusCodeMessage(), 'otherHeaders' => $e->getOtherHeaders(), 'code' => $e->getCode(), 'message' => $e->getMessage(), 'debug' => false, 'data' => null);
     }
     // Format the $rawResponse variable and output
     $format = !isset($request) ? 'json' : $request->getFormat();
     $debug = !isset($request) ? false : $request->getDebug();
     $response = ResponseHandler::respond($rawResponse, $format, $debug);
     $logger->debug("Output: " . $response);
 }
	

	function __construct() {

		$this->WapResponseHandler();

	}

	

	function WapResponseHandler(){

		parent::ResponseHandler();

	}
Exemple #8
0
	public function tenpay_recharge_return (){		
		
		import("@.ORG.TenpayComputer.ResponseHandler");
		$resHandler = new ResponseHandler();
		$key=trim(C('tenpay_partnerkey'));
		$resHandler->setKey($key);
		$out_trade_no = $this->_get('out_trade_no');
		//if($resHandler->isTenpaySign()) {
		$notify_id = $resHandler->getParameter("notify_id");
		//商户订单号
		$out_trade_no = $resHandler->getParameter("out_trade_no");
		//财付通订单号
		$transaction_id = $resHandler->getParameter("transaction_id");
		//金额,以分为单位
		$total_fee = $resHandler->getParameter("total_fee");
		//如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
		$discount = $resHandler->getParameter("discount");
		//支付结果
		$trade_state = $resHandler->getParameter("trade_state");
		//交易模式,1即时到账
		$trade_mode = $resHandler->getParameter("trade_mode");

		if("0" == $trade_state) {
			$total_fee=$total_fee/100;
			$indent=M('Agent_expenserecords')->where(array('orderid'=>$out_trade_no))->find();
			if($indent!=false){
				if($indent['status']==1){$this->error('该订单已经处理过,请勿重复操作');}
				//购买套餐,价格为优惠前价格
				if (isset($_GET['discountpriceid'])){
					$thisPrice=M('Agent_price')->where(array('id'=>intval($_GET['discountpriceid'])))->find();
					$indent['amount']=$thisPrice['maxaccount']*$this->thisAgent['wxacountprice'];
				}
				//
				M('Agent')->where(array('id'=>$indent['agentid']))->setInc('money',intval($indent['amount']));
				M('Agent')->where(array('id'=>$indent['agentid']))->setInc('moneybalance',intval($indent['amount']));

				$back=M('Agent_expenserecords')->where(array('id'=>$indent['id']))->setField('status',1);
				//
				if($back!=false){
					$this->success('充值成功',U('Agent/Basic/expenseRecords'));
				}else{
					$this->error('充值失败,请在线客服,为您处理',U('Agent/Basic/expenseRecords'));
				}
			}else{
				$this->error('订单不存在',U('Agent/Basic/expenseRecords'));


			}
		}else {
			exit('付款失败');
		}
	}
Exemple #9
0
 *2010-11-20
 */
//---------------------------------------------------------
//财付通即时到帐支付页面回调示例,商户按照此文档进行开发即可
//---------------------------------------------------------
require_once dirname(__FILE__) . '/./responsehandler.class.php';
//require_once dirname(__FILE__).'./../../framwork/MooPHP.php';
require_once dirname(__FILE__) . '/./config.php';
require_once dirname(__FILE__) . '/./function.php';
date_default_timezone_set("Asia/Shanghai");
global $payment_code, $paymoney;
$payment = $payment_code['tenpay'];
/* 密钥 */
$key = $payment['tenpay_key'];
/* 创建支付应答对象 */
$resHandler = new ResponseHandler();
$resHandler->setKey($key);
//attach -1:铂金会员     0:钻石会员  1:高级会员   2:城市之星
$attach = $resHandler->getParameter("attach");
//判断签名
if ($resHandler->isTenpaySign()) {
    //状态码 0-成功
    $retcode = $resHandler->getParameter("retcode");
    //通知id
    $notify_id = $resHandler->getParameter("notify_id");
    //商户订单号
    $out_trade_no = $resHandler->getParameter("out_trade_no");
    //财付通订单号
    $transaction_id = $resHandler->getParameter("transaction_id");
    //金额,以分为单位
    $total_fee = $resHandler->getParameter("total_fee");
Exemple #10
0
 public function houtai()
 {
     $pay_type = $this->db->GetOne("SELECT * from `@#_pay` where `pay_class` = 'tenpay' and `pay_start` = '1'");
     $pay_type_key = unserialize($pay_type['pay_key']);
     $key = $pay_type_key['key']['val'];
     //支付KEY
     $partner = $pay_type_key['id']['val'];
     //支付商号ID
     /* 创建支付应答对象 */
     $resHandler = new ResponseHandler();
     $resHandler->setKey($key);
     //判断签名
     if (!$resHandler->isTenpaySign()) {
         echo "认证签名失败";
         exit;
     }
     //通知ID
     $notify_id = $resHandler->getParameter("notify_id");
     //通过通知ID查询,确保通知来至财付通
     //创建查询请求
     $queryReq = new RequestHandler();
     $queryReq->init();
     $queryReq->setKey($key);
     $queryReq->setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml");
     $queryReq->setParameter("partner", $partner);
     $queryReq->setParameter("notify_id", $notify_id);
     //通信对象
     $httpClient = new TenpayHttpClient();
     $httpClient->setTimeOut(5);
     //设置请求内容
     $httpClient->setReqContent($queryReq->getRequestURL());
     //后台调用
     if ($httpClient->call()) {
         //设置结果参数
         $queryRes = new ClientResponseHandler();
         $queryRes->setContent($httpClient->getResContent());
         $queryRes->setKey($key);
     } else {
         echo "通信失败";
         exit;
     }
     //及时到账
     if ($resHandler->getParameter("trade_mode") == "1") {
         //只有签名正确,retcode为0,trade_state为0才是支付成功
         if ($queryRes->isTenpaySign() && $queryRes->getParameter("retcode") == "0" && $resHandler->getParameter("trade_state") == "0") {
             //log_result("即时到帐验签ID成功");
             //取结果参数做业务处理
             $out_trade_no = $resHandler->getParameter("out_trade_no");
             //财付通订单号
             $transaction_id = $resHandler->getParameter("transaction_id");
             //金额,以分为单位
             $total_fee = $resHandler->getParameter("total_fee");
             //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
             $discount = $resHandler->getParameter("discount");
             //------------------------------
             //处理业务开始
             //------------------------------
             //处理数据库逻辑
             //注意交易单不要重复处理
             //注意判断返回金额
             $total_fee_t = $total_fee / 100;
             $this->db->Autocommit_start();
             $dingdaninfo = $this->db->GetOne("select * from `@#_member_addmoney_record` where `code` = '{$out_trade_no}' and `money` = '{$total_fee_t}' and `status` = '未付款' for update");
             if (!$dingdaninfo) {
                 echo "fail";
                 exit;
             }
             $time = time();
             $up_q1 = $this->db->Query("UPDATE `@#_member_addmoney_record` SET `pay_type` = '财付通', `status` = '已付款' where `id` = '{$dingdaninfo['id']}' and `code` = '{$dingdaninfo['code']}'");
             $up_q2 = $this->db->Query("UPDATE `@#_member` SET `money` = `money` + {$total_fee_t} where (`uid` = '{$dingdaninfo['uid']}')");
             $up_q3 = $this->db->Query("INSERT INTO `@#_member_account` (`uid`, `type`, `pay`, `content`, `money`, `time`) VALUES ('{$dingdaninfo['uid']}', '1', '账户', '充值', '{$total_fee_t}', '{$time}')");
             if ($up_q1 && $up_q2 && $up_q3) {
                 $this->db->Autocommit_commit();
             } else {
                 $this->db->Autocommit_rollback();
                 echo "fail";
                 exit;
             }
             if (empty($dingdaninfo['scookies'])) {
                 echo "success";
                 exit;
             }
             $uid = $dingdaninfo['uid'];
             $scookies = unserialize($dingdaninfo['scookies']);
             $pay = System::load_app_class('pay', 'pay');
             $pay->scookie = $scookies;
             $ok = $pay->init($uid, $pay_type['pay_id'], 'go_record');
             //闪购商品
             if ($ok != 'ok') {
                 _setcookie('Cartlist', NULL);
                 echo "fail";
                 exit;
                 //商品购买失败
             }
             $check = $pay->go_pay(1);
             if ($check) {
                 $this->db->Query("UPDATE `@#_member_addmoney_record` SET `scookies` = '1' where `code` = '{$out_trade_no}' and `status` = '已付款'");
                 _setcookie('Cartlist', NULL);
                 echo "success";
                 exit;
             } else {
                 echo "fail";
                 exit;
             }
             //------------------------------
             //处理业务完毕
             //------------------------------
             //log_result("即时到帐后台回调成功");
         } else {
             echo "fail";
         }
     } else {
         //通信失败
         //echo "fail";
         //后台调用通信失败,写日志,方便定位问题
         //echo "<br>call err:" . $httpClient->getResponseCode() ."," . $httpClient->getErrInfo() . "<br>";
     }
 }
Exemple #11
0
function trade_notifycheck($type)
{
    global $_G;
    if (DISCUZ_TENPAY_DIRECT && $type == 'credit') {
        $resHandler = new ResponseHandler();
        $resHandler->setKey(DISCUZ_SECURITYCODE);
        $resHandler->setParameter("pay_time", "");
    } else {
        $resHandler = new MediPayResponseHandler();
        $resHandler->setKey(DISCUZ_TENPAY_OPENTRANS_KEY);
    }
    if ($type == 'credit') {
        if (DISCUZ_TENPAY_DIRECT && $resHandler->isTenpaySign() && DISCUZ_PARTNER == $_G['gp_bargainor_id']) {
            return array('validator' => !$_G['gp_pay_result'], 'order_no' => $_G['gp_sp_billno'], 'trade_no' => $_G['gp_transaction_id'], 'price' => $_G['gp_total_fee'] / 100, 'bargainor_id' => $_G['gp_bargainor_id'], 'location' => true);
        } elseif (!DISCUZ_TENPAY_DIRECT && $resHandler->isTenpaySign()) {
            return array('validator' => $resHandler->getParameter('retcode') == '0', 'order_no' => $resHandler->getParameter('mch_vno'), 'trade_no' => $resHandler->getParameter('cft_tid'), 'price' => $resHandler->getParameter('total_fee') / 100.0, 'status' => $resHandler->getParameter('status'), 'location' => true);
        }
    } elseif ($type == 'trade') {
        if ($resHandler->isTenpaySign()) {
            return array('validator' => $resHandler->getParameter('retcode') == '0', 'order_no' => $resHandler->getParameter('mch_vno'), 'trade_no' => $resHandler->getParameter('cft_tid'), 'price' => $resHandler->getParameter('total_fee') / 100.0, 'status' => $resHandler->getParameter('status'), 'location' => true);
        }
    } else {
        return array('validator' => FALSE, 'location' => 'forum.php?mod=memcp&action=credits&operation=addfunds&return=fail');
    }
}
Exemple #12
0
function trade_notifycheck($type)
{
    global $_G;
    if ($type == 'credit' || $type == 'invite') {
        if (!DISCUZ_SECURITYCODE) {
            exit('Access Denied');
        }
        $resHandler = new ResponseHandler();
        $resHandler->setKey(DISCUZ_SECURITYCODE);
        $resHandler->setParameter("bankname", "");
    } else {
        if (!DISCUZ_TENPAY_OPENTRANS_KEY) {
            exit('Access Denied');
        }
        $resHandler = new MediPayResponseHandler();
        $resHandler->setKey(DISCUZ_TENPAY_OPENTRANS_KEY);
    }
    if ($type == 'credit' || $type == 'invite') {
        if ($resHandler->isTenpaySign() && DISCUZ_PARTNER == $_GET['partner']) {
            return array('validator' => !$_GET['trade_state'], 'order_no' => $_GET['out_trade_no'], 'trade_no' => $_GET['transaction_id'], 'price' => $_GET['total_fee'] / 100, 'bargainor_id' => $_GET['partner'], 'location' => true);
        }
    } elseif ($type == 'trade') {
        if ($resHandler->isTenpaySign()) {
            return array('validator' => $resHandler->getParameter('retcode') == '0', 'order_no' => $resHandler->getParameter('mch_vno'), 'trade_no' => $resHandler->getParameter('cft_tid'), 'price' => $resHandler->getParameter('total_fee') / 100.0, 'status' => $resHandler->getParameter('status'), 'location' => true);
        }
    } else {
        return array('validator' => FALSE, 'location' => 'forum.php?mod=memcp&action=credits&operation=addfunds&return=fail');
    }
}
 public function notify($request)
 {
     //		$url = "http://o2o.7dit.com/tenpay.php?";
     //		foreach($_REQUEST as $k=>$v)
     //		{
     //			$url.=$k."=".$v."&";
     //		}
     //		$str = file_get_contents(APP_ROOT_PATH."log.txt")."\n".print_r($_REQUEST,1)."\n".$url;
     //		@file_put_contents(APP_ROOT_PATH."log.txt", $str);
     require_once APP_ROOT_PATH . "system/payment/tenpayc2c/ResponseHandler.class.php";
     require_once APP_ROOT_PATH . "system/payment/tenpayc2c/RequestHandler.class.php";
     require_once APP_ROOT_PATH . "system/payment/tenpayc2c/TenpayHttpClient.class.php";
     require_once APP_ROOT_PATH . "system/payment/tenpayc2c/ClientResponseHandler.class.php";
     $return_res = array('info' => '', 'status' => false);
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='tenpayc2c'");
     $payment['config'] = unserialize($payment['config']);
     /* 创建支付应答对象 */
     $resHandler = new ResponseHandler();
     $resHandler->setKey($payment['config']['tencentpay_key']);
     //判断签名
     if ($resHandler->isTenpaySign()) {
         //通知id
         //		error_reporting(E_ALL);
         //		ini_set("display_errors",1);
         $notify_id = $resHandler->getParameter("notify_id");
         //通过通知ID查询,确保通知来至财付通
         //创建查询请求
         $queryReq = new RequestHandler();
         $queryReq->init();
         $queryReq->setKey($payment['config']['tencentpay_key']);
         $queryReq->setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml");
         $queryReq->setParameter("partner", $payment['config']['tencentpay_id']);
         $queryReq->setParameter("notify_id", $notify_id);
         //通信对象
         $httpClient = new TenpayHttpClient();
         $httpClient->setTimeOut(5);
         //设置请求内容
         $httpClient->setReqContent($queryReq->getRequestURL());
         //后台调用
         if ($httpClient->call()) {
             //设置结果参数
             $queryRes = new ClientResponseHandler();
             $queryRes->setContent($httpClient->getResContent());
             $queryRes->setKey($payment['config']['tencentpay_key']);
             if ($resHandler->getParameter("trade_mode") == "2") {
                 //判断签名及结果(中介担保)
                 //只有签名正确,retcode为0,trade_state为0才是支付成功
                 //				print_r($queryRes);
                 if ($queryRes->isTenpaySign() && $queryRes->getParameter("retcode") == "0") {
                     //取结果参数做业务处理
                     $out_trade_no = $resHandler->getParameter("out_trade_no");
                     //财付通订单号
                     $transaction_id = $resHandler->getParameter("transaction_id");
                     //金额,以分为单位
                     $total_fee = $resHandler->getParameter("total_fee");
                     //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
                     $discount = $resHandler->getParameter("discount");
                     //------------------------------
                     //处理业务开始
                     //------------------------------
                     //处理数据库逻辑
                     //注意交易单不要重复处理
                     //注意判断返回金额
                     if ($resHandler->getParameter("trade_state") == "0" || $resHandler->getParameter("trade_state") == '5' || $resHandler->getParameter("status") == "3") {
                         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $out_trade_no . "'");
                         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
                         require_once APP_ROOT_PATH . "system/libs/cart.php";
                         $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $transaction_id . "' where id = " . $payment_notice['id']);
                         $rs = payment_paid($payment_notice['id']);
                         if ($rs) {
                             order_paid($payment_notice['order_id']);
                             echo "success";
                         } else {
                             echo 'fail';
                         }
                     } else {
                         echo "success";
                     }
                 } else {
                     //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。
                     //echo "验证签名失败 或 业务错误信息:trade_state=" . $resHandler->getParameter("trade_state") . ",retcode=" . $queryRes->             										       getParameter("retcode"). ",retmsg=" . $queryRes->getParameter("retmsg") . "<br/>" ;
                     echo "fail";
                 }
             }
             //获取查询的debug信息,建议把请求、应答内容、debug信息,通信返回码写入日志,方便定位问题
             /*
             echo "<br>------------------------------------------------------<br>";
             echo "http res:" . $httpClient->getResponseCode() . "," . $httpClient->getErrInfo() . "<br>";
             echo "query req:" . htmlentities($queryReq->getRequestURL(), ENT_NOQUOTES, "GB2312") . "<br><br>";
             echo "query res:" . htmlentities($queryRes->getContent(), ENT_NOQUOTES, "GB2312") . "<br><br>";
             echo "query reqdebug:" . $queryReq->getDebugInfo() . "<br><br>" ;
             echo "query resdebug:" . $queryRes->getDebugInfo() . "<br><br>";
             */
         } else {
             //通信失败
             echo "fail";
             //后台调用通信失败,写日志,方便定位问题
             echo "<br>call err:" . $httpClient->getResponseCode() . "," . $httpClient->getErrInfo() . "<br>";
         }
     } else {
         header("Content-Type:text/html; charset=utf-8");
         echo "<br/>" . "认证签名失败" . "<br/>";
         echo $resHandler->getDebugInfo() . "<br>";
     }
 }
Exemple #14
0
 public function tenpaynotice()
 {
     require_once C('APP_ROOT') . "Lib/Pay/Tenpay/ResponseHandler.class.php";
     require_once C('APP_ROOT') . "Lib/Pay/Tenpay/RequestHandler.class.php";
     require_once C('APP_ROOT') . "Lib/Pay/Tenpay/client/ClientResponseHandler.class.php";
     require_once C('APP_ROOT') . "Lib/Pay/Tenpay/client/TenpayHttpClient.class.php";
     /* 创建支付应答对象 */
     $resHandler = new ResponseHandler();
     $resHandler->setKey($this->payConfig['tenpay']['mkey']);
     //Log::write('tenpay notice:'.print_r($resHandler->getAllParameters(), true), Log::DEBUG);
     //判断签名
     if ($resHandler->isTenpaySign()) {
         //通知id
         $notify_id = $resHandler->getParameter("notify_id");
         $tenpay_params = C('TENPAY_PARAMS');
         //通过通知ID查询,确保通知来至财付通
         //创建查询请求
         $queryReq = new RequestHandler();
         $queryReq->init();
         $queryReq->setKey($this->payConfig['tenpay']['mkey']);
         $queryReq->setGateUrl($tenpay_params["VERIFY_URL"]);
         $queryReq->setParameter("partner", $this->payConfig['tenpay']['MerCode']);
         $queryReq->setParameter("notify_id", $notify_id);
         $queryReq->setParameter("input_charset", "UTF-8");
         //通信对象
         $httpClient = new TenpayHttpClient();
         $httpClient->setTimeOut(5);
         //设置请求内容
         $httpClient->setReqContent($queryReq->getRequestURL());
         //后台调用
         if ($httpClient->call()) {
             //设置结果参数
             $queryRes = new ClientResponseHandler();
             $queryRes->setContent($httpClient->getResContent());
             $queryRes->setKey($this->payConfig['tenpay']['mkey']);
             //判断签名及结果
             //只有签名正确,retcode为0,trade_state为0才是支付成功
             if ($queryRes->isTenpaySign() && $queryRes->getParameter("retcode") == "0" && $queryRes->getParameter("trade_state") == "0" && $queryRes->getParameter("trade_mode") == "1") {
                 //取结果参数做业务处理
                 $out_trade_no = $queryRes->getParameter("out_trade_no");
                 //财付通订单号
                 $transaction_id = $queryRes->getParameter("transaction_id");
                 //金额,以分为单位
                 $total_fee = $queryRes->getParameter("total_fee");
                 //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
                 $discount = $queryRes->getParameter("discount");
                 //------------------------------
                 //处理业务开始
                 //------------------------------
                 //处理数据库逻辑
                 //注意交易单不要重复处理
                 //注意判断返回金额
                 $nid = $this->createnid("tenpay", $out_trade_no);
                 $done = $this->payDone(1, $nid, $transaction_id, "total_fee:" . $total_fee);
                 //------------------------------
                 //处理业务完毕
                 //------------------------------
                 echo "success";
             } else {
                 //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。
                 //echo "验证签名失败 或 业务错误信息:trade_state=" . $queryRes->getParameter("trade_state") . ",retcode=" . $queryRes->getParameter("retcode"). ",retmsg=" . $queryRes->getParameter("retmsg") . "<br/>" ;
                 $out_trade_no = $resHandler->getParameter("out_trade_no");
                 $nid = $this->createnid("tenpay", $out_trade_no);
                 $done = $this->payDone(3, $nid, "", print_r($queryRes->getAllParameters(), true));
                 echo "fail";
             }
         } else {
             // 				$out_trade_no = $resHandler->getParameter("out_trade_no");
             // 				$nid = $this->createnid( "tenpay", $out_trade_no);
             // 				$done = $this->payDone(3,$nid, "", print_r($resHandler->getAllParameters(), true));
             //通信失败
             echo "fail";
             //后台调用通信失败,写日志,方便定位问题
             //echo "<br>call err:" . $httpClient->getResponseCode() ."," . $httpClient->getErrInfo() . "<br>";
             Log::write("tenpay notice:<br>call err:" . $httpClient->getResponseCode() . "," . $httpClient->getErrInfo(), Log::DEBUG);
         }
     } else {
         $out_trade_no = $resHandler->getParameter("out_trade_no");
         $transaction_id = $resHandler->getParameter("transaction_id");
         $nid = $this->createnid("tenpay", $out_trade_no);
         $done = $this->payDone(2, $nid, $transaction_id, print_r($resHandler->getAllParameters(), true));
         //回调签名错误
         echo "fail";
     }
 }
Exemple #15
0
 public function notify($request)
 {
     unset($_POST['city']);
     unset($_GET['city']);
     require APP_ROOT_PATH . "system/payment/TenpayBank/classes/ResponseHandler.class.php";
     require APP_ROOT_PATH . "system/payment/TenpayBank/classes/function.php";
     $return_res = array('info' => '', 'status' => false);
     $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='TenpayBank'");
     $payment['config'] = unserialize($payment['config']);
     $resHandler = new ResponseHandler();
     $resHandler->setKey($payment['config']['tencentpay_key']);
     //判断签名
     if ($resHandler->isTenpaySign()) {
         //通知id
         $notify_id = $resHandler->getParameter("notify_id");
         //商户订单号
         $out_trade_no = $resHandler->getParameter("out_trade_no");
         //财付通订单号
         $transaction_id = $resHandler->getParameter("transaction_id");
         //金额,以分为单位
         $total_fee = $resHandler->getParameter("total_fee");
         //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
         $discount = $resHandler->getParameter("discount");
         //支付结果
         $trade_state = $resHandler->getParameter("trade_state");
         //交易模式,1即时到账
         $trade_mode = $resHandler->getParameter("trade_mode");
         $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where notice_sn = '" . $out_trade_no . "'");
         $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
         require_once APP_ROOT_PATH . "system/model/cart.php";
         $GLOBALS['db']->query("update " . DB_PREFIX . "payment_notice set outer_notice_sn = '" . $out_trade_no . "' where id = " . $payment_notice['id']);
         $rs = payment_paid($payment_notice['id']);
         if ($rs) {
             $rs = order_paid($payment_notice['order_id']);
             if ($rs) {
                 echo "success";
             } else {
                 echo "success";
             }
         } else {
             echo "fail";
         }
     } else {
         echo "fail";
     }
 }
Exemple #16
0
 /**
  * POST接收数据
  * 状态码说明  (0 交易完成 1 交易失败 2 交易超时 3 交易处理中 4 交易未支付 5交易取消 6交易发生错误)
  */
 public function notify()
 {
     /* 创建支付应答对象 */
     $resHandler = new ResponseHandler();
     $resHandler->setKey($this->config['key']);
     //判断签名
     if ($resHandler->isTenpaySign()) {
         //通知id
         $notify_id = $resHandler->getParameter("notify_id");
         //通过通知ID查询,确保通知来至财付通
         //创建查询请求
         $queryReq = new RequestHandler();
         $queryReq->init();
         $queryReq->setKey($this->config['key']);
         $queryReq->setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml");
         $queryReq->setParameter("partner", $this->config['partner']);
         $queryReq->setParameter("notify_id", $notify_id);
         //通信对象
         $httpClient = new TenpayHttpClient();
         $httpClient->setTimeOut(5);
         //设置请求内容
         $httpClient->setReqContent($queryReq->getRequestURL());
         //后台调用
         if ($httpClient->call()) {
             //设置结果参数
             $queryRes = new ClientResponseHandler();
             $queryRes->setContent($httpClient->getResContent());
             $queryRes->setKey($this->config['key']);
             if ($resHandler->getParameter("trade_mode") == "1") {
                 //判断签名及结果(即时到帐)
                 //只有签名正确,retcode为0,trade_state为0才是支付成功
                 if ($queryRes->isTenpaySign() && $queryRes->getParameter("retcode") == "0" && $resHandler->getParameter("trade_state") == "0") {
                     $return_data['order_id'] = $resHandler->getParameter("out_trade_no");
                     $return_data['price'] = dround($resHandler->getParameter("total_fee") / 100);
                     $return_data['account'] = $resHandler->getParameter("partner");
                     $return_data['order_status'] = 0;
                     return $return_data;
                 } else {
                     //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。
                     //echo "验证签名失败 或 业务错误信息:trade_state=" . $resHandler->getParameter("trade_state") . ",retcode=" . $queryRes-> getParameter("retcode"). ",retmsg=" . $queryRes->getParameter("retmsg") . "<br/>" ;
                     error_log(date('m-d H:i:s') . '| POST: ' . $queryRes->getParameter("retmsg") . ' |' . "\r\n", 3, LOG_PATH . 'tenpay_error_log.php');
                     return false;
                 }
             } elseif ($resHandler->getParameter("trade_mode") == "2") {
                 //判断签名及结果(中介担保)
                 //只有签名正确,retcode为0,trade_state为0才是支付成功
                 if ($queryRes->isTenpaySign() && $queryRes->getParameter("retcode") == "0") {
                     $return_data['order_id'] = $resHandler->getParameter("out_trade_no");
                     $return_data['price'] = dround($resHandler->getParameter("total_fee") / 100);
                     $return_data['account'] = $resHandler->getParameter("partner");
                     switch ($resHandler->getParameter("trade_state")) {
                         case 0:
                             $return_data['order_status'] = 3;
                             break;
                         case 1:
                             $return_data['order_status'] = 4;
                             break;
                         case 2:
                             $return_data['order_status'] = 4;
                             break;
                         case 4:
                             $return_data['order_status'] = 3;
                             break;
                         case 5:
                             $return_data['order_status'] = 0;
                             break;
                         case 6:
                             $return_data['order_status'] = 5;
                             break;
                         case 7:
                             $return_data['order_status'] = 3;
                             break;
                         case 8:
                             $return_data['order_status'] = 3;
                             break;
                         case 9:
                             $return_data['order_status'] = 5;
                             break;
                         case 10:
                             $return_data['order_status'] = 5;
                             break;
                         default:
                             $return_data['order_status'] = 5;
                     }
                     return $return_data;
                 } else {
                     //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。
                     //echo "验证签名失败 或 业务错误信息:trade_state=" . $resHandler->getParameter("trade_state") . ",retcode=" . $queryRes->             										       getParameter("retcode"). ",retmsg=" . $queryRes->getParameter("retmsg") . "<br/>" ;
                     error_log(date('m-d H:i:s') . '| POST: ' . $queryRes->getParameter("retmsg") . ' |' . "\r\n", 3, LOG_PATH . 'tenpay_error_log.php');
                     return false;
                 }
             }
             //获取查询的debug信息,建议把请求、应答内容、debug信息,通信返回码写入日志,方便定位问题
             /*
             	echo "<br>------------------------------------------------------<br>";
             	echo "http res:" . $httpClient->getResponseCode() . "," . $httpClient->getErrInfo() . "<br>";
             	echo "query req:" . htmlentities($queryReq->getRequestURL(), ENT_NOQUOTES, "GB2312") . "<br><br>";
             	echo "query res:" . htmlentities($queryRes->getContent(), ENT_NOQUOTES, "GB2312") . "<br><br>";
             	echo "query reqdebug:" . $queryReq->getDebugInfo() . "<br><br>" ;
             	echo "query resdebug:" . $queryRes->getDebugInfo() . "<br><br>";
             */
         } else {
             error_log(date('m-d H:i:s') . '| POST: ' . $httpClient->getErrInfo() . ' |' . "\r\n", 3, LOG_PATH . 'tenpay_error_log.php');
             return false;
         }
     } else {
         error_log(date('m-d H:i:s') . '| POST: ' . $resHandler->getDebugInfo() . ' |' . "\r\n", 3, LOG_PATH . 'tenpay_error_log.php');
         return false;
     }
 }
 private function yanzheng()
 {
     require_once TENPAY_PATH . "/lib/classes/ResponseHandler.class.php";
     require_once TENPAY_PATH . "/lib/classes/function.php";
     require_once TENPAY_PATH . "/lib/tenpay_config.php";
     log_result("进入前台回调页面");
     /* 创建支付应答对象 */
     $resHandler = new ResponseHandler();
     $resHandler->setKey($key);
     //判断签名
     if ($resHandler->isTenpaySign()) {
         return $resHandler;
     } else {
         return false;
     }
 }
Exemple #18
0
if (!$PAY[$bank]['partnerid']) {
    exit('fail');
}
if (strlen($PAY[$bank]['keycode']) < 10) {
    exit('fail');
}
$receive_url = '';
require DT_ROOT . '/api/pay/' . $bank . '/ResponseHandler.class.php';
require DT_ROOT . '/api/pay/' . $bank . '/RequestHandler.class.php';
require DT_ROOT . '/api/pay/' . $bank . '/ClientResponseHandler.class.php';
require DT_ROOT . '/api/pay/' . $bank . '/TenpayHttpClient.class.php';
require DT_ROOT . '/api/pay/' . $bank . '/function.php';
require DT_ROOT . '/api/pay/' . $bank . '/config.inc.php';
#log_result("进入后台回调页面");
/* 创建支付应答对象 */
$resHandler = new ResponseHandler();
$resHandler->setKey($key);
//判断签名
if ($resHandler->isTenpaySign()) {
    //通知id
    $notify_id = $resHandler->getParameter("notify_id");
    //通过通知ID查询,确保通知来至财付通
    //创建查询请求
    $queryReq = new RequestHandler();
    $queryReq->init();
    $queryReq->setKey($key);
    $queryReq->setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml");
    $queryReq->setParameter("partner", $partner);
    $queryReq->setParameter("notify_id", $notify_id);
    //通信对象
    $httpClient = new TenpayHttpClient();
 public function isTenpaySign()
 {
     $keysArr = array("ver", "charset", "bank_type", "bank_billno", "pay_result", "pay_info", "purchase_alias", "bargainor_id", "transaction_id", "sp_billno", "total_fee", "fee_type", "attach", "time_end");
     return parent::isTenpaySign($keysArr);
 }
Exemple #20
0
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<?php 
//---------------------------------------------------------
//财付通即时到帐支付页面回调示例,商户按照此文档进行开发即可
//---------------------------------------------------------
require_once "./classes/ResponseHandler.class.php";
require_once "./classes/function.php";
require_once "./tenpay_config.php";
//log_result("进入前台回调页面");
/* 创建支付应答对象 */
$resHandler = new ResponseHandler();
$resHandler->setKey($key);
//判断签名
if ($resHandler->isTenpaySign()) {
    //通知id
    $notify_id = $resHandler->getParameter("notify_id");
    //商户订单号
    $out_trade_no = $resHandler->getParameter("out_trade_no");
    //财付通订单号
    $transaction_id = $resHandler->getParameter("transaction_id");
    //金额,以分为单位
    $total_fee = $resHandler->getParameter("total_fee");
    //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
    $discount = $resHandler->getParameter("discount");
    //支付结果
    $trade_state = $resHandler->getParameter("trade_state");
    //交易模式,1即时到账
    $trade_mode = $resHandler->getParameter("trade_mode");
    if ("1" == $trade_mode) {
        if ("0" == $trade_state) {
            echo "<br/>" . (double) $total_fee / 100 . "元充值成功!" . "<br/>";
Exemple #21
0
 function endPay($PassageInfo, $OrderInfo)
 {
     /* 商户号 */
     $partner = $PassageInfo['StagePartnerId'];
     /* 密钥 */
     $key = $PassageInfo['StageSecureCode'];
     /* 创建支付应答对象 */
     $resHandler = new ResponseHandler();
     $resHandler->setKey($key);
     //判断签名
     if ($resHandler->isTenpaySign()) {
         //通知id
         $notify_id = $resHandler->getParameter("notify_id");
         //通过通知ID查询,确保通知来至财付通
         //创建查询请求
         $queryReq = new RequestHandler();
         $queryReq->init();
         $queryReq->setKey($key);
         $queryReq->setGateUrl("https://gw.tenpay.com/gateway/verifynotifyid.xml");
         $queryReq->setParameter("partner", $partner);
         $queryReq->setParameter("notify_id", $notify_id);
         //通信对象
         $httpClient = new TenpayHttpClient();
         $httpClient->setTimeOut(5);
         //设置请求内容
         $httpClient->setReqContent($queryReq->getRequestURL());
         //后台调用
         if ($httpClient->call()) {
             //设置结果参数
             $queryRes = new ClientResponseHandler();
             $queryRes->setContent($httpClient->getResContent());
             $queryRes->setKey($key);
             //判断签名及结果
             //只有签名正确,retcode为0,trade_state为0才是支付成功
             //echo "sign:".$queryRes->isTenpaySign().",retcode:".$queryRes->getParameter("retcode").",trade_state:".$queryRes->getParameter("trade_state").",trade_mode:".$queryRes->getParameter("trade_mode")."<br>";
             if ($queryRes->isTenpaySign() && $queryRes->getParameter("retcode") == "0" && $queryRes->getParameter("trade_state") == "0" && $queryRes->getParameter("trade_mode") == "1") {
                 //取结果参数做业务处理
                 $out_trade_no = $queryRes->getParameter("out_trade_no");
                 //财付通订单号
                 $transaction_id = $queryRes->getParameter("transaction_id");
                 //金额,以分为单位
                 $total_fee = $queryRes->getParameter("total_fee");
                 //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
                 $discount = $queryRes->getParameter("discount");
                 if ($OrderInfo['OrderId'] == $out_trade_no && $total_fee == $OrderInfo['Coin'] * 100) {
                     $Pay['OrderId'] = $OrderInfo['OrderId'];
                     $Pay['PayUserId'] = $OrderInfo['PayUserId'];
                     $Pay['AcceptUserId'] = $OrderInfo['AcceptUserId'];
                     $Pay['AppId'] = $OrderInfo['AppId'];
                     $Pay['PartnerId'] = $OrderInfo['PartnerId'];
                     $Pay['PassageId'] = $OrderInfo['PassageId'];
                     $Pay['SubPassageId'] = $OrderInfo['SubPassageId'];
                     $Pay['Amount'] = $OrderInfo['Amount'];
                     $Pay['Coin'] = $OrderInfo['Coin'];
                     $Pay['Credit'] = $OrderInfo['Credit'];
                     $Pay['PayIP'] = $OrderInfo['PayIP'];
                     $Pay['PayTime'] = $OrderInfo['PayTime'];
                     $Pay['PayedTime'] = strtotime($queryRes->getParameter("time_end"));
                     $Pay['UserSourceId'] = $OrderInfo['UserSourceId'];
                     $Pay['UserSourceDetail'] = $OrderInfo['UserSourceDetail'];
                     $Pay['UserSourceProjectId'] = $OrderInfo['UserSourceProjectId'];
                     $Pay['UserSourceActionId'] = $OrderInfo['UserSourceActionId'];
                     $Pay['UserRegTime'] = $OrderInfo['UserRegTime'];
                     $Pay['StageOrder'] = $transaction_id;
                     $Pay['comment'] = json_encode(array('bank_info' => 'bank_type' != "DEFAULT" ? $queryRes->getParameter("bank_type") . "|" . $queryRes->getParameter("bank_billno") : "DEFAULT"));
                     return $Pay;
                 } else {
                     return false;
                 }
                 //------------------------------
                 //处理业务开始
                 //------------------------------
                 //处理数据库逻辑
                 //注意交易单不要重复处理
                 //注意判断返回金额
                 //------------------------------
                 //处理业务完毕
                 //------------------------------
                 echo "success";
             } else {
                 //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。
                 //echo "验证签名失败 或 业务错误信息:trade_state=" . $queryRes->getParameter("trade_state") . ",retcode=" . $queryRes->getParameter("retcode"). ",retmsg=" . $queryRes->getParameter("retmsg") . "<br/>" ;
                 echo "1fail";
             }
             //获取查询的debug信息,建议把请求、应答内容、debug信息,通信返回码写入日志,方便定位问题
             /*
             echo "<br>------------------------------------------------------<br>";
             echo "http res:" . $httpClient->getResponseCode() . "," . $httpClient->getErrInfo() . "<br>";
             echo "query req:" . htmlentities($queryReq->getRequestURL(), ENT_NOQUOTES, "GB2312") . "<br><br>";
             echo "query res:" . htmlentities($queryRes->getContent(), ENT_NOQUOTES, "GB2312") . "<br><br>";
             echo "query reqdebug:" . $queryReq->getDebugInfo() . "<br><br>" ;
             echo "query resdebug:" . $queryRes->getDebugInfo() . "<br><br>";
             */
         } else {
             //通信失败
             echo "2fail";
             //后台调用通信失败,写日志,方便定位问题
             //echo "<br>call err:" . $httpClient->getResponseCode() ."," . $httpClient->getErrInfo() . "<br>";
         }
     } else {
         //回调签名错误
         echo "3fail";
         //echo "<br>签名失败<br>";
     }
     //获取debug信息,建议把debug信息写入日志,方便定位问题
     //echo $resHandler->getDebugInfo() . "<br>";
 }
	public function charge_return (){		
		
		import("@.ORG.TenpayComputer.ResponseHandler");
		$resHandler = new ResponseHandler();
		$key=trim(C('tenpay_partnerkey'));
		$resHandler->setKey($key);
		$out_trade_no = $this->_get('out_trade_no');
		//if($resHandler->isTenpaySign()) {
		$notify_id = $resHandler->getParameter("notify_id");
		//商户订单号
		$out_trade_no = $resHandler->getParameter("out_trade_no");
		//财付通订单号
		$transaction_id = $resHandler->getParameter("transaction_id");
		//金额,以分为单位
		$total_fee = $resHandler->getParameter("total_fee");
		//如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
		$discount = $resHandler->getParameter("discount");
		//支付结果
		$trade_state = $resHandler->getParameter("trade_state");
		//交易模式,1即时到账
		$trade_mode = $resHandler->getParameter("trade_mode");

		if("0" == $trade_state) {
			$total_fee=$total_fee/100;
			$indent=M('Indent')->where(array('indent_id'=>$out_trade_no))->find();
			if($indent!=false){
				if($indent['status']==1){$this->error('该订单已经处理过,请勿重复操作');}
				M('Users')->where(array('id'=>$indent['uid']))->setInc('money',intval($indent['price']));
				M('Users')->where(array('id'=>$indent['uid']))->setInc('moneybalance',intval($indent['price']));
				$back=M('Indent')->where(array('id'=>$indent['id']))->setField('status',1);
				if($back!=false){
					$this->success('充值成功',U('User/Index/index'));
				}else{
					$this->error('充值失败,请在线客服,为您处理',U('User/Index/index'));
				}
			}else{
				$this->error('订单不存在',U('User/Index/index'));

			}
		}else {
			exit('付款失败');
		}
	}
	public function return_url()
	{
		import('@.ORG.TenpayComputer.ResponseHandler');
		$resHandler = new ResponseHandler();
		$key = $this->payConfig['partnerkey'];
		$resHandler->setKey($key);
		$out_trade_no = $this->_get('out_trade_no');
		$notify_id = $resHandler->getParameter('notify_id');
		$out_trade_no = $resHandler->getParameter('out_trade_no');
		$transaction_id = $resHandler->getParameter('transaction_id');
		$total_fee = $resHandler->getParameter('total_fee');
		$discount = $resHandler->getParameter('discount');
		$trade_state = $resHandler->getParameter('trade_state');
		$trade_mode = $resHandler->getParameter('trade_mode');

		if ('0' == $trade_state) {
			$payHandel = new payHandle($_GET['token'], $_GET['from'], 'tenpayComputer');
			$orderInfo = $payHandel->afterPay($out_trade_no, $_GET['transaction_id']);
			$from = $payHandel->getFrom();
			$this->redirect('/index.php?g=Wap&m=' . $from . '&a=payReturn&token=' . $orderInfo['token'] . '&wecha_id=' . $orderInfo['wecha_id'] . '&orderid=' . $out_trade_no);
		}
		else {
			exit('付款失败');
		}
	}
Exemple #24
0
 private function handle(ResponseHandler $obj)
 {
     if ($obj->getStatusNumber($this) != 200) {
         header($_SERVER["SERVER_PROTOCOL"] . " " . $obj->getStatus($this));
         // FastCGI, blecch
         header("Status: " . $obj->getStatus($this));
         $_SERVER['REDIRECT_STATUS'] = $obj->getStatusNumber($this);
         // end FastCGI
     }
     $ret = $obj->getResponse($this);
     if ($ret instanceof ResponseHandler) {
         $this->handle($ret);
     } else {
         json_response($ret);
     }
 }
Exemple #25
0
<?php

//---------------------------------------------------------
//财付通即时到帐支付后台回调示例,商户按照此文档进行开发即可
//---------------------------------------------------------
require "classes/ResponseHandler.class.php";
require "classes/RequestHandler.class.php";
require "classes/client/ClientResponseHandler.class.php";
require "classes/client/TenpayHttpClient.class.php";
/* 商户号 */
$partner = "1900000109";
/* 密钥 */
$key = "8934e7d15453e97507ef794cf7b0519d";
/* 创建支付应答对象 */
$resHandler = new ResponseHandler();
$resHandler->setKey($key);
//判断签名
if ($resHandler->isTenpaySign()) {
    //通知id
    $notify_id = $resHandler->getParameter("notify_id");
    //通过通知ID查询,确保通知来至财付通
    //创建查询请求
    $queryReq = new RequestHandler();
    $queryReq->init();
    $queryReq->setKey($key);
    $queryReq->setGateUrl("https://gw.tenpay.com/gateway/verifynotifyid.xml");
    $queryReq->setParameter("partner", $partner);
    $queryReq->setParameter("notify_id", $notify_id);
    //通信对象
    $httpClient = new TenpayHttpClient();
    $httpClient->setTimeOut(5);
Exemple #26
0
 public function notify_url()
 {
     $partner = CS_Tenpay_ID;
     $key = CS_Tenpay_Key;
     require CSCMSPATH . "pay/tenpay/ResponseHandler.class.php";
     require CSCMSPATH . "pay/tenpay/RequestHandler.class.php";
     require CSCMSPATH . "pay/tenpay/client/ClientResponseHandler.class.php";
     require CSCMSPATH . "pay/tenpay/client/TenpayHttpClient.class.php";
     $resHandler = new ResponseHandler();
     $resHandler->setKey($key);
     if ($resHandler->isTenpaySign()) {
         $notify_id = $resHandler->getParameter("notify_id");
         $queryReq = new RequestHandler();
         $queryReq->init();
         $queryReq->setKey($key);
         $queryReq->setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml");
         $queryReq->setParameter("partner", $partner);
         $queryReq->setParameter("notify_id", $notify_id);
         $httpClient = new TenpayHttpClient();
         $httpClient->setTimeOut(5);
         $httpClient->setReqContent($queryReq->getRequestURL());
         if ($httpClient->call()) {
             $queryRes = new ClientResponseHandler();
             $queryRes->setContent($httpClient->getResContent());
             $queryRes->setKey($key);
             if ($resHandler->getParameter("trade_mode") == "1") {
                 //判断签名及结果(即时到帐)
                 if ($queryRes->isTenpaySign() && $queryRes->getParameter("retcode") == "0" && $resHandler->getParameter("trade_state") == "0") {
                     $out_trade_no = $resHandler->getParameter("out_trade_no");
                     $transaction_id = $resHandler->getParameter("transaction_id");
                     $total_fee = $resHandler->getParameter("total_fee");
                     $discount = $resHandler->getParameter("discount");
                     //获取订单记录
                     $row = $this->CsdjDB->get_row('pay', '*', $out_trade_no, 'dingdan');
                     if ($row && $row->pid != 1) {
                         //增加金钱
                         $this->db->query("update " . CS_SqlPrefix . "user set rmb=rmb+" . $row->rmb . " where id=" . $row->uid . "");
                         //改变状态
                         $this->db->query("update " . CS_SqlPrefix . "pay set pid=1 where id=" . $row->id . "");
                         //发送通知
                         $add['uida'] = $row->uid;
                         $add['uidb'] = 0;
                         $add['name'] = L('pay_11');
                         $add['neir'] = L('pay_17', array($row->rmb, $out_trade_no));
                         $add['addtime'] = time();
                         $this->CsdjDB->get_insert('msg', $add);
                     }
                     echo "success";
                 } else {
                     echo "fail";
                 }
             } elseif ($resHandler->getParameter("trade_mode") == "2") {
                 //判断签名及结果(中介担保)
                 if ($queryRes->isTenpaySign() && $queryRes->getParameter("retcode") == "0") {
                     $out_trade_no = $resHandler->getParameter("out_trade_no");
                     $transaction_id = $resHandler->getParameter("transaction_id");
                     $total_fee = $resHandler->getParameter("total_fee");
                     $discount = $resHandler->getParameter("discount");
                     $row = $this->CsdjDB->get_row('pay', '*', $out_trade_no, 'dingdan');
                     switch ($resHandler->getParameter("trade_state")) {
                         case "0":
                             //付款成功
                             if ($row) {
                                 $this->db->query("update " . CS_SqlPrefix . "pay set pid=2 where id=" . $row->id . "");
                                 //发送通知
                                 $add['uida'] = $row->uid;
                                 $add['uidb'] = 0;
                                 $add['name'] = L('pay_13');
                                 $add['neir'] = L('pay_14', array($row->rmb, $out_trade_no));
                                 $add['addtime'] = time();
                                 $this->CsdjDB->get_insert('msg', $add);
                             }
                             break;
                         case "1":
                             //交易创建
                             break;
                         case "2":
                             //收获地址填写完毕
                             break;
                         case "4":
                             //卖家发货成功
                             if ($row) {
                                 $this->db->query("update " . CS_SqlPrefix . "pay set pid=3 where id=" . $row->id . "");
                                 //发送通知
                                 $add['uida'] = $row->uid;
                                 $add['uidb'] = 0;
                                 $add['name'] = L('pay_15');
                                 $add['neir'] = L('pay_16', array($out_trade_no));
                                 $add['addtime'] = time();
                                 $this->CsdjDB->get_insert('msg', $add);
                             }
                             break;
                         case "5":
                             //买家收货确认,交易成功
                             if ($row && $row->pid != 1) {
                                 //增加金钱
                                 $this->db->query("update " . CS_SqlPrefix . "user set rmb=rmb+" . $row->rmb . " where id=" . $row->uid . "");
                                 //改变状态
                                 $this->db->query("update " . CS_SqlPrefix . "pay set pid=1 where id=" . $row->id . "");
                                 //发送通知
                                 $add['uida'] = $row->uid;
                                 $add['uidb'] = 0;
                                 $add['name'] = L('pay_11');
                                 $add['neir'] = L('pay_17', array($row->rmb, $out_trade_no));
                                 $add['addtime'] = time();
                                 $this->CsdjDB->get_insert('msg', $add);
                             }
                             break;
                         case "6":
                             //交易关闭,未完成超时关闭
                             break;
                         case "7":
                             //修改交易价格成功
                             break;
                         case "8":
                             //买家发起退款
                             break;
                         case "9":
                             //退款成功
                             break;
                         case "10":
                             //退款关闭
                             break;
                         default:
                             break;
                     }
                     echo "success";
                 } else {
                     echo "fail";
                 }
             }
         } else {
             //通信失败
             echo "fail";
         }
     } else {
         echo "fail";
     }
 }
 public function return_url()
 {
     import("@.ORG.TenpayComputer.ResponseHandler");
     $resHandler = new ResponseHandler();
     $key = $this->payConfig['partnerkey'];
     $resHandler->setKey($key);
     $out_trade_no = $this->_get('out_trade_no');
     //if($resHandler->isTenpaySign()) {
     $notify_id = $resHandler->getParameter("notify_id");
     //商户订单号
     $out_trade_no = $resHandler->getParameter("out_trade_no");
     //财付通订单号
     $transaction_id = $resHandler->getParameter("transaction_id");
     //金额,以分为单位
     $total_fee = $resHandler->getParameter("total_fee");
     //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
     $discount = $resHandler->getParameter("discount");
     //支付结果
     $trade_state = $resHandler->getParameter("trade_state");
     //交易模式,1即时到账
     $trade_mode = $resHandler->getParameter("trade_mode");
     if ("0" == $trade_state) {
         //after
         $payHandel = new payHandle($_GET['token'], $_GET['from'], 'tenpayComputer');
         $orderInfo = $payHandel->afterPay($out_trade_no);
         $from = $payHandel->getFrom();
         //
         $this->redirect('/index.php?g=Wap&m=' . $from . '&a=payReturn&token=' . $orderInfo['token'] . '&wecha_id=' . $orderInfo['wecha_id'] . '&orderid=' . $out_trade_no);
     } else {
         exit('付款失败');
     }
     //}else {
     //exit('sign error');
     //	}
 }
Exemple #28
0
 public function web_return()
 {
     unset($_GET["pay_type"]);
     import("@.ORG.pay.TenpayComputer.ResponseHandler");
     $resHandler = new ResponseHandler();
     $resHandler->setKey($this->pay_config["pay_tenpay_partnerkey"]);
     if ($resHandler->isTenpaySign()) {
         $notify_id = $resHandler->getParameter("notify_id");
         $out_trade_no = $resHandler->getParameter("out_trade_no");
         $transaction_id = $resHandler->getParameter("transaction_id");
         $total_fee = $resHandler->getParameter("total_fee");
         $discount = $resHandler->getParameter("discount");
         $trade_state = $resHandler->getParameter("trade_state");
         $trade_mode = $resHandler->getParameter("trade_mode");
         if ("0" == $trade_state) {
             $order_id_arr = explode("_", $out_trade_no);
             $order_param["pay_type"] = "tenpay";
             $order_param["is_mobile"] = "0";
             $order_param["order_type"] = $order_id_arr[0];
             $order_param["order_id"] = $order_id_arr[1];
             $order_param["third_id"] = $transaction_id;
             $order_param["pay_money"] = $total_fee / 100;
             return array("error" => 0, "order_param" => $order_param);
         } else {
             return array("error" => 1, "msg" => "支付错误:付款失败!请联系管理员。");
         }
     } else {
         return array("error" => 1, "msg" => "支付错误:认证签名失败!请联系管理员。");
     }
 }
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<?php 
//---------------------------------------------------------
//财付通即时到帐支付后台回调示例,商户按照此文档进行开发即可
//---------------------------------------------------------
require "classes/ResponseHandler.class.php";
require "classes/RequestHandler.class.php";
require "classes/client/ClientResponseHandler.class.php";
require "classes/client/TenpayHttpClient.class.php";
require "./classes/function.php";
require_once "./tenpay_config.php";
date_default_timezone_set('Asia/Shanghai');
log_result("进入后台回调页面");
/* 创建支付应答对象 */
$resHandler = new ResponseHandler();
$resHandler->setKey($key);
//判断签名
if ($resHandler->isTenpaySign()) {
    //通知id
    $notify_id = $resHandler->getParameter("notify_id");
    //通过通知ID查询,确保通知来至财付通
    //创建查询请求
    $queryReq = new RequestHandler();
    $queryReq->init();
    $queryReq->setKey($key);
    $queryReq->setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml");
    $queryReq->setParameter("partner", $partner);
    $queryReq->setParameter("notify_id", $notify_id);
    //通信对象
    $httpClient = new TenpayHttpClient();
    $httpClient->setTimeOut(5);
 public function isTenpaySign()
 {
     $keysArr = array('ver', 'charset', 'pay_result', 'transaction_id', 'sp_billno', 'total_fee', 'fee_type', 'bargainor_id', 'attach', 'time_end');
     return parent::isTenpaySign($keysArr);
 }