コード例 #1
0
ファイル: tenpay.php プロジェクト: noikiy/zays
	/**
	 * 生成支付代码
	 * @param   array    $order       订单信息
	 * @param   array    $payment     支付方式信息
	 */
	function get_code($order,$payment){
		require_once 'requesthandler.class.php';
		/* 商户号 */
		$partner = $payment['tenpay_account'];

		/* 密钥 */
		$key = $payment['tenpay_key'];

		//订单号,此处用时间加随机数生成,商户根据自己情况调整,只要保持全局唯一就行
		$out_trade_no = $order['order_sn'];
		/* 财付通交易单号,规则为:10位商户号+8位时间(YYYYmmdd)+10位流水号 */

		//认证费用
		$money = intval(intval($order['order_amount']).'00');

		//附加数据 0-钻石会员,1-高级会员
		$attach = $order['order_type'];

		/* 创建支付请求对象 */
		$reqHandler = new RequestHandler();
		$reqHandler->init();
		$reqHandler->setKey($key);
		$reqHandler->setGateUrl($payment['gateurl']);

		//----------------------------------------
		//设置支付参数 
		//----------------------------------------
		$reqHandler->setParameter("total_fee",$money);  //总金额
		//用户ip
		$reqHandler->setParameter("spbill_create_ip",$_SERVER['REMOTE_ADDR']);//客户端IP
		$reqHandler->setParameter("return_url",$payment['returnurl']);//支付成功后返回
		$reqHandler->setParameter("partner",$partner);
		$reqHandler->setParameter("out_trade_no",$out_trade_no);			//用户订单号
//		$reqHandler->setParameter("transaction_id",$transaction_id);		//财付通交易单号
		$reqHandler->setParameter("notify_url",$payment['notifyurl']);//通知商户后台
		$reqHandler->setParameter("body",$order['subject']);
		$reqHandler->setParameter("bank_type", "DEFAULT");  	  //银行类型,默认为财付通
		$reqHandler->setParameter("fee_type", "1");               //币种
		//系统可选参数
		$reqHandler->setParameter("sign_type", "MD5");  	 	  //签名方式,默认为MD5,可选RSA
		$reqHandler->setParameter("service_version", "1.0"); 	  //接口版本号
		$reqHandler->setParameter("input_charset", "UTF-8");   	  //字符集
		$reqHandler->setParameter("sign_key_index", "1");    	  //密钥序号

		//业务可选参数
		$reqHandler->setParameter("attach", $attach);             	  //附件数据,原样返回就可以了
		$reqHandler->setParameter("product_fee", "");        	  //商品费用
		$reqHandler->setParameter("transport_fee", "");      	  //物流费用
		$reqHandler->setParameter("time_start", date("YmdHis"));  //订单生成时间
		$reqHandler->setParameter("time_expire", "");             //订单失效时间

		$reqHandler->setParameter("buyer_id", "");                //买方财付通帐号
		$reqHandler->setParameter("goods_tag", "");               //商品标记
		$reqHandler->setParameter("agentid", "");                 //===========
		$reqHandler->setParameter("agent_type", "");			  //===========
		//请求的URL
		$reqUrl = $reqHandler->getRequestURL();
//		return $transaction_id;
		return $reqUrl;
	}
コード例 #2
0
ファイル: Tenpay.class.php プロジェクト: fkssei/pigcms10
 public function pay()
 {
     if (empty($this->pay_config['pay_tenpay_partnerid']) || empty($this->pay_config['pay_tenpay_partnerkey'])) {
         return array('err_code' => 1, 'err_msg' => '财付通支付缺少配置信息!请联系管理员处理或选择其他支付方式。');
     }
     import('source.class.pay.Tenpay.RequestHandler');
     import('source.class.pay.Tenpay.client.ClientResponseHandler');
     import('source.class.pay.Tenpay.client.TenpayHttpClient');
     $reqHandler = new RequestHandler();
     $reqHandler->init();
     $reqHandler->setKey($this->pay_config['pay_tenpay_partnerkey']);
     $reqHandler->setGateUrl('http://wap.tenpay.com/cgi-bin/wappayv2.0/wappay_init.cgi');
     $httpClient = new TenpayHttpClient();
     $resHandler = new ClientResponseHandler();
     $callback_url = option('config.wap_site_url') . '/paycallback.php?orderno=' . $this->order_info['order_no_txt'];
     $notify_url = option('config.wap_site_url') . '/paynotice.php';
     $desc = '订单号:' . $this->order_info['order_no_txt'] . ';订单数量:' . $this->order_info['pro_num'];
     $reqHandler->setParameter('total_fee', floatval($this->order_info['total'] * 100));
     $reqHandler->setParameter('spbill_create_ip', $_SERVER['REMOTE_ADDR']);
     $reqHandler->setParameter('ver', '2.0');
     $reqHandler->setParameter('bank_type', '0');
     $reqHandler->setParameter('callback_url', $callback_url);
     $reqHandler->setParameter('bargainor_id', $this->pay_config['pay_tenpay_partnerid']);
     $reqHandler->setParameter('sp_billno', $this->order_info['trade_no']);
     $reqHandler->setParameter('notify_url', $notify_url);
     $reqHandler->setParameter('desc', $desc);
     $reqHandler->setParameter('attach', 'tenpay');
     $httpClient->setReqContent($reqHandler->getRequestURL());
     if ($httpClient->call()) {
         $resHandler->setContent($httpClient->getResContent());
         if ($resHandler->parameters['err_info']) {
             return array('err_code' => 1, 'err_msg' => '财付通异常返回:<b>' . $resHandler->parameters['err_info'] . '</b>');
         }
         $token_id = $resHandler->getParameter('token_id');
         $reqHandler->setParameter('token_id', $token_id);
         $reqUrl = 'http://wap.tenpay.com/cgi-bin/wappayv2.0/wappay_gate.cgi?token_id=' . $token_id;
         return array('err_code' => 0, 'url' => $reqUrl);
     } else {
         return array('err_code' => 1, 'err_msg' => '财付通信息校验失败,请重试。');
     }
 }
コード例 #3
0
ファイル: Tenpay.php プロジェクト: eappl/prototype
 function checkPay($PassageInfo, $OrderInfo)
 {
     /* 商户号 */
     $partner = $PassageInfo['StagePartnerId'];
     /* 密钥 */
     $key = $PassageInfo['StageSecureCode'];
     //创建查询请求
     $queryReq = new RequestHandler();
     $queryReq->init();
     $queryReq->setKey($key);
     $queryReq->setGateUrl("https://gw.tenpay.com/gateway/normalorderquery.xml");
     $queryReq->setParameter("partner", $partner);
     $queryReq->setParameter("out_trade_no", $OrderInfo['OrderId']);
     //通信对象
     $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才是支付成功
         if ($queryRes->isTenpaySign() && $queryRes->getParameter("trade_state") == "0") {
             return true;
         } else {
             //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。
             //echo "验证签名失败 或 业务错误信息:trade_state=" . $queryRes->getParameter("trade_state") . ",retcode=" . $queryRes->getParameter("retcode"). ",retmsg=" . $queryRes->getParameter("retmsg") . "<br/>" ;
             return false;
         }
     } else {
         //通信失败
         return false;
         //后台调用通信失败,写日志,方便定位问题
         //echo "<br>call err:" . $httpClient->getResponseCode() ."," . $httpClient->getErrInfo() . "<br>";
     }
     //获取debug信息,建议把debug信息写入日志,方便定位问题
     //echo $resHandler->getDebugInfo() . "<br>";
 }
