php微信生成微信公众号二维码扫描进入公众号带参数
为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。
目前有2种类型的二维码:
1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。
用户扫描带场景值二维码时,可能推送以下两种事件:
如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。
获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。
创建二维码ticket
每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket过程。
注意
expire_seconds 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。
action_name 二维码类型,QR_SCENE为临时的整型参数值,QR_STR_SCENE为临时的字符串参数值,QR_LIMIT_SCENE为永久的整型参数值,QR_LIMIT_STR_SCENE为永久的字符串参数值
action_info 二维码详细信息
scene_id 场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1–100000)
scene_str 场景值ID(字符串形式的ID),字符串类型,长度限制为1到64
<?php
namespace app\api\model;
set_time_limit(30);class WxQrcode{//构造方法static $qrcode_url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?";static $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&";static $qrcode_get_url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?";//生成二维码public function getEwm($fqid,$type = 1){$appid = '你的appid';$secret = '你的secret';$ACCESS_TOKEN = $this->getToken($appid,$secret);$url = $this->getQrcodeurl($ACCESS_TOKEN,$fqid,$type);save_log('测试保存的路径'.$url.'fid'.$fqid);return $this->DownLoadQr($url,time());}protected function getQrcodeurl($ACCESS_TOKEN,$fqid,$type = 1){$url = self::$qrcode_url.'access_token='.$ACCESS_TOKEN;if($type == 1){//生成永久二维码$qrcode= '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_str": '.$fqid.'}}}';}else{//生成临时二维码$qrcode = '{"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": '.$fqid.'}}}';}$result = $this->http_post_data($url,$qrcode);$oo = json_decode($result[1]);if (empty($oo->ticket)){return false;}if(!$oo->ticket){$this->ErrorLogger('getQrcodeurl falied. Error Info: getQrcodeurl get failed');exit();}$url = self::$qrcode_get_url.'ticket='.$oo->ticket.'';return $url;}protected function getToken($appid,$secret){$ACCESS_TOKEN = file_get_contents(self::$token_url."appid=$appid&secret=$secret");$ACCESS_TOKEN = json_decode($ACCESS_TOKEN);$ACCESS_TOKEN = $ACCESS_TOKEN->access_token;return $ACCESS_TOKEN;}protected function http_post_data($url, $data_string) {$ch = curl_init();curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8','Content-Length: ' . strlen($data_string)));ob_start();curl_exec($ch);if (curl_errno($ch)) {$this->ErrorLogger('curl falied. Error Info: '.curl_error($ch));}$return_content = ob_get_contents();ob_end_clean();$return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);return array($return_code, $return_content);}//下载二维码到服务器protected function DownLoadQr($url,$filestring){if($url == ""){return false;}$filename = $filestring.rand(0,99999999999).'.jpg';ob_start();readfile($url);$img=ob_get_contents();ob_end_clean();$size=strlen($img);$fp2=fopen('static/qrcode/'.$filename,"a");if(fwrite($fp2,$img) === false){$this->ErrorLogger('dolwload image falied. Error Info: 无法写入图片');exit();}fclose($fp2);return 'static/qrcode/'.$filename;}//错误日志private function ErrorLogger($errMsg){$logger = fopen('log.txt', 'a+');fwrite($logger, date('Y-m-d H:i:s')." Error Info : ".$errMsg."\r\n");fclose($logger);}}
廖圣平博客整理
参考微信官方文档
php微信生成微信公众号二维码扫描进入公众号带参数相关推荐
- 制作微信公众号二维码,跳转,获取参数
1.我在pc端使用qrcodejs2插件,你只需要把服务器地址填入进去就好了,后面参数你可以拼接(唯一注意的点是url的长度) 2.获取二维码(也就是url)传递过来的参数 //获得url let u ...
- 怎么获取公众号二维码?
如果是公众号的管理员,当然可以从微信公众平台直接下载二维码,但这里我要说的场景是:不是公众号的管理员,怎么获取公众号的二维码(且获取到的二维码都是静态的,不带参数的). 使用场景 首先解释一下为什么要 ...
- 微信公众号二维码怎么生成?好用的生成方法介绍
微信公众号二维码怎么生成?从事新媒体行业的小伙伴们应该都对微信公众号不陌生吧,公众号是一个企业对外宣传的重要方式之一.通常情况下我们都会将公众号的二维码放置在文章的文末.以便于读者扫码关注公众号.那么 ...
- 根据微信号,生成微信公众号二维码
第一步:获取公众号的微信号(公众号微信号默认是没有设置的,需要设置后才有) 第二步:使用官网地址,生成公众号二维码 从微信官方获取微信公众号名片:https://open.weixin.qq.com/ ...
- 微信公众号二维码海报自动生成,海报通推广有绝招
公众号二维码海报自动生成,使用公众号开发接口生成带参数的二维码和获取用户基本信息(UnionID机制)实现海报通的效果,在自己的服务器上部署就可以,也可以直接使用微号帮平台生成海报二维码. 1.生成海 ...
- 生成微信公众号二维码(用户扫码关注公众号)
1.token 文件 /*** https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=1 ...
- 微信公众号 二维码场景统计 场景二维码
之前接到了一个项目,要求在关注公众号的用户,推广下个用户,实行奖励模式(只有两级!).然而,一脸懵,网站开发推广生成二维码,我知道怎么做,大不了记录用户Id,生成二维码,扫描的时候,获取用户Id,然后 ...
- 关注微信公众号二维码可以带参数吗?
2019独角兽企业重金招聘Python工程师标准>>> 需求是这样的,用户可以分享自己的微信二维码,别人扫码进入,能监测到.功能怎么实现呢? 通过微号帮平台可以实现,微信公众平台接口 ...
- 专属微信二维码python制作_如何利用Python制作简单的公众号二维码关注图
创意配图:微信,微信公众号,微信大V 而且最近发现了一个新的图像处理方面的库-Wand,它是 ImageMagick 库的 Python 接口.于是,我就打算用这个库来实现简单的制作一个二维码关注图, ...
最新文章
- 7.3 rpm工具用法
- 一文告诉你,为什么要研究JVM原理
- zblog文件大小超出,上传成功但插入不了
- ant构建项目迁移到gradle_自动化构建、自动化部署发布一览
- linux中断的上半部和下半部
- php+反序列化代码执行漏洞,PHP反序列化漏洞
- 2.x最终照着教程,成功使用OpenGL ES 绘制纹理贴图,添加了灰度图
- eclipse下生成Java类图和时序图,生成UML图
- Scala初步学习(二)
- python的设计具有很强的可读性_Python是什么?具有怎么样的特点呢?
- WinXP中自带的netsh命令自动切换IP(zz)
- MySQL-数据库基础
- springboot Validation
- 网易的java微专业_网易微专业Java高级架构师
- python远程监控服务器多个日志_flume远程监控一个文件
- 我的世界java地狱更新_【我的世界】我得世界:1.16地狱大年夜更新_玩得好游戏攻略...
- java解压两层zip文件_Java解压缩zip - 解压缩多个文件或文件夹实例
- C# 修改本地以太网ip地址
- 阿里 前端 规范_阿里前端开发规范
- 【文献翻译】Network Security Entity Recognition Methods Based on the Deep Neural Network