400-800-9385
网站建设资讯详细

ThinkPHP生成微信小程序带参数二维码附详细代码解析

发表日期:2017-10-14 09:41:20   作者来源:方维网络   浏览:8151   标签:ThinkPHP    微信小程序    二维码生成    
生成带参数的微信小程序二维码用的还是比较多的,虽然微信小程序开发文档接口写的很清楚,如下图,但实际开发中总有人不知道如何操作或者经常出错,下面方维网络根据微信小程序定制开发经验,分享使用ThinkPHP生成微信小程序带参数二维码的整个过程。

生成微信小程序二维码

第一步、需要获取ACCESS_TOKEN,需要小程序的APPID和APPSECRET,这两个只要到微信小程序管理后台即可获得。

第二步、使用微信小程序开发接口生成二维码并保存到服务器。代码如下,其中sendCmd是远程请求的函数,file_put_contents是PHP自带函数,用于保存图片,【APPID】和【APPSECRET】请换成你自己的实际参数值。

$url_access_token = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=【APPID】&secret=【APPSECRET】;
$json_access_token = sendCmd($url_access_token,array());
$arr_access_token = json_decode($json_access_token,true);
$access_token = $arr_access_token['access_token'];
if(!empty($access_token)) {
     $url = 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token='.$access_token;
     $data = '{"path": "pages/index/index?shop_id='.$shop_id.'&no_id='.$no_id.'", "width": 430}';
     $result = sendCmd($url,$data);
     file_put_contents('Public/code/code-'.$shop_id.'-'.$no_id.'.jpg',$result);
    return 'success';
} else {
    return 'ACCESS TOKEN为空!';
}

/**
 * 发起请求
 * @param  string $url  请求地址
 * @param  string $data 请求数据包
 * @return   string      请求返回数据
 */
function sendCmd($url,$data)
{
    $curl = curl_init(); // 启动一个CURL会话      
    curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址                  
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测    
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在      
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:')); //解决数据包大不能提交     
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转      
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer      
    curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求      
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包      
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循     
    curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容      
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 
           
    $tmpInfo = curl_exec($curl); // 执行操作      
    if (curl_errno($curl)) {      
       echo 'Errno'.curl_error($curl);      
    }      
    curl_close($curl); // 关键CURL会话      
    return $tmpInfo; // 返回数据      
}

上面代码不多,是不是很简单,欢迎转载,转载请注明来源方维网站建设http://www.szfangwei.cn
如没特殊注明,文章均为方维网络原创,转载请注明来自https://www.szfangwei.cn/news/3928.html