コード例 #4
0
    /**
     * Process the payment and return the result
     **/
    function process_payment($order_id)
    {
        global $woocommerce;
        require_once "classes/RequestHandler.class.php";
        $order = new WC_Order($order_id);
        if (sizeof($order->get_items()) > 0) {
            foreach ($order->get_items() as $item) {
                if ($item['qty']) {
                    $item_names[] = $item['name'] . ' x ' . $item['qty'];
                }
            }
        }
        //////////////////////////////
        /* 商户号 */
        $partner = $this->tenpayUid;
        /* 密钥 */
        $key = $this->tenpayKey;
        //订单号,此处用时间加随机数生成,商户根据自己情况调整,只要保持全局唯一就行
        $out_trade_no = 'CIP' . $order_id;
        /* 创建支付请求对象 */
        $reqHandler = new RequestHandler();
        $reqHandler->init();
        $reqHandler->setKey($key);
        $reqHandler->setGateUrl("https://gw.tenpay.com/gateway/pay.htm");
        //----------------------------------------
        //设置支付参数
        //----------------------------------------
        $reqHandler->setParameter("partner", $partner);
        $reqHandler->setParameter("out_trade_no", $out_trade_no);
        $reqHandler->setParameter("total_fee", ($order->get_order_total() - $order->get_total_discount()) * 100);
        //总金额
        $reqHandler->setParameter("return_url", CI_WC_ALI_PATH . "/payReturnUrl.php");
        $reqHandler->setParameter("notify_url", CI_WC_ALI_PATH . "/payNotifyUrl.php");
        $reqHandler->setParameter("body", implode(',', $item_names));
        $reqHandler->setParameter("bank_type", "DEFAULT");
        //银行类型,默认为财付通
        //用户ip
        $reqHandler->setParameter("spbill_create_ip", $_SERVER['REMOTE_ADDR']);
        //客户端IP
        $reqHandler->setParameter("fee_type", "1");
        //币种
        $reqHandler->setParameter("subject", '');
        //商品名称,(中介交易时必填)
        //系统可选参数
        $reqHandler->setParameter("sign_type", "MD5");
        //签名方式,默认为MD5,可选RSA
        $reqHandler->setParameter("service_version", "1.0");
        //接口版本号
        $reqHandler->setParameter("input_charset", "UTF-8");
        //字符集
        $reqHandler->setParameter("sign_key_index", "1");
        //密钥序号
        //业务可选参数
        $reqHandler->setParameter("attach", "");
        //附件数据,原样返回就可以了
        $reqHandler->setParameter("product_fee", "");
        //商品费用
        $reqHandler->setParameter("transport_fee", "0");
        //物流费用
        $reqHandler->setParameter("time_start", date("YmdHis"));
        //订单生成时间
        $reqHandler->setParameter("time_expire", "");
        //订单失效时间
        $reqHandler->setParameter("buyer_id", "");
        //买方财付通帐号
        $reqHandler->setParameter("goods_tag", "");
        //商品标记
        $reqHandler->setParameter("trade_mode", "1");
        //交易模式(1.即时到帐模式,2.中介担保模式,3.后台选择(卖家进入支付中心列表选择))
        $reqHandler->setParameter("transport_desc", "");
        //物流说明
        $reqHandler->setParameter("trans_type", "1");
        //交易类型
        $reqHandler->setParameter("agentid", "");
        //平台ID
        $reqHandler->setParameter("agent_type", "");
        //代理模式(0.无代理,1.表示卡易售模式,2.表示网店模式)
        $reqHandler->setParameter("seller_id", "");
        //卖家的商户号
        $reqUrl = $reqHandler->getRequestURL();
        $html_text = '
	<script>window.location.href="' . $reqUrl . '"</script>';
        //param end
        $output = "\r\n\t\t\t<html>\r\n\t\t    <head>\r\n\t\t\t\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n\t\t        <title>正在前往财付通...</title>\r\n\t\t    </head>\r\n\t\t    <body>{$html_text}</body></html>";
        echo $output;
        exit;
        return array('result' => 'success', 'redirect' => $output);
    }
コード例 #5
0
ファイル: tenpay_url.action.php プロジェクト: ping199143/1ydb
 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>";
     }
 }
コード例 #6
0
 public function get_payment_code($payment_notice_id)
 {
     require APP_ROOT_PATH . "system/payment/Tenpay/classes/RequestHandler.class.php";
     $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = " . $payment_notice_id);
     $money = round($payment_notice['money'], 2);
     $payment_info = $GLOBALS['db']->getRow("select id,config,logo from " . DB_PREFIX . "payment where id=" . intval($payment_notice['payment_id']));
     $payment_info['config'] = unserialize($payment_info['config']);
     $subject = $payment_notice['deal_name'] == "" ? "充值" . format_price($payment_notice['money']) : $payment_notice['deal_name'];
     $data_return_url = get_domain() . APP_ROOT . '/index.php?ctl=payment&act=response&class_name=Tenpay';
     $data_notify_url = get_domain() . APP_ROOT . '/index.php?ctl=payment&act=notify&class_name=Tenpay';
     $cmd_no = '1';
     /* 获得订单的流水号,补零到10位 */
     $sp_billno = $payment_notice_id;
     $spbill_create_ip = $_SERVER['REMOTE_ADDR'];
     /* 交易日期 */
     $today = to_date($payment_notice['create_time'], 'YmdHis');
     /* 将商户号+年月日+流水号 */
     $out_trade_no = $payment_notice['notice_sn'];
     /* 银行类型:支持纯网关和财付通 */
     $bank_type = '0';
     $desc = $subject;
     $attach = $payment_info['config']['tencentpay_sign'];
     /* 返回的路径 */
     $return_url = $data_return_url;
     /* 总金额 */
     $total_fee = $money * 100;
     /* 货币类型 */
     $fee_type = '1';
     /* 重写自定义签名 */
     //$payment['magic_string'] = abs(crc32($payment['magic_string']));
     /* 数字签名 */
     /*$sign_text = "cmdno=" . $cmd_no . "&date=" . $today . "&bargainor_id=" . $payment_info['config']['tencentpay_id'] .
         "&transaction_id=" . $transaction_id . "&sp_billno=" . $sp_billno .
         "&total_fee=" . $total_fee . "&fee_type=" . $fee_type . "&return_url=" . $return_url .
         "&attach=" . $attach . "&spbill_create_ip=" . $spbill_create_ip ."&key=" . $payment_info['config']['tencentpay_key'];
       $sign = strtoupper(md5($sign_text));*/
     $reqHandler = new RequestHandler();
     $reqHandler->init();
     $reqHandler->setKey($payment_info['config']['tencentpay_key']);
     $reqHandler->setGateUrl("https://gw.tenpay.com/gateway/pay.htm");
     //----------------------------------------
     //设置支付参数
     //----------------------------------------
     $reqHandler->setParameter("partner", $payment_info['config']['tencentpay_id']);
     $reqHandler->setParameter("out_trade_no", $out_trade_no);
     $reqHandler->setParameter("total_fee", $total_fee);
     //总金额
     $reqHandler->setParameter("return_url", $return_url);
     $reqHandler->setParameter("notify_url", $data_notify_url);
     $reqHandler->setParameter("body", $desc);
     $reqHandler->setParameter("bank_type", $bank_type);
     //银行类型,默认为财付通
     //用户ip
     $reqHandler->setParameter("spbill_create_ip", get_client_ip());
     //客户端IP
     $reqHandler->setParameter("fee_type", $fee_type);
     //币种
     $reqHandler->setParameter("subject", $desc);
     //商品名称,(中介交易时必填)
     //系统可选参数
     $reqHandler->setParameter("sign_type", "MD5");
     //签名方式,默认为MD5,可选RSA
     $reqHandler->setParameter("service_version", "1.0");
     //接口版本号
     $reqHandler->setParameter("input_charset", "utf-8");
     //字符集
     $reqHandler->setParameter("sign_key_index", "1");
     //密钥序号
     //业务可选参数
     $reqHandler->setParameter("attach", $attach);
     //附件数据,原样返回就可以了
     $reqHandler->setParameter("product_fee", "");
     //商品费用
     $reqHandler->setParameter("transport_fee", "0");
     //物流费用
     $reqHandler->setParameter("time_start", $today);
     //订单生成时间
     $reqHandler->setParameter("time_expire", "");
     //订单失效时间
     $reqHandler->setParameter("buyer_id", "");
     //买方财付通帐号
     $reqHandler->setParameter("goods_tag", "");
     //商品标记
     $reqHandler->setParameter("trade_mode", $cmd_no);
     //交易模式(1.即时到帐模式,2.中介担保模式,3.后台选择(卖家进入支付中心列表选择))
     $reqHandler->setParameter("transport_desc", "");
     //物流说明
     $reqHandler->setParameter("trans_type", "1");
     //交易类型
     $reqHandler->setParameter("agentid", "");
     //平台ID
     $reqHandler->setParameter("agent_type", "");
     //代理模式(0.无代理,1.表示卡易售模式,2.表示网店模式)
     $reqHandler->setParameter("seller_id", "");
     //卖家的商户号
     //请求的URL
     $reqUrl = $reqHandler->getRequestURL();
     if ($_REQUEST['v'] == 1) {
         $debugInfo = $reqHandler->getDebugInfo();
         echo "<br/>" . $reqUrl . "<br/>";
         echo "<br/>" . $debugInfo . "<br/>";
     }
     $payLinks = '<form style="text-align:center;" id="jumplink" action="' . $reqHandler->getGateUrl() . '" target="_self" style="margin:0px;padding:0px" method="post" >';
     $params = $reqHandler->getAllParameters();
     foreach ($params as $k => $v) {
         $payLinks .= "<input type=\"hidden\" name=\"{$k}\" value=\"{$v}\" />\n";
     }
     $payLinks .= "正在连接支付接口...</form>";
     $payLinks .= '<script type="text/javascript">document.getElementById("jumplink").submit();</script>';
     return $payLinks;
 }
