微信开发中怎样生成带参数的二维码?

生成带参数的二维码

目前有2种类型的二维码:

1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。

用户扫描带场景值二维码时,可能推送以下两种事件:

如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。

如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。

获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。

创建二维码ticket

每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket过程。

临时二维码请求说明

http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
POST数据格式:json
POST数据例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

或者也可以使用以下POST数据创建字符串形式的二维码参数:
{"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}

永久二维码请求说明

http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
POST数据格式:json
POST数据例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}

或者也可以使用以下POST数据创建字符串形式的二维码参数:
{"action_name": "QR_LIMIT_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}

正确的Json返回结果:返回说明

{"ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm
3sUw==","expire_seconds":60,"url":"http://weixin.qq.com/q/kZgfwMTm72WWPkovabbI"}


获取二维码ticket后,开发者可用ticket换取二维码图片。请注意,本接口无须登录态即可调用。通过ticket换取二维码

具体代码如下:
	public function qrcodeAdd(){
		if(IS_GET){
			$this->display('qrcode_add');
		}else{
			$mp = $this->mp;//获取正在使用的公众号
			$arr = I('post.');
			$arr['mpid'] = $mp['id'];
			$id = M('qrcode')->add($arr);

			include APP_PATH.'LaneWeChat/Lanewechat.php'; 
			$ret=Popularize::createTicket($arr['qr_type'],$arr['expire'],$arr['scene_str']);
			// $this->ajaxReturn($ret);
			// exit;

			if(isset($ret['ticket'])){
				$ticket = $ret['ticket'];
				$qrcodefile = Popularize::getQrcode($ticket);
				// echo $qrcodefile;
				// exit;
				$ret['src'] = $qrcodefile;
				$ret['create_time'] = time();
				// dump($ret);
				// exit;
				M('qrcode')->where("id=$id")->save($ret);
				$this->ajaxReturn(array('status'=>1,'msg'=>'ok','url'=>U('index')));
			}else{
                $this->ajaxReturn(array('status'=>1,'msg'=>$ret));
			}
		}
		
	}

微信小程序可以使用微信提供的API生成参数二维码,具体步骤如下: 1. 在小程序管理后台,进入“开发”->“开发设置”->“接口设置”,勾选“生成参数二维码”并保存。 2. 在小程序调用wx.request()方法向微信服务器发送生成二维码的请求,请求URL为:https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode,请求方法为POST。 3. 在请求参数,需要传入access_token(调用凭证)、path(小程序页面路径,可以参数)、width(二维码宽度,单位为像素,默认为430px),例如: ``` wx.request({ url: 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode', method: 'POST', header: { 'content-type': 'application/json' }, data: { access_token: 'ACCESS_TOKEN', path: 'pages/index/index?param1=xxx&param2=xxx', width: 430 }, success: function (res) { console.log(res.data) } }) ``` 4. 微信服务器会返回二进制数据,可以使用wx.arrayBufferToBase64()方法将其转换为base64字符串,再使用wx.createImage()方法生成图片。例如: ``` wx.request({ url: 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode', method: 'POST', header: { 'content-type': 'application/json' }, data: { access_token: 'ACCESS_TOKEN', path: 'pages/index/index?param1=xxx&param2=xxx', width: 430 }, responseType: 'arraybuffer', success: function (res) { var base64 = wx.arrayBufferToBase64(res.data) wx.createImage({ src: 'data:image/jpeg;base64,' + base64, success: function (res) { console.log(res) } }) } }) ``` 以上就是生成参数二维码的步骤,需要注意的是,调用接口时需要传入正确的access_token,而且access_token有时效性,需要定期更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值