GetOpenid(); //②、统一下单 require(PAY_ROOT.'inc/class/Utils.class.php'); require(PAY_ROOT.'inc/config.php'); require(PAY_ROOT.'inc/class/RequestHandler.class.php'); require(PAY_ROOT.'inc/class/ClientResponseHandler.class.php'); require(PAY_ROOT.'inc/class/PayHttpClient.class.php'); $resHandler = new ClientResponseHandler(); $reqHandler = new RequestHandler(); $pay = new PayHttpClient(); $cfg = new Config(); $reqHandler->setGateUrl($cfg->C('url')); $reqHandler->setSignType($cfg->C('sign_type')); $reqHandler->setKey($cfg->C('key')); $reqHandler->setParameter('service','pay.weixin.jspay');//接口类型 $reqHandler->setParameter('mch_id',$cfg->C('mchId'));//必填项,商户号,由平台分配 $reqHandler->setParameter('version',$cfg->C('version')); $reqHandler->setParameter('sign_type',$cfg->C('sign_type')); $reqHandler->setParameter('is_raw','1'); $reqHandler->setParameter('body',$ordername); $reqHandler->setParameter('sub_appid',WxPayConfig::APPID); $reqHandler->setParameter('sub_openid',$openId); $reqHandler->setParameter('total_fee',strval($order['money']*100)); $reqHandler->setParameter('mch_create_ip',$clientip); $reqHandler->setParameter('out_trade_no',TRADE_NO); $reqHandler->setParameter('device_info', 'AND_WAP');//应用类型 $reqHandler->setParameter('notify_url',$conf['localurl'].'pay/unionpay/notify/'.TRADE_NO.'/'); $reqHandler->setParameter('nonce_str',mt_rand(time(),time()+rand()));//随机字符串,必填项,不长于 32 位 $reqHandler->createSign();//创建签名 $data = Utils::toXml($reqHandler->getAllParameters()); //var_dump($data); $pay->setReqContent($reqHandler->getGateURL(),$data); if($pay->call()){ $resHandler->setContent($pay->getResContent()); $resHandler->setKey($cfg->C('key')); if($resHandler->isTenpaySign()){ //当返回状态与业务结果都为0时才返回支付二维码,其它结果请查看接口文档 if($resHandler->getParameter('status') == 0 && $resHandler->getParameter('result_code') == 0){ $pay_info = $resHandler->getParameter('pay_info'); }else{ sysmsg('微信支付下单失败 ['.$resHandler->getParameter('err_code').']'.$resHandler->getParameter('err_msg')); } }else{ sysmsg('微信支付下单失败 ['.$resHandler->getParameter('status').']'.$resHandler->getParameter('message')); } }else{ sysmsg('支付接口调用失败 ['.$pay->getResponseCode().']'.$pay->getErrInfo()); } if($_GET['d']==1){ $redirect_url='window.location.href=data.backurl'; }else{ $redirect_url='WeixinJSBridge.invoke("closeWindow", {}, function(e) {});'; } ?>