コード例 #7
0
ファイル: Tenpay.class.php プロジェクト: belerweb/pigcms
 public function mobile_refund()
 {
     import("@.ORG.pay.Tenpay.RequestHandler");
     import("@.ORG.pay.Tenpay.client.ClientResponseHandler");
     import("@.ORG.pay.Tenpay.client.TenpayHttpClient");
     $reqHandler = new RequestHandler();
     $httpClient = new TenpayHttpClient();
     $resHandler = new ClientResponseHandler();
     $reqHandler = new RequestHandler();
     $reqHandler->init();
     $reqHandler->setKey($this->pay_config["pay_tenpay_partnerkey"]);
     $reqHandler->setGateUrl("https://gw.tenpay.com/gateway/normalrefundquery.xml");
     $httpClient = new TenpayHttpClient();
     $resHandler = new ClientResponseHandler();
     $reqHandler->setParameter("partner", $this->pay_config["pay_tenpay_partnerid"]);
     $reqHandler->setParameter("out_trade_no", $this->order_info["order_type"] . "_" . $this->order_info["order_id"]);
     $reqHandler->setParameter("input_charset", "utf-8");
     $httpClient->setTimeOut(30);
     $httpClient->setMethod("POST");
     $httpClient->setReqContent($reqHandler->getRequestURL());
     if ($httpClient->call()) {
         $resHandler->setContent($httpClient->getResContent());
         $resHandler->setKey($this->pay_config["pay_tenpay_partnerkey"]);
         if ($resHandler->isTenpaySign() && $resHandler->getParameter("retcode") == 0) {
             $refund_param["refund_id"] = $resHandler->getParameter("out_refund_no_0");
             $refund_param["refund_time"] = $refundResult["timestamp"];
             return array("error" => 0, "type" => "ok", "msg" => "退款申请成功!5到10个工作日款项会自动流入您支付时使用的银行卡内。", "refund_param" => $refund_param);
         } else {
             $refund_param["err_msg"] = "验证签名失败 或 业务错误信息:retcode= " . $resHandler->getParameter("retcode") . ",retmsg= " . $resHandler->getParameter("retmsg");
             $refund_param["refund_time"] = time();
             return array("error" => 1, "type" => "fail", "msg" => "退款申请失败!如果重试多次还是失败请联系系统管理员。", "refund_param" => $refund_param);
         }
     } else {
         $refund_param["err_msg"] = "call err:" . $httpClient->getResponseCode() . "," . $httpClient->getErrInfo();
         $refund_param["refund_time"] = time();
         return array("error" => 1, "type" => "fail", "msg" => "退款申请失败!如果重试多次还是失败请联系系统管理员。", "refund_param" => $refund_param);
     }
 }
コード例 #8
0
ファイル: payRequest.php プロジェクト: twinh/tenpay
$reqHandler->setParameter("attach", "");
//附件数据,原样返回就可以了
$reqHandler->setParameter("product_fee", "");
//商品费用
$reqHandler->setParameter("transport_fee", "");
//物流费用
$reqHandler->setParameter("time_start", date("YmdHis"));
//订单生成时间
$reqHandler->setParameter("time_expire", "");
//订单失效时间
$reqHandler->setParameter("buyer_id", "");
//买方财付通帐号
$reqHandler->setParameter("goods_tag", "");
//商品标记
//请求的URL
$reqUrl = $reqHandler->getRequestURL();
//获取debug信息,建议把请求和debug信息写入日志,方便定位问题
/*
$debugInfo = $reqHandler->getDebugInfo();
echo "<br/>" . $reqUrl . "<br/>";
echo "<br/>" . $debugInfo . "<br/>";
*/
?>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=gbk">
	<title>财付通即时到帐程序演示</title>
</head>
<body>
<br/><a href="<?php 
echo $reqUrl;
コード例 #9
0
 public function pay()
 {
     import("@.ORG.Tenpay.RequestHandler");
     import("@.ORG.Tenpay.client.ClientResponseHandler");
     import("@.ORG.Tenpay.client.TenpayHttpClient");
     $partner = $this->payConfig['partnerid'];
     $key = $this->payConfig['partnerkey'];
     $orderid = $_GET['orderid'];
     if (!$orderid) {
         $orderid = $_GET['single_orderid'];
         //单个订单
     }
     $out_trade_no = $orderid;
     //before
     $payHandel = new payHandle($this->token, $_GET['from']);
     $orderInfo = $payHandel->beforePay($orderid);
     $price = $orderInfo['price'];
     //
     if (!$price) {
         exit('必须有价格才能支付');
     }
     $orderName = $_GET['orderName'];
     $total_fee = floatval($price);
     /* 创建支付请求对象 */
     $reqHandler = new RequestHandler();
     $reqHandler->init();
     $reqHandler->setKey($key);
     $reqHandler->setGateUrl("http://wap.tenpay.com/cgi-bin/wappayv2.0/wappay_init.cgi");
     $httpClient = new TenpayHttpClient();
     //应答对象
     $resHandler = new ClientResponseHandler();
     //----------------------------------------
     //设置支付参数
     //----------------------------------------
     $reqHandler->setParameter("total_fee", $total_fee * 100);
     //总金额
     //用户ip
     $reqHandler->setParameter("spbill_create_ip", $_SERVER['REMOTE_ADDR']);
     //客户端IP
     $reqHandler->setParameter("ver", "2.0");
     //版本类型
     $reqHandler->setParameter("bank_type", "0");
     //银行类型,财付通填写0
     $return_url = C('site_url') . '/index.php?g=Wap&m=Tenpay&a=return_url&token=' . $this->token . '&wecha_id=' . $this->wecha_id . '&from=' . $_GET['from'];
     $reqHandler->setParameter("callback_url", $return_url);
     //交易完成后跳转的URL
     $reqHandler->setParameter("bargainor_id", $partner);
     //商户号
     $reqHandler->setParameter("sp_billno", $out_trade_no);
     //商户订单号
     $notify_url = C('site_url') . '/index.php?g=Wap&m=Tenpay&a=notify_url';
     $reqHandler->setParameter("notify_url", $notify_url);
     //接收财付通通知的URL,需绝对路径
     $reqHandler->setParameter("desc", $orderName ? $orderName : 'wechat');
     $reqHandler->setParameter("attach", "");
     $httpClient->setReqContent($reqHandler->getRequestURL());
     //后台调用
     if ($httpClient->call()) {
         $resHandler->setContent($httpClient->getResContent());
         //获得的token_id,用于支付请求
         $token_id = $resHandler->getParameter('token_id');
         $reqHandler->setParameter("token_id", $token_id);
         //请求的URL
         //$reqHandler->setGateUrl("https://wap.tenpay.com/cgi-bin/wappayv2.0/wappay_gate.cgi");
         //此次请求只需带上参数token_id就可以了,$reqUrl和$reqUrl2效果是一样的
         //$reqUrl = $reqHandler->getRequestURL();
         $reqUrl = "http://wap.tenpay.com/cgi-bin/wappayv2.0/wappay_gate.cgi?token_id=" . $token_id;
     }
     header('Location:' . $reqUrl);
 }
コード例 #10
0
ファイル: AliTel.php プロジェクト: eappl/prototype
 function checkPay($PassageInfo, $OrderInfo)
 {
     /* 商户号 */
     $partner = $PassageInfo['StagePartnerId'];
     /* 密钥 */
     $key = $PassageInfo['StageSecureCode'];
     //创建查询请求
     $queryReq = new RequestHandler();
     $queryReq->init();
     $queryReq->setKey($key);
     $queryReq->setGateUrl("https://gw.tenpay.com/gateway/normalorderquery.xml");
     $queryReq->setParameter("partner", $partner);
     $queryReq->setParameter("out_trade_no", $OrderInfo['OrderId']);
     //通信对象
     $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才是支付成功
         if ($queryRes->isTenpaySign()) {
             echo "here";
             //					//取结果参数做业务处理
             //					$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==$Pay['Coin'])
             //					{
             //						$Pay['OrderId'] = $OrderInfo['OrderId'];
             //						$Pay['PayUserId'] = $OrderInfo['PayUserId'];
             //						$Pay['AcceptUserId'] = $OrderInfo['AcceptUserId'];
             //						$Pay['PassageId'] = $OrderInfo['PassageId'];
             //						$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['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>";
     }
     //获取debug信息,建议把debug信息写入日志,方便定位问题
     //echo $resHandler->getDebugInfo() . "<br>";
 }
