public function pay()
 {
     // //////////////////////////////////
     // before
     $orderid = $_GET['orderid'];
     if ($orderid == "") {
         $orderid = $_GET['single_orderid'];
     }
     $price = $_GET['price'];
     // 参数数据
     $orderName = $_GET['orderName'];
     // 服务器异步通知页面路径
     $notify_url = addons_url('Payment://TenpayComputer/notify_url');
     // 需http://格式的完整路径,不能加?id=123这类自定义参数
     // 页面跳转同步通知页面路径
     $return_url = addons_url('Payment://TenpayComputer/return_url', array("token" => $_GET['token'], "wecha_id" => $_GET['wecha_id'], "from" => $_GET['from']));
     //
     if (!$price) {
         exit('必须有价格才能支付');
     }
     $total_fee = floatval($price) * 100;
     require_once "TenpayComputer/RequestHandler.class.php";
     $out_trade_no = $orderid;
     $reqHandler = new RequestHandler();
     $reqHandler->init();
     $key = $this->payConfig['wappartnerkey'];
     $partner = $this->payConfig['wappartnerid'];
     $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);
 }
Пример #2
0
 public function pay()
 {
     require_once "Tenpay/RequestHandler.class.php";
     require_once "Tenpay/client/ClientResponseHandler.class.php";
     require_once "Tenpay/client/TenpayHttpClient.class.php";
     $partner = $this->payConfig['partnerid'];
     $key = $this->payConfig['partnerkey'];
     $orderid = $_GET['orderid'];
     if ($orderid == "") {
         $orderid = $_GET['single_orderid'];
     }
     $out_trade_no = $orderid;
     $price = $_GET['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 = addons_url('Payment://Tenpay/return_url', array("token" => $_GET['token'], "wecha_id" => $_GET['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 = addons_url('Payment://Tenpay/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);
 }