一、接口文档地址
获取小程序码,适用于需要的码数量极多的业务场景。通过该接口生成的小程序码,
永久有效,数量暂无限制。
- 地址导航:
微信官方文档->小程序->服务端->小程序码->getUnlimited请移步文档地址 >>>
二、接口调用
- 调用详情请看官方文档>>>
三、返回值
1、说明
- 如果调用成功,会直接返回图片==二进制内容==,如果请求失败,会返回 ==JSON 格式==的数据。
2、正常返回
- 返回的图片 Buffer
3、异常返回
- 数据格式:
json - json内容:errcode(number)-错误码;errmsg(string)-错误信息
- errcode 的合法值:45009-调用分钟频率受限(目前5000次/分钟,会调整),如需大量小程序码,建议预生成;41030-所传page页面不存在,或者小程序没有发布
四、注意
POST参数需要转成JSON字符串,不支持form表单提交。- 接口只能生成已发布的小程序的二维码
- 调用分钟频率受限(
5000次/分钟),如需大量小程序码,建议预生成 - scene 参数:
最大32个可见字符,==只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~==,其它字符请自行编码为合法字符(因==不支持%==,中文无法使用urlencode处理,请使用其他编码方式) - page 参数:必须是
已经发布的小程序存在的页面(否则报错),例如pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),==如果不填写这个字段,默认跳主页面==
五、PHP调用
- 代码
public function test() {
$result = self::getQrCode();
var_export($result);
die();
}
//获取二维码
public function getQrCode() {
$url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN';
$data = [
'scene' => 'uid=1&orderId=2', //最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
'page' => '', //必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
'width' => 200, //二维码的宽度,单位 px,最小 280px,最大 1280px
];
$result = self::curlPostJson($url, $data);
return $result;
}
//json post请求
public function curlPostJson($url, $data, $header = []) {
$data = json_encode($data);
$ch = curl_init();
if (!empty($data)) {
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
$header[]='Content-Type: application/json; charset=utf-8';
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //为true,则会跟踪爬取重定向页面,否则,不会跟踪重定向页面
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间:30s
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //忽略ssl检测
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //1 或 TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。-
curl_setopt($ch, CURLINFO_HEADER_OUT, true); //TRUE 时追踪句柄的请求字符串,从 PHP 5.1.3 开始可用。这个很关键,就是允许你查看请求header
curl_setopt($ch, CURLOPT_URL, $url);
$output = curl_exec($ch);
if (!$output) {
// echo "request $url fail:", (array)curl_error($ch); //记录日志
}
curl_close($ch);
// echo "request $url success:" . json_encode(array($url, $header, $output), true); //记录日志
return $output;
}
- 输出
'{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest rid: 60a3271a-770b3ab0-448314f5"}'