微信小程序官方开放了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
即可生成一个带参数的小程序二维码
葵花状的小程序码 的二维码 怎么弄
获取菊花码怎么搞?
https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$access_token;
这个好像不行
已经执行到了
//POST参数
$result
= httpRequest(
$qcode
,
$param
,
"POST"
);
这一步没有失败提示,按道理应该是成功了,但是我将得到的数据存入数据库,却是一片空白,这是什么问题呢?
需要先处理一下?还是直接存数据库就空白?
(如下图,前面是错误的,后面调试后,没报错了。但是得到的确实一片空白)??
)
我自己搭建了一个小程序码生成平台(支持abc接口)
只需要填写一丁点的参数就可以直接调用。。
https://dev.vcode.cloud
请教个问题哦,未发布的小程序,能够通过这三个接口获取小程序的二维码或小程序码?
这个参数拿不到是什么问题
if
(options.scene){
var
scene = decodeURIComponent(options.scene);
console.log(scene);
}
EasyWechat了解下