PHP生成微信小程序二维码,可生成带参数二维码。
微信小程序官方开放了3个创建二维码的接口,其中有一个是生成二维码的,还有一个是葵花状的小程序码,我这里就用php生成二维码。 首先要获取Access_token这个请求起来也是很容易的,微信开发文档有请求接口: 要把自己的小程序的APPID和APPSECRET获取到 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET access_token只有2小时有效期,所以要缓存最好,避免重复请求 [图片] 可以构建一个数组,然后转成json数据赋给一个变量 [代码]$param[代码] [代码]= json_encode([代码][代码]array[代码][代码]([代码][代码]"path"[代码][代码]=>[代码][代码]"pages/index/index?id=123"[代码][代码],[代码][代码]"width"[代码][代码]=> 150));[代码] 然后POST数据发送到微信服务器换取二维码 完整代码 [代码]<?php[代码][代码]header([代码][代码]'content-type:text/html;charset=utf-8'[代码][代码]);[代码][代码]//配置APPID、APPSECRET[代码][代码]$APPID[代码] [代码]= [代码][代码]"APPID"[代码][代码]; [代码][代码]$APPSECRET[代码] [代码]= [代码][代码]"APPSECRET"[代码][代码]; [代码][代码]//获取access_token[代码][代码]$access_token[代码] [代码]= [代码][代码]"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET"[代码][代码];[代码] [代码]//缓存access_token[代码][代码] [代码][代码]session_start();[代码][代码] [代码][代码]$_SESSION[代码][代码][[代码][代码]'access_token'[代码][代码]] = [代码][代码]""[代码][代码];[代码][代码] [代码][代码]$_SESSION[代码][代码][[代码][代码]'expires_in'[代码][代码]] = 0;[代码] [代码] [代码][代码]$ACCESS_TOKEN[代码] [代码]= [代码][代码]""[代码][代码];[代码][代码] [代码][代码]if[代码][代码](!isset([代码][代码]$_SESSION[代码][代码][[代码][代码]'access_token'[代码][代码]]) || (isset([代码][代码]$_SESSION[代码][代码][[代码][代码]'expires_in'[代码][代码]]) && time() > [代码][代码]$_SESSION[代码][代码][[代码][代码]'expires_in'[代码][代码]]))[代码][代码] [代码][代码]{[代码] [代码] [代码][代码]$json[代码] [代码]= httpRequest( [代码][代码]$access_token[代码] [代码]);[代码][代码] [代码][代码]$json[代码] [代码]= json_decode([代码][代码]$json[代码][代码],true); [代码][代码] [代码][代码]// var_dump($json);[代码][代码] [代码][代码]$_SESSION[代码][代码][[代码][代码]'access_token'[代码][代码]] = [代码][代码]$json[代码][代码][[代码][代码]'access_token'[代码][代码]];[代码][代码] [代码][代码]$_SESSION[代码][代码][[代码][代码]'expires_in'[代码][代码]] = time()+7200;[代码][代码] [代码][代码]$ACCESS_TOKEN[代码] [代码]= [代码][代码]$json[代码][代码][[代码][代码]"access_token"[代码][代码]]; [代码][代码] [代码][代码]} [代码][代码] [代码][代码]else[代码][代码]{[代码] [代码] [代码][代码]$ACCESS_TOKEN[代码] [代码]= [代码][代码]$_SESSION[代码][代码][[代码][代码]"access_token"[代码][代码]]; [代码][代码] [代码][代码]}[代码] [代码]//构建请求二维码参数[代码][代码]//path是扫描二维码跳转的小程序路径,可以带参数?id=xxx[代码][代码]//width是二维码宽度[代码][代码]$qcode[代码] [代码]=[代码][代码]"https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=$ACCESS_TOKEN"[代码][代码];[代码][代码]$param[代码] [代码]= json_encode([代码][代码]array[代码][代码]([代码][代码]"path"[代码][代码]=>[代码][代码]"pages/index/index?id=123"[代码][代码],[代码][代码]"width"[代码][代码]=> 150));[代码] [代码]//POST参数[代码][代码]$result[代码] [代码]= httpRequest( [代码][代码]$qcode[代码][代码], [代码][代码]$param[代码][代码],[代码][代码]"POST"[代码][代码]);[代码][代码]//生成二维码[代码][代码]file_put_contents[代码][代码]([代码][代码]"qrcode.png"[代码][代码], [代码][代码]$result[代码][代码]);[代码][代码]$base64_image[代码] [代码]=[代码][代码]"data:image/jpeg;base64,"[代码][代码].[代码][代码]base64_encode[代码][代码]( [代码][代码]$result[代码] [代码]);[代码] [代码]//把请求发送到微信服务器换取二维码[代码][代码] [代码][代码]function[代码] [代码]httpRequest([代码][代码]$url[代码][代码], [代码][代码]$data[代码][代码]=[代码][代码]''[代码][代码], [代码][代码]$method[代码][代码]=[代码][代码]'GET'[代码][代码]){[代码][代码] [代码][代码]$curl[代码] [代码]= curl_init(); [代码][代码] [代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_URL, [代码][代码]$url[代码][代码]); [代码][代码] [代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_SSL_VERIFYPEER, 0); [代码][代码] [代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_SSL_VERIFYHOST, 0); [代码][代码] [代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_USERAGENT, [代码][代码]$_SERVER[代码][代码][[代码][代码]'HTTP_USER_AGENT'[代码][代码]]); [代码][代码] [代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_FOLLOWLOCATION, 1); [代码][代码] [代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_AUTOREFERER, 1); [代码][代码] [代码][代码]if[代码][代码]([代码][代码]$method[代码][代码]==[代码][代码]'POST'[代码][代码])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_POST, 1); [代码][代码] [代码][代码]if[代码] [代码]([代码][代码]$data[代码] [代码]!= [代码][代码]''[代码][代码])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_POSTFIELDS, [代码][代码]$data[代码][代码]); [代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_TIMEOUT, 30); [代码][代码] [代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_HEADER, 0); [代码][代码] [代码][代码]curl_setopt([代码][代码]$curl[代码][代码], CURLOPT_RETURNTRANSFER, 1); [代码][代码] [代码][代码]$result[代码] [代码]= curl_exec([代码][代码]$curl[代码][代码]); [代码][代码] [代码][代码]curl_close([代码][代码]$curl[代码][代码]); [代码][代码] [代码][代码]return[代码] [代码]$result[代码][代码];[代码][代码] [代码][代码]} [代码] [代码]?>[代码] 使用方法:1、新建qrcode.php 2、拷贝上面代码进去 3、修改APPID和APPSECRET 4、访问qrcode.php 即可生成一个带参数的小程序二维码 [图片]