コード例 #11
0
ファイル: TenpayBank_payment.php プロジェクト: macall/jsd
 public function get_payment_code($payment_notice_id)
 {
     require APP_ROOT_PATH . "system/payment/TenpayBank/classes/RequestHandler.class.php";
     $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = " . $payment_notice_id);
     $order_sn = $GLOBALS['db']->getOne("select order_sn from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']);
     $money = round($payment_notice['money'], 2);
     $payment_info = $GLOBALS['db']->getRow("select id,config,logo from " . DB_PREFIX . "payment where id=" . intval($payment_notice['payment_id']));
     $payment_info['config'] = unserialize($payment_info['config']);
     $data_return_url = SITE_DOMAIN . APP_ROOT . '/callback/payment/tenpayb_response.php';
     $data_notify_url = SITE_DOMAIN . APP_ROOT . '/callback/payment/tenpayb_notify.php';
     $cmd_no = '1';
     /* 获得订单的流水号,补零到10位 */
     $sp_billno = $payment_notice_id;
     $spbill_create_ip = $_SERVER['REMOTE_ADDR'];
     /* 交易日期 */
     $today = to_date($payment_notice['create_time'], 'YmdHis');
     /* 将商户号+年月日+流水号 */
     $out_trade_no = $payment_notice['notice_sn'];
     /* 银行类型:支持纯网关和财付通 */
     $bank_type = intval($GLOBALS['db']->getOne("select bank_id from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']));
     $desc = $out_trade_no;
     $attach = $payment_info['config']['tencentpay_sign'];
     /* 返回的路径 */
     $return_url = $data_return_url;
     /* 总金额 */
     $total_fee = $money * 100;
     /* 货币类型 */
     $fee_type = '1';
     /* 重写自定义签名 */
     //$payment['magic_string'] = abs(crc32($payment['magic_string']));
     /* 数字签名 */
     /* $sign_text = "cmdno=" . $cmd_no . "&date=" . $today . "&bargainor_id=" . $payment_info['config']['tencentpay_id'] .
               "&transaction_id=" . $transaction_id . "&sp_billno=" . $sp_billno .
               "&total_fee=" . $total_fee . "&fee_type=" . $fee_type . "&return_url=" . $return_url .
               "&attach=" . $attach . "&spbill_create_ip=" . $spbill_create_ip ."&key=" . $payment_info['config']['tencentpay_key'];
             $sign = strtoupper(md5($sign_text));
     
              交易参数 
             $parameter = array(
                 'cmdno'             => $cmd_no,                     // 业务代码, 财付通支付支付接口填  1
                 'date'              => $today,                      // 商户日期:如20051212
                 'bank_type'         => $bank_type,                  // 银行类型:支持纯网关和财付通
                 'desc'              => $desc,                       // 交易的商品名称
                 'purchaser_id'      => '',                          // 用户(买方)的财付通帐户,可以为空
                 'bargainor_id'      => $payment_info['config']['tencentpay_id'],  // 商家的财付通商户号
                 'transaction_id'    => $transaction_id,             // 交易号(订单号),由商户网站产生(建议顺序累加)
                 'sp_billno'         => $sp_billno,                  // 商户系统内部的定单号,最多10位
                 'total_fee'         => $total_fee,                  // 订单金额
                 'fee_type'          => $fee_type,                   // 现金支付币种
                 'return_url'        => $return_url,                 // 接收财付通返回结果的URL
                 'attach'            => $attach,                     // 用户自定义签名
             	'spbill_create_ip'  => $spbill_create_ip,           // 安全防范参数
                 'sign'              => $sign,                       // MD5签名
                 //'sys_id'            => '542554970',                 
                 //'sp_suggestuser'    => '1202822001'                 //财付通分配的商户号
             );
     		//
     		
     
     		
     		$payLinks = '<form style="text-align:center;" action="https://www.tenpay.com/cgi-bin/v1.0/pay_gate.cgi" target="_blank" style="margin:0px;padding:0px" >';
     
     	 	foreach ($parameter AS $key=>$val)
             {
                 $payLinks  .= "<input type='hidden' name='$key' value='$val' />";
             }
             
         	if(!empty($payment_info['logo']))
     		{
     			$payLinks .= "<input type='image' src='".APP_ROOT.$payment_info['logo']."' style='border:solid 1px #ccc;'><div class='blank'></div>";
     		}
     		$payLinks .= "<input type='submit' class='paybutton' value='".sprintf($this->payment_lang['GO_TO_PAY'],$this->get_name($bank_type))."'></form>";
             $code = '<div style="text-align:center">'.$payLinks.'</div>';
     		$code.="<br /><div style='text-align:center' class='red'>".$GLOBALS['lang']['PAY_TOTAL_PRICE'].":".format_price($money)."</div>";
             return $code;
             */
     $reqHandler = new RequestHandler();
     $reqHandler->init();
     $reqHandler->setKey($payment_info['config']['tencentpay_key']);
     $reqHandler->setGateUrl("https://gw.tenpay.com/gateway/pay.htm");
     //----------------------------------------
     //设置支付参数
     //----------------------------------------
     $reqHandler->setParameter("partner", $payment_info['config']['tencentpay_id']);
     $reqHandler->setParameter("out_trade_no", $out_trade_no);
     $reqHandler->setParameter("total_fee", $total_fee);
     //总金额
     $reqHandler->setParameter("return_url", $return_url);
     $reqHandler->setParameter("notify_url", $data_notify_url);
     $reqHandler->setParameter("body", $desc);
     $reqHandler->setParameter("bank_type", $bank_type);
     //银行类型,默认为财付通
     //用户ip
     $reqHandler->setParameter("spbill_create_ip", CLIENT_IP);
     //客户端IP
     $reqHandler->setParameter("fee_type", $fee_type);
     //币种
     $reqHandler->setParameter("subject", $desc);
     //商品名称,(中介交易时必填)
     //系统可选参数
     $reqHandler->setParameter("sign_type", "MD5");
     //签名方式,默认为MD5,可选RSA
     $reqHandler->setParameter("service_version", "1.0");
     //接口版本号
     $reqHandler->setParameter("input_charset", "utf-8");
     //字符集
     $reqHandler->setParameter("sign_key_index", "1");
     //密钥序号
     //业务可选参数
     $reqHandler->setParameter("attach", $attach);
     //附件数据,原样返回就可以了
     $reqHandler->setParameter("product_fee", "");
     //商品费用
     $reqHandler->setParameter("transport_fee", "0");
     //物流费用
     $reqHandler->setParameter("time_start", $today);
     //订单生成时间
     $reqHandler->setParameter("time_expire", "");
     //订单失效时间
     $reqHandler->setParameter("buyer_id", "");
     //买方财付通帐号
     $reqHandler->setParameter("goods_tag", "");
     //商品标记
     $reqHandler->setParameter("trade_mode", $cmd_no);
     //交易模式(1.即时到帐模式,2.中介担保模式,3.后台选择(卖家进入支付中心列表选择))
     $reqHandler->setParameter("transport_desc", "");
     //物流说明
     $reqHandler->setParameter("trans_type", "1");
     //交易类型
     $reqHandler->setParameter("agentid", "");
     //平台ID
     $reqHandler->setParameter("agent_type", "");
     //代理模式(0.无代理,1.表示卡易售模式,2.表示网店模式)
     $reqHandler->setParameter("seller_id", "");
     //卖家的商户号
     //请求的URL
     $reqUrl = $reqHandler->getRequestURL();
     /*if($_REQUEST['v']==1){
     			$debugInfo = $reqHandler->getDebugInfo();
     			echo "<br/>" . $reqUrl . "<br/>";
     			echo "<br/>" . $debugInfo . "<br/>";
     			print_r($payment_info['config']);
     		}*/
     $payLinks = '<form style="text-align:center;" action="' . $reqHandler->getGateUrl() . '" target="_blank" style="margin:0px;padding:0px" method="post" >';
     $params = $reqHandler->getAllParameters();
     foreach ($params as $k => $v) {
         $payLinks .= "<input type=\"hidden\" name=\"{$k}\" value=\"{$v}\" />\n";
     }
     $payLinks .= "<button type='submit' class='ui-button paybutton' rel='blue'>" . sprintf($this->payment_lang['GO_TO_PAY'], $this->get_name($bank_type)) . "</button></form>";
     $code = '<div style="text-align:center">' . $payLinks . '</div>';
     $code .= "<br /><div style='text-align:center' class='red'>" . $GLOBALS['lang']['PAY_TOTAL_PRICE'] . ":" . format_price($money) . "</div>";
     return $code;
 }
コード例 #12
0
ファイル: Tenpay.class.php プロジェクト: hutao1004/yintt
 /**
  * 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;
     }
 }
コード例 #13
0
ファイル: PayAction.class.php プロジェクト: hutao1004/yintt
 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";
     }
 }
コード例 #14
0
ファイル: pay.php プロジェクト: noikiy/mdwp
/**
 * 通过财付通wap支付
 * @author abei <*****@*****.**>
 */
function qpay_team_tenpay($total_money,$order){
	
	$total_money = $total_money*100;
	global $INI; if($total_money<=0||!$order) return null;
	$team = Table::Fetch('team', $order['team_id']);
	$pay_id = $order['pay_id'];
	
	/* 商户号 */
	$partner =  trim($INI['qtenpay']['partner']);
	/* 密钥 */
	$key = trim($INI['qtenpay']['key']);

	//订单号,此处用时间加随机数生成,商户根据自己情况调整,只要保持全局唯一就行
	$out_trade_no = $pay_id;
	/* 创建支付请求对象 */
	$reqHandler = new RequestHandler();
	$reqHandler->init();
	$reqHandler->setKey($key);

	$reqHandler->setGateUrl("http://wap.tenpay.com/cgi-bin/wappayv2.0/wappay_init.cgi");
	$httpClient = new TenpayHttpClient();
	//应答对象
	$resHandler = new ClientResponseHandler(); 
	//----------------------------------------
	//设置支付参数 
	//----------------------------------------
	//----------------------------------------
	$reqHandler->setParameter("total_fee", $total_money);  //总金额
	//用户ip
	$reqHandler->setParameter("spbill_create_ip", $_SERVER['REMOTE_ADDR']);//客户端IP
	$reqHandler->setParameter("ver", "2.0"); //版本类型
	$reqHandler->setParameter("bank_type", "0"); //银行类型,财付通填写0
	$reqHandler->setParameter("callback_url", "http://new.milituan.net/m/tenpay/call_back_url.php");//交易完成后跳转的URL
	
	$reqHandler->setParameter("bargainor_id", $partner); //商户号
	$reqHandler->setParameter("sp_billno", $out_trade_no); //商户订单号
	$reqHandler->setParameter("notify_url", "http://new.milituan.net/m/tenpay/notify_url.php");//接收财付通通知的URL,需绝对路径
	$reqHandler->setParameter("desc", $team['product']);

	$attach_str = $order['mobile'];
	$reqHandler->setParameter("attach",$attach_str );

	$httpClient->setReqContent($reqHandler->getRequestURL());

	if($httpClient->call()) {

		$resHandler->setContent($httpClient->getResContent());
		//var_dump($resHandler);
		//获得的token_id,用于支付请求
		$token_id = $resHandler->getParameter('token_id');
		$reqHandler->setParameter("token_id", $token_id);
		 
		//请求的URL
		//$reqHandler->setGateUrl("https://wap.tenpay.com/cgi-bin/wappayv2.0/wappay_gate.cgi");
		//此次请求只需带上参数token_id就可以了,$reqUrl和$reqUrl2效果是一样的
		//$reqUrl = $reqHandler->getRequestURL(); 
		$reqUrl = "http://wap.tenpay.com/cgi-bin/wappayv2.0/wappay_gate.cgi?token_id=".$token_id;
		
		return render('block_qpay_tenpay', array(
				'order_id' => $order_id,	
				'reqUrl'=>$reqUrl
			));
			
	}
} 
コード例 #15
0
function invite_payurl($amount, $price, &$orderid)
{
    include_once DISCUZ_ROOT . './source/class/class_chinese.php';
    global $_G;
    $date = dgmdate(TIMESTAMP, 'Ymd');
    $suffix = dgmdate(TIMESTAMP, 'His') . rand(1000, 9999);
    $transaction_id = DISCUZ_PARTNER . $date . $suffix;
    $orderid = dgmdate(TIMESTAMP, 'YmdHis') . random(14);
    if (!DISCUZ_TENPAY_DIRECT) {
        $reqHandler = new MediPayRequestHandler();
        $reqHandler->init();
        $reqHandler->setKey(DISCUZ_TENPAY_OPENTRANS_KEY);
        $encode_type = '1';
        if (strtolower(CHARSET) == 'utf-8') {
            $encode_type = '2';
        }
        $reqHandler->setParameter("chnid", DISCUZ_TENPAY_OPENTRANS_CHNID);
        $reqHandler->setParameter("encode_type", $encode_type);
        $reqHandler->setParameter("mch_desc", lang('forum/misc', 'invite_forum_payment') . '_' . intval($amount) . '_' . lang('forum/misc', 'invite_forum_payment_unit') . '_(' . $_G['clientip'] . ')');
        $reqHandler->setParameter("mch_name", lang('forum/misc', 'invite_forum_payment') . '_' . intval($amount) . '_' . lang('forum/misc', 'invite_forum_payment_unit'));
        $reqHandler->setParameter("mch_price", $price * 100);
        $reqHandler->setParameter("mch_returl", $_G['siteurl'] . 'api/trade/notify_invite.php');
        $reqHandler->setParameter("mch_type", '2');
        $reqHandler->setParameter("mch_vno", $orderid);
        $reqHandler->setParameter("need_buyerinfo", '2');
        $reqHandler->setParameter("seller", DISCUZ_TENPAY_OPENTRANS_CHNID);
        $reqHandler->setParameter("show_url", $_G['siteurl'] . 'api/trade/notify_invite.php');
        $reqHandler->setParameter("transport_desc", '');
        $reqHandler->setParameter("transport_fee", 0);
        $reqHandler->setParameter('attach', 'tenpay');
        $reqUrl = $reqHandler->getRequestURL();
        return $reqUrl;
    }
    $reqHandler = new RequestHandler();
    $reqHandler->setGateURL("https://www.tenpay.com/cgi-bin/v1.0/pay_gate.cgi");
    $reqHandler->init();
    $reqHandler->setKey(DISCUZ_SECURITYCODE);
    $reqHandler->setParameter("bargainor_id", DISCUZ_PARTNER);
    $reqHandler->setParameter("sp_billno", $orderid);
    $reqHandler->setParameter("transaction_id", $transaction_id);
    $reqHandler->setParameter("total_fee", $price * 100);
    $reqHandler->setParameter("return_url", $_G['siteurl'] . 'api/trade/notify_invite.php');
    $chinese = new Chinese(strtoupper(CHARSET), 'GBK');
    $reqHandler->setParameter("desc", $chinese->Convert(lang('forum/misc', 'invite_forum_payment') . '_' . intval($amount) . '_' . lang('forum/misc', 'invite_forum_payment_unit') . '_(' . $_G['clientip'] . ')'));
    $reqHandler->setParameter("cmdno", "1");
    $reqHandler->setParameter("date", $date);
    $reqHandler->setParameter("fee_type", "1");
    $reqHandler->setParameter("attach", "tenpay");
    $reqHandler->setParameter("bank_type", "0");
    $reqHandler->setParameter("agentid", DISCUZ_AGENTID);
    $reqHandler->setParameter("key_index", "1");
    $reqHandler->setParameter("verify_relation_flag", "1");
    $reqHandler->setParameter("ver", "3");
    $reqHandler->setParameter("spbill_create_ip", $_G['clientip']);
    $reqUrl = $reqHandler->getRequestURL();
    return $reqUrl;
}
コード例 #16
0
ファイル: tenpay.class.php プロジェクト: shuay/projectYG
 public function config($config = null)
 {
     $this->config = $config;
     $partner = $config['id'];
     //财付通商户号
     $key = $config['key'];
     //财付通密钥
     $return_url = $config['ReturnUrl'];
     //显示支付结果页面,*替换成payReturnUrl.php所在路径
     $notify_url = $config['NotifyUrl'];
     //支付完成后的回调处理页面,*替换成payNotifyUrl.php所在路径
     /* 获取提交的订单号 */
     $out_trade_no = $config['code'];
     /* 获取提交的商品名称 */
     $product_name = $config['title'];
     /* 获取提交的商品价格 */
     $order_price = $config['money'];
     /* 获取提交的备注信息 */
     $remarkexplain = '';
     /* 支付方式 */
     $trade_mode = $config['type'];
     /* 商品价格(包含运费),以分为单位 */
     $total_fee = $order_price * 100;
     /* 商品名称 */
     //$desc = "商品:".$product_name.",备注:".$remarkexplain;
     $desc = $product_name;
     /* 创建支付请求对象 */
     $reqHandler = new RequestHandler();
     $reqHandler->init();
     $reqHandler->setKey($key);
     $reqHandler->setGateUrl("https://gw.tenpay.com/gateway/pay.htm");
     //----------------------------------------
     //设置支付参数
     //----------------------------------------
     $reqHandler->setParameter("partner", $partner);
     $reqHandler->setParameter("out_trade_no", $out_trade_no);
     $reqHandler->setParameter("total_fee", $total_fee);
     //总金额
     $reqHandler->setParameter("return_url", $return_url);
     $reqHandler->setParameter("notify_url", $notify_url);
     $reqHandler->setParameter("body", $desc);
     $reqHandler->setParameter("bank_type", $config['pay_bank']);
     //银行类型,默认为财付通DEFAULT
     //用户ip
     $reqHandler->setParameter("spbill_create_ip", $_SERVER['REMOTE_ADDR']);
     //客户端IP
     $reqHandler->setParameter("fee_type", "1");
     //币种
     $reqHandler->setParameter("subject", $desc);
     //商品名称,(中介交易时必填)
     //系统可选参数
     $reqHandler->setParameter("sign_type", "MD5");
     //签名方式,默认为MD5,可选RSA
     $reqHandler->setParameter("service_version", "1.0");
     //接口版本号
     $reqHandler->setParameter("input_charset", "utf-8");
     //字符集
     $reqHandler->setParameter("sign_key_index", "1");
     //密钥序号
     //业务可选参数
     $reqHandler->setParameter("attach", "");
     //附件数据,原样返回就可以了
     $reqHandler->setParameter("product_fee", "");
     //商品费用
     $reqHandler->setParameter("transport_fee", "0");
     //物流费用
     $reqHandler->setParameter("time_start", date("YmdHis"));
     //订单生成时间
     $reqHandler->setParameter("time_expire", "");
     //订单失效时间
     $reqHandler->setParameter("buyer_id", "");
     //买方财付通帐号
     $reqHandler->setParameter("goods_tag", "");
     //商品标记
     $reqHandler->setParameter("trade_mode", $trade_mode);
     //交易模式(1.即时到帐模式,2.中介担保模式,3.后台选择(卖家进入支付中心列表选择))
     $reqHandler->setParameter("transport_desc", "");
     //物流说明
     $reqHandler->setParameter("trans_type", "1");
     //交易类型
     $reqHandler->setParameter("agentid", "");
     //平台ID
     $reqHandler->setParameter("agent_type", "");
     //代理模式(0.无代理,1.表示卡易售模式,2.表示网店模式)
     $reqHandler->setParameter("seller_id", "");
     //卖家的商户号
     //请求的URL
     $this->url = $reqUrl = $reqHandler->getRequestURL();
     //获取debug信息,建议把请求和debug信息写入日志,方便定位问题
     $this->debugInfo = $debugInfo = $reqHandler->getDebugInfo();
 }
コード例 #17
0
 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>";
     }
 }
コード例 #18
0
ファイル: api_tenpay.php プロジェクト: softhui/discuz
function invite_payurl($amount, $price, &$orderid, $bank = 'DEFAULT')
{
    include_once DISCUZ_ROOT . './source/class/class_chinese.php';
    global $_G;
    $date = dgmdate(TIMESTAMP, 'YmdHis');
    $suffix = dgmdate(TIMESTAMP, 'His') . rand(1000, 9999);
    $transaction_id = DISCUZ_PARTNER . $date . $suffix;
    $orderid = dgmdate(TIMESTAMP, 'YmdHis') . random(14);
    $chinese = new Chinese(strtoupper(CHARSET), 'GBK');
    $subject = $chinese->Convert(lang('forum/misc', 'invite_forum_payment') . '_' . intval($amount) . '_' . lang('forum/misc', 'invite_forum_payment_unit') . '_(' . $_G['clientip'] . ')');
    $reqHandler = new RequestHandler();
    $reqHandler->setGateURL("https://gw.tenpay.com/gateway/pay.htm");
    $reqHandler->init();
    $reqHandler->setKey(DISCUZ_SECURITYCODE);
    $reqHandler->setParameter("partner", DISCUZ_PARTNER);
    $reqHandler->setParameter("out_trade_no", $orderid);
    $reqHandler->setParameter("total_fee", $price * 100);
    $reqHandler->setParameter("return_url", $_G['siteurl'] . 'api/trade/notify_invite.php');
    $reqHandler->setParameter("notify_url", $_G['siteurl'] . 'api/trade/notify_invite.php');
    $reqHandler->setParameter("body", $subject);
    $reqHandler->setParameter("bank_type", $bank);
    $reqHandler->setParameter("spbill_create_ip", $_G['clientip']);
    $reqHandler->setParameter("fee_type", "1");
    $reqHandler->setParameter("subject", $subject);
    $reqHandler->setParameter("sign_type", "MD5");
    $reqHandler->setParameter("service_version", "1.0");
    $reqHandler->setParameter("input_charset", "GBK");
    $reqHandler->setParameter("sign_key_index", "1");
    $reqHandler->setParameter("attach", "tenpay");
    $reqHandler->setParameter("time_start", $date);
    $reqHandler->setParameter("trade_mode", "1");
    $reqHandler->setParameter("trans_type", "1");
    $reqHandler->setParameter("agentid", DISCUZ_AGENTID);
    $reqHandler->setParameter("agent_type", "2");
    $reqUrl = $reqHandler->getRequestURL();
    return $reqUrl;
}
コード例 #19
0
ファイル: payRequest.php プロジェクト: buziyborni/cnode-cc
//版本类型
$reqHandler->setParameter("bank_type", "0");
//银行类型,财付通填写0
$reqHandler->setParameter("callback_url", "http://10.6.35.65/xampp/wap/payReturnUrl.php");
//交易完成后跳转的URL
$reqHandler->setParameter("callback_url", "http://www.qq.com");
//交易完成后跳转的URL
$reqHandler->setParameter("bargainor_id", $partner);
//商户号
$reqHandler->setParameter("sp_billno", $out_trade_no);
//商户订单号
$reqHandler->setParameter("notify_url", "http://10.6.35.65/xampp/wap/payNotifyUrl.php");
//接收财付通通知的URL,需绝对路径
$reqHandler->setParameter("desc", "测试");
$reqHandler->setParameter("attach", "1_xs_酷币");
$httpClient->setReqContent($reqHandler->getRequestURL());
//后台调用
if ($httpClient->call()) {
    $resHandler->setContent($httpClient->getResContent());
    //获得的token_id,用于支付请求
    $token_id = $resHandler->getParameter('token_id');
    $reqHandler->setParameter("token_id", $token_id);
    //请求的URL
    //$reqHandler->setGateUrl("https://wap.tenpay.com/cgi-bin/wappayv2.0/wappay_gate.cgi");
    //此次请求只需带上参数token_id就可以了,$reqUrl和$reqUrl2效果是一样的
    //$reqUrl = $reqHandler->getRequestURL();
    $reqUrl = "http://wap.tenpay.com/cgi-bin/wappayv2.0/wappay_gate.cgi?token_id=" . $token_id;
}
?>
 <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
 "http://www.wapforum.org/DTD/wml_1.1.xml">
コード例 #20
0
	public function recharge(){		
		////////////////////////////////////
		//参数数据
		$total_fee =floatval($_POST['price']);
		$total_fee1=$total_fee;
		$total_fee =floatval($total_fee)*100;
		$body = '会员充值';
		$orderName=$body;
		$out_trade_no = $this->user['id'].'_'.time();

		$notify_url = C('site_url').U('Tenpay/notify_url');
		//需http://格式的完整路径,不能加?id=123这类自定义参数
		//页面跳转同步通知页面路径
		$return_url = C('site_url').U('Tenpay/charge_return');
		//
		if(!$total_fee)exit('必须有价格才能支付');
		
		import("@.ORG.TenpayComputer.RequestHandler");
		
		$reqHandler = new RequestHandler();
		$reqHandler->init();
		$key=trim(C('tenpay_partnerkey'));
		$partner=trim(C('tenpay_partnerid'));
		$reqHandler->setKey($key);
		$reqHandler->setGateUrl("https://gw.tenpay.com/gateway/pay.htm");

		//----------------------------------------
		//设置支付参数
		//----------------------------------------
		$reqHandler->setParameter("partner", $partner);
		$reqHandler->setParameter("out_trade_no", $out_trade_no);
		$reqHandler->setParameter("total_fee", $total_fee);  //总金额
		$reqHandler->setParameter("return_url", $return_url);
		$reqHandler->setParameter("notify_url", $notify_url);
		$reqHandler->setParameter("body", '财付通在线支付');
		$reqHandler->setParameter("bank_type", "DEFAULT");  	  //银行类型,默认为财付通
		//用户ip
		$reqHandler->setParameter("spbill_create_ip", $_SERVER['REMOTE_ADDR']);//客户端IP
		$reqHandler->setParameter("fee_type", "1");               //币种
		$reqHandler->setParameter("subject",'member recharge');          //商品名称,(中介交易时必填)

		//系统可选参数
		$reqHandler->setParameter("sign_type", "MD5");  	 	  //签名方式,默认为MD5,可选RSA
		$reqHandler->setParameter("service_version", "1.0"); 	  //接口版本号
		$reqHandler->setParameter("input_charset", "utf-8");   	  //字符集
		$reqHandler->setParameter("sign_key_index", "1");    	  //密钥序号

		//业务可选参数
		$reqHandler->setParameter("attach", "");             	  //附件数据,原样返回就可以了
		$reqHandler->setParameter("product_fee", "");        	  //商品费用
		$reqHandler->setParameter("transport_fee", "0");      	  //物流费用
		$reqHandler->setParameter("time_start", date("YmdHis"));  //订单生成时间
		$reqHandler->setParameter("time_expire", "");             //订单失效时间
		$reqHandler->setParameter("buyer_id", "");                //买方财付通帐号
		$reqHandler->setParameter("goods_tag", "");               //商品标记
		$reqHandler->setParameter("trade_mode",1);              //交易模式(1.即时到帐模式,2.中介担保模式,3.后台选择(卖家进入支付中心列表选择))
		$reqHandler->setParameter("transport_desc","");              //物流说明
		$reqHandler->setParameter("trans_type","1");              //交易类型
		$reqHandler->setParameter("agentid","");                  //平台ID
		$reqHandler->setParameter("agent_type","");               //代理模式(0.无代理,1.表示卡易售模式,2.表示网店模式)
		$reqHandler->setParameter("seller_id","");                //卖家的商户号



		//请求的URL
		$reqUrl = $reqHandler->getRequestURL();

		//获取debug信息,建议把请求和debug信息写入日志,方便定位问题
		/**/
		$debugInfo = $reqHandler->getDebugInfo();
		//
		$data=M('Indent')->data(			
		array('uid'=>session('uid'),'month'=>0,'title'=>$body,'uname'=>'','gid'=>0,'create_time'=>time(),'indent_id'=>$out_trade_no,'price'=>$total_fee1))->add();
		//
		header('Location:'.$reqUrl);
	}
コード例 #21
0
	public function pay()
	{
		$orderid = $_GET['orderid'];

		if (!$orderid) {
			$orderid = $_GET['single_orderid'];
		}

		$payHandel = new payHandle($this->token, $_GET['from'], 'tenpayComputer');
		$orderInfo = $payHandel->beforePay($orderid);
		$price = $orderInfo['price'];
		$orderName = $_GET['orderName'];
		$notify_url = C('site_url') . '/index.php?g=Wap&m=TenpayComputer&a=notify_url';

		if ($_GET['platform']) {
			$return_url = C('site_url') . '/index.php?g=Wap&m=TenpayComputer&a=return_url&token=' . $_GET['token'] . '&wecha_id=' . $_GET['wecha_id'] . '&from=' . $_GET['from'] . '&pl=1';
		}
		else {
			$return_url = C('site_url') . '/index.php?g=Wap&m=TenpayComputer&a=return_url&token=' . $_GET['token'] . '&wecha_id=' . $_GET['wecha_id'] . '&from=' . $_GET['from'];
		}

		if ($orderInfo['paid']) {
			exit('您已经支付过此次订单!');
		}

		if (!$price) {
			exit('必须有价格才能支付');
		}

		$total_fee = floatval($price) * 100;
		import('@.ORG.TenpayComputer.RequestHandler');
		$out_trade_no = $orderid;
		$reqHandler = new RequestHandler();
		$reqHandler->init();
		$key = $this->payConfig['partnerkey'];
		$partner = $this->payConfig['partnerid'];
		$reqHandler->setKey($key);
		$reqHandler->setGateUrl('https://gw.tenpay.com/gateway/pay.htm');
		$reqHandler->setParameter('partner', $partner);
		$reqHandler->setParameter('out_trade_no', $out_trade_no);
		$reqHandler->setParameter('total_fee', $total_fee);
		$reqHandler->setParameter('return_url', $return_url);
		$reqHandler->setParameter('notify_url', $notify_url);
		$reqHandler->setParameter('body', '财付通在线支付');
		$reqHandler->setParameter('bank_type', 'DEFAULT');
		$reqHandler->setParameter('spbill_create_ip', $_SERVER['REMOTE_ADDR']);
		$reqHandler->setParameter('fee_type', '1');
		$reqHandler->setParameter('subject', 'weixin');
		$reqHandler->setParameter('sign_type', 'MD5');
		$reqHandler->setParameter('service_version', '1.0');
		$reqHandler->setParameter('input_charset', 'utf-8');
		$reqHandler->setParameter('sign_key_index', '1');
		$reqHandler->setParameter('attach', '');
		$reqHandler->setParameter('product_fee', '');
		$reqHandler->setParameter('transport_fee', '0');
		$reqHandler->setParameter('time_start', date('YmdHis'));
		$reqHandler->setParameter('time_expire', '');
		$reqHandler->setParameter('buyer_id', '');
		$reqHandler->setParameter('goods_tag', '');
		$reqHandler->setParameter('trade_mode', 1);
		$reqHandler->setParameter('transport_desc', '');
		$reqHandler->setParameter('trans_type', '1');
		$reqHandler->setParameter('agentid', '');
		$reqHandler->setParameter('agent_type', '');
		$reqHandler->setParameter('seller_id', '');
		$reqUrl = $reqHandler->getRequestURL();
		$debugInfo = $reqHandler->getDebugInfo();
		header('Location:' . $reqUrl);
	}
コード例 #22
0
    public function dopay($money = null, $order = null, $ordername = null)
    {
        //取插件配置参数
        $conf = F('pluginTenpay');
        if (empty($conf) || APP_DEBUG) {
            $data = M('Addons')->field('param')->where("mark='Tenpay'")->find();
            $conf = json_decode($data['param'], true);
            F('pluginTenpay', $conf);
        }
        define('SHANGHU_ID', $conf['partner']);
        define('SHANGHU_KEY', $conf['key']);
        require_once TENPAY_PATH . "/lib/classes/RequestHandler.class.php";
        require_once TENPAY_PATH . "/lib/tenpay_config.php";
        /* 获取提交的订单号 */
        $out_trade_no = $order;
        /* 获取提交的商品名称 */
        $product_name = $ordername;
        /* 获取提交的商品价格 */
        $order_price = $money;
        /* 获取提交的备注信息 */
        $remarkexplain = '没有备注';
        /* 支付方式  1:即时到帐,2:中介担保,3:后台选择*/
        $trade_mode = 1;
        $strDate = date("Ymd");
        $strTime = date("His");
        /* 商品价格(包含运费),以分为单位 */
        $total_fee = $order_price * 100;
        /* 商品名称 */
        $desc = "商品:" . $product_name . ",备注:" . $remarkexplain;
        /* 创建支付请求对象 */
        $reqHandler = new RequestHandler();
        $reqHandler->init();
        $reqHandler->setKey($key);
        $reqHandler->setGateUrl("https://gw.tenpay.com/gateway/pay.htm");
        //----------------------------------------
        //设置支付参数
        //----------------------------------------
        $reqHandler->setParameter("partner", $partner);
        $reqHandler->setParameter("out_trade_no", $out_trade_no);
        $reqHandler->setParameter("total_fee", $total_fee);
        //总金额
        $reqHandler->setParameter("return_url", $return_url);
        $reqHandler->setParameter("notify_url", $notify_url);
        $reqHandler->setParameter("body", $desc);
        $reqHandler->setParameter("bank_type", "DEFAULT");
        //银行类型,默认为财付通
        //用户ip
        $reqHandler->setParameter("spbill_create_ip", $_SERVER['REMOTE_ADDR']);
        //客户端IP
        $reqHandler->setParameter("fee_type", "1");
        //币种
        $reqHandler->setParameter("subject", $desc);
        //商品名称,(中介交易时必填)
        //系统可选参数
        $reqHandler->setParameter("sign_type", "MD5");
        //签名方式,默认为MD5,可选RSA
        $reqHandler->setParameter("service_version", "1.0");
        //接口版本号
        $reqHandler->setParameter("input_charset", "utf-8");
        //字符集
        $reqHandler->setParameter("sign_key_index", "1");
        //密钥序号
        //业务可选参数
        $reqHandler->setParameter("attach", "");
        //附件数据,原样返回就可以了
        $reqHandler->setParameter("product_fee", "");
        //商品费用
        $reqHandler->setParameter("transport_fee", "0");
        //物流费用
        $reqHandler->setParameter("time_start", date("YmdHis"));
        //订单生成时间
        $reqHandler->setParameter("time_expire", "");
        //订单失效时间
        $reqHandler->setParameter("buyer_id", "");
        //买方财付通帐号
        $reqHandler->setParameter("goods_tag", "");
        //商品标记
        $reqHandler->setParameter("trade_mode", $trade_mode);
        //交易模式(1.即时到帐模式,2.中介担保模式,3.后台选择(卖家进入支付中心列表选择))
        $reqHandler->setParameter("transport_desc", "");
        //物流说明
        $reqHandler->setParameter("trans_type", "1");
        //交易类型
        $reqHandler->setParameter("agentid", "");
        //平台ID
        $reqHandler->setParameter("agent_type", "");
        //代理模式(0.无代理,1.表示卡易售模式,2.表示网店模式)
        $reqHandler->setParameter("seller_id", "");
        //卖家的商户号
        //请求的URL
        $reqUrl = $reqHandler->getRequestURL();
        //获取debug信息,建议把请求和debug信息写入日志,方便定位问题
        /**/
        $debugInfo = $reqHandler->getDebugInfo();
        $html = <<<eot
<form id="tenpay_form" action="{$reqHandler->getGateUrl()}" method="post" target="_blank">
eot;
        $params = $reqHandler->getAllParameters();
        foreach ($params as $k => $v) {
            $html .= "<input type=\"hidden\" name=\"{$k}\" value=\"{$v}\" />\n";
        }
        $html .= <<<eot
<input type="submit" value="财付通支付">
</form>
<script>
document.getElementById('tenpay_form').submit();
</script>
eot;
        return $html;
    }
コード例 #23
0
 public function pay()
 {
     ////////////////////////////////////
     //before
     $orderid = $_GET['orderid'];
     $payHandel = new payHandle($this->token, $_GET['from'], 'tenpayComputer');
     $orderInfo = $payHandel->beforePay($orderid);
     $price = $orderInfo['price'];
     //参数数据
     $orderName = $_GET['orderName'];
     if (!$orderid) {
         $orderid = $_GET['single_orderid'];
         //单个订单
     }
     $notify_url = C('site_url') . '/index.php?g=Wap&m=TenpayComputer&a=notify_url';
     //需http://格式的完整路径,不能加?id=123这类自定义参数
     //页面跳转同步通知页面路径
     $return_url = C('site_url') . '/index.php?g=Wap&m=TenpayComputer&a=return_url&token=' . $_GET['token'] . '&wecha_id=' . $_GET['wecha_id'] . '&from=' . $_GET['from'];
     //
     if (!$price) {
         exit('必须有价格才能支付');
     }
     $total_fee = floatval($price) * 100;
     import("@.ORG.TenpayComputer.RequestHandler");
     $out_trade_no = $orderid;
     $reqHandler = new RequestHandler();
     $reqHandler->init();
     $key = $this->payConfig['partnerkey'];
     $partner = $this->payConfig['partnerid'];
     $reqHandler->setKey($key);
     $reqHandler->setGateUrl("https://gw.tenpay.com/gateway/pay.htm");
     //----------------------------------------
     //设置支付参数
     //----------------------------------------
     $reqHandler->setParameter("partner", $partner);
     $reqHandler->setParameter("out_trade_no", $out_trade_no);
     $reqHandler->setParameter("total_fee", $total_fee);
     //总金额
     $reqHandler->setParameter("return_url", $return_url);
     $reqHandler->setParameter("notify_url", $notify_url);
     $reqHandler->setParameter("body", '财付通在线支付');
     $reqHandler->setParameter("bank_type", "DEFAULT");
     //银行类型,默认为财付通
     //用户ip
     $reqHandler->setParameter("spbill_create_ip", $_SERVER['REMOTE_ADDR']);
     //客户端IP
     $reqHandler->setParameter("fee_type", "1");
     //币种
     $reqHandler->setParameter("subject", 'weixin');
     //商品名称,(中介交易时必填)
     //系统可选参数
     $reqHandler->setParameter("sign_type", "MD5");
     //签名方式,默认为MD5,可选RSA
     $reqHandler->setParameter("service_version", "1.0");
     //接口版本号
     $reqHandler->setParameter("input_charset", "utf-8");
     //字符集
     $reqHandler->setParameter("sign_key_index", "1");
     //密钥序号
     //业务可选参数
     $reqHandler->setParameter("attach", "");
     //附件数据,原样返回就可以了
     $reqHandler->setParameter("product_fee", "");
     //商品费用
     $reqHandler->setParameter("transport_fee", "0");
     //物流费用
     $reqHandler->setParameter("time_start", date("YmdHis"));
     //订单生成时间
     $reqHandler->setParameter("time_expire", "");
     //订单失效时间
     $reqHandler->setParameter("buyer_id", "");
     //买方财付通帐号
     $reqHandler->setParameter("goods_tag", "");
     //商品标记
     $reqHandler->setParameter("trade_mode", 1);
     //交易模式(1.即时到帐模式,2.中介担保模式,3.后台选择(卖家进入支付中心列表选择))
     $reqHandler->setParameter("transport_desc", "");
     //物流说明
     $reqHandler->setParameter("trans_type", "1");
     //交易类型
     $reqHandler->setParameter("agentid", "");
     //平台ID
     $reqHandler->setParameter("agent_type", "");
     //代理模式(0.无代理,1.表示卡易售模式,2.表示网店模式)
     $reqHandler->setParameter("seller_id", "");
     //卖家的商户号
     //请求的URL
     $reqUrl = $reqHandler->getRequestURL();
     //获取debug信息,建议把请求和debug信息写入日志,方便定位问题
     /**/
     $debugInfo = $reqHandler->getDebugInfo();
     header('Location:' . $reqUrl);
     //echo "<br/>" . $reqUrl . "<br/>";
     //echo "<br/>" . $debugInfo . "<br/>";
 }
コード例 #24
0
ファイル: tenpay.php プロジェクト: djqhuan/CSCMS-v4.0-UTF8
 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";
     }
 }
