由于业务场景需要,进入小程序自动实现某些功能,那么这时候我们就需要在进入小程序的时候携带一些参数。
比如做推广关系绑定,或者用户完成某项指标到小程序来领取红包奖励等。。。
微信小程序二维码官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html
php具体实现代码:
/*
* 生成带参数的小程序二维码
**/
public function getQRCode($auth)
{
// 获取access_token
$accessTokenObject = json_decode(file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . WxopenWechatConfig::$init_config_applet['appid'] . '&secret=' . WxopenWechatConfig::$init_config_applet['appsecret']));
if (!isset($accessTokenObject->access_token)) {
return false;
}
// 拼接微信服务端获取二维码需要的url
$url = 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=' . $accessTokenObject->access_token;
$data['auth'] = $auth;
$data['path'] = "pages/index/index";
$json = json_encode($data);
$result = $this->api_notice_increment($url, $json);
header('Content-Type: image/jpeg');
echo $result;
die;
}
public function api_notice_increment($url, $data)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = curl_exec($ch);
if (curl_errno($ch)) {
curl_close($ch);
return $ch;
} else {
curl_close($ch);
return $tmpInfo;
}
}
tip:
1:此种方式采用的微信生成二维码的方法一,数量有限,好处path长度够长128,能传递绝大部分加密后的信息
2:如果不需要加密,或者加密后字符串长度在32位以内,方法二是最好选择,生成数量没有限制。
最后附上进入小程序页面后参数接收方法:
onLoad: function (options) {
this.getParamsCode(options);
},
//获取二维码参数
getParamsCode: function (options) {
if (options.auth != undefined) {
app.globalData.pcUserInfo = {auth: options.auth}
}
},