获取小程序码:小程序码为圆图,且不受数量限制。
目录
文档
接口地址
请求方式
功能描述
注意事项
获取 scene 值
请求参数
返回参数
对接
请求方法
获取小程序码
调用获取小程序码
总结
文档
接口地址
https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
请求方式
POST
功能描述
该接口用于获取小程序码,适用于需要的码数量极多的业务场景。通过该接口生成的小程序码,永久有效,数量暂无限制。 更多用法详见 获取小程序码。
注意事项
如果调用成功,会直接返回图片二进制内容,如果请求失败,会返回 JSON 格式的数据。
POST 参数需要转成 JSON 字符串,不支持 form 表单提交。
调用分钟频率受限(5000次/分钟),如需大量小程序码,建议预生成
获取 scene 值
scene 字段的值会作为 query 参数传递给小程序/小游戏。用户扫描该码进入小程序/小游戏后,开发者可以获取到二维码中的 scene 值,再做处理逻辑。
调试阶段可以使用开发工具的条件编译自定义参数 scene=xxxx 进行模拟,开发工具模拟时的 scene 的参数值需要进行 encodeURIComponent
请求参数
返回参数
对接
请求方法
对请求使用了curl方法进行了封装。
代码如下:
/**
* 发起请求
* @param string $url 请求地址
* @param string $param 请求数据包
* @return string 请求返回数据
*/
public function http_post($url, $param)
{
$oCurl = curl_init();
if (stripos($url, "https://") !== FALSE) {
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
}
if (is_string($param)) {
$strPOST = $param;
} else {
$aPOST = array();
foreach ($param as $key => $val) {
$aPOST[] = $key . "=" . urlencode($val);
}
$strPOST = join("&", $aPOST);
}
curl_setopt($oCurl, CURLOPT_URL, $url);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($oCurl, CURLOPT_POST, true);
curl_setopt($oCurl, CURLOPT_HTTPHEADER, array(
'X-AjaxPro-Method:ShowList',
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($strPOST))
);
curl_setopt($oCurl, CURLOPT_POSTFIELDS, $strPOST);
$sContent = curl_exec($oCurl);
$aStatus = curl_getinfo($oCurl);
curl_close($oCurl);
if (intval($aStatus["http_code"]) == 200) {
return $sContent;
} else {
return false;
}
}
获取小程序码
对获取小程序码所需参数、请求地址、调用进行请求封装为一个函数。
page是小程序跳转路径,param_str是传递的参数和值。
代码如下:
public function getWxaCodeUnLimit($page, $param_str, $access_token)
{
$url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" . $access_token;
return $this->http_post($url, json_encode(array(
'scene' => $param_str,
'page' => $page,
'width' => 430,
'check_path' => false, // 不检测路径
'env_version' => 'trial', // 体验版 默认正式版
)));
}
调用获取小程序码
注意:调用的前置条件是获取access_token值。这里不再详述获取access_token。
代码如下:
$path = 'pages/special/groupPurchase/GroupDetails';
$param_str = 'id=1';
$image = $wechatModel->getWxaCodeUnLimit($path, $param_str, $access_token);
if (strlen($image) < 1000) {
ds_json_encode(10001, '错误', $image);
}
$filename = sprintf('./uploads/min_%d.png', time());
file_put_contents($filename, $image);
ds_json_encode(10000, ['path' => $filename]);
小程序码示例
总结
获取受数量限制的小程序码适用于需要推广的链接较少且需要永久有效的场景。