微信二维码付款

时间:2021-11-08 13:27:26

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