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); }
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); }