コード例 #25
0
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);
    //设置请求内容
    $httpClient->setReqContent($queryReq->getRequestURL());
    //后台调用
    if ($httpClient->call()) {
        //设置结果参数
        $queryRes = new ClientResponseHandler();
        $queryRes->setContent($httpClient->getResContent());
        $queryRes->setKey($key);
        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");
コード例 #26
0
ファイル: pay.php プロジェクト: xxjuan/php-coffee
$reqHandler->setParameter("sign_key_index", "1");
//密钥序号
//业务可选参数
$reqHandler->setParameter("attach", "");
//附件数据,原样返回就可以了
$reqHandler->setParameter("product_fee", "");
//商品费用
$reqHandler->setParameter("transport_fee", "0");
//物流费用
$reqHandler->setParameter("time_start", date("YmdHis"));
//订单生成时间
$reqHandler->setParameter("time_expire", "");
//订单失效时间
$reqHandler->setParameter("buyer_id", "");
//买方财付通帐号
$reqHandler->setParameter("goods_tag", "");
//商品标记
$reqHandler->setParameter("trade_mode", "1");
//交易模式(1.即时到帐模式,2.中介担保模式,3.后台选择(卖家进入支付中心列表选择))
$reqHandler->setParameter("transport_desc", "");
//物流说明
$reqHandler->setParameter("trans_type", "1");
//交易类型
$reqHandler->setParameter("agentid", "");
//平台ID
$reqHandler->setParameter("agent_type", "");
//代理模式(0.无代理,1.表示卡易售模式,2.表示网店模式)
$reqHandler->setParameter("seller_id", "");
//请求的URL
$result = $reqHandler->getRequestURL();