微信二维码付款
$url = $obj->paying($fee,$apiSecret,$trade_no);
<?php class pay{ public function paying($fee,$apiSecret,$trade_no) { $api='https://api.mch.weixin.qq.com/pay/unifiedorder'; //构造参数 $randString=md5(uniqid()); $randOrder='000'.rand(1,1000000); $data=[ 'appid'=>'wxb0e9db1233eeb7b7', 'mch_id'=>'1435153802', 'nonce_str'=>$randString, 'body'=>'付款', 'out_trade_no'=>$trade_no, 'total_fee'=>$fee*100,//单位是分 'spbill_create_ip'=>'127.0.0.1',//终端ip 'notify_url'=>'http://t.51ao.com/wap/paynotice.php',//通知地址 //'notify_url'=>'http://t.51ao.com/wap/1.php',//通知地址 'trade_type'=>'NATIVE', ]; ksort($data);//以键名排序 $string=''; foreach($data as $k=>$v) { $string.="$k=$v&"; } //把秘钥连接到参数上 $string.='key='.$apiSecret; //把链接的字符串全部大写再MD5加密 $sign=strtoupper(md5($string)); //把参数和签名放到一起 $data['sign']=$sign; //参数转成xml $xml='<xml>'; foreach($data as $k=>$v) { $xml.="<$k>$v</$k>"; } $xml.='</xml>'; //var_dump($xml); $ret=$this->post($api,$xml); //解析xml $xml=simplexml_load_string($ret); if($xml->return_code=='SUCCESS') { //把code_url转化成二维码图片 // require('./phpqrcode.php');//包含类库文件 //import('source.class.phpqrcode'); return $xml->code_url; //QRCode::png($xml->code_url); }else { die($xml); } } // var_dump($ret); // 发POST请求 public function post1( $url,$xml,$second = 30) { $ch = curl_init(); curl_setopt($ch, CURLOPT_TIMEOUT, $second); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); $data = curl_exec($ch); curl_close($ch); if ($data) { return $data; } else { $error = curl_errno($ch); echo 'curl出错,错误码:' . $error . '<br>'; echo '<a href=\'http://curl.haxx.se/libcurl/c/libcurl-errors.html\'>错误原因查询</a></br>'; return false; } } public function post($url, $data = '', $isHttps = TRUE) { // 创建curl对象 $ch = curl_init (); // 配置这个对象 curl_setopt ( $ch, CURLOPT_URL, $url); // 请求的URL地址 if($isHttps) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在 } curl_setopt ( $ch, CURLOPT_POST, 1); // 是否是POST请求 curl_setopt ( $ch, CURLOPT_HEADER, 0); // 去掉HTTP协议头 curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1); // 返回接口的结果,而不是输出 curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data); // 提交的数据 // 发出请求 $return = curl_exec ( $ch ); // 关闭对象 curl_close ( $ch ); // 返回数据 return $return; } }