文档章节

微信小程序实现带参二维码

秀杰
 秀杰
发布于 2017/03/21 10:58
字数 476
阅读 825
收藏 0

效果图:

效果图

场景:生成一个带用户参数的二维码,显示在小程序端或打印输入,其他人扫码进入识别用户来路

后端:php实现

调用接口:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential与https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode

小程序端:<image src="https://youdomain.com/getQRCode?uid=123456" />,无js调用

文档出处:https://mp.weixin.qq.com/debug/wxadoc/dev/api/qrcode.html

注意点:二维码生成的过程与小程序端逻辑无关,在后端实现生成图片输出给<image>即可。

由于代码比较简单,就直接上代码了

// 服务端生成图片
public function getQRCode() {
	// 获取access_token
	$accessTokenObject = json_decode(file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.WxPayConfig::APPID.'&secret='.WxPayConfig::APPSECRET));
	// 拼接微信服务端获取二维码需要的url,见文档https://mp.weixin.qq.com/debug/wxadoc/dev/api/qrcode.html
	$url = 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=' . $accessTokenObject->access_token;
	$uid = $this->input->get('uid');
	$json = '{"path": "pages/index/index?"' . $uid . ', "width": 430}';
	$ch = curl_init();
	//设置超时
	curl_setopt($ch, CURLOPT_TIMEOUT, 60);
	//如果有配置代理这里就设置代理
	if(WxPayConfig::CURL_PROXY_HOST != "0.0.0.0" 
		&& WxPayConfig::CURL_PROXY_PORT != 0){
		curl_setopt($ch,CURLOPT_PROXY, WxPayConfig::CURL_PROXY_HOST);
		curl_setopt($ch,CURLOPT_PROXYPORT, WxPayConfig::CURL_PROXY_PORT);
	}
	curl_setopt($ch,CURLOPT_URL, $url);
	curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
	curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
	//要求结果为字符串且输出到屏幕上
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
	//设置header
	header('Content-Type: image/jpeg');
	//post提交方式
	curl_setopt($ch, CURLOPT_POST, TRUE);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
	//运行curl
	$data = curl_exec($ch);
	//返回结果
	curl_close($ch);
	echo $data;
}

header设置为header('Content-Type: image/jpeg');然后echo服务端返回的二进制data就可以了。

源码下载:http://git.oschina.net/dotton/lendoo-wx,本文涉及代码存于/pages/member/share文件夹中。

对移动开发有兴趣的朋友可以关注我的公众号【huangxiujie85】与我交流讨论,给我留言或文章评论。

公众号huangxiujie85

© 著作权归作者所有

秀杰
粉丝 152
博文 94
码字总数 50956
作品 0
瑞安
iOS工程师
私信 提问
如何通过二维码门禁实现微信开门

如何通过二维码门禁实现微信开门 如何通过二维码门禁实现微信开门是现下许多客户关心的问题,塞伯罗斯对此进行多番研究,如何让二维码门禁与微信二维码相互作用,微信小程序的诞生便是链接其...

塞伯罗斯
2018/05/15
0
0
微信小程序推广二维码海报Node.js实现版

引言 最近公司的微信小程序项目由于业务需求需要实现二维码推广海报,而小程序的服务端代码是用node.js实现的,由于是第一次使用node.js作为服务端来实现图片的相关处理,不免走了一些坑。所...

黄晋
2018/12/04
0
0
线上直播 | 掘金开发者大会小程序专场,码上出发

掘金即将于明日在北京富力万丽酒店召开以「掘金开发者大会 · 微信小程序专场」的大型开发者活动,届时将有超过 600 名开发者、数十个小程序团队、数十家合作伙伴及媒体参与。此次活动由腾讯...

稀土君
2018/09/15
0
0
如何用PHP或者JAVA实现扫描大量货品二维码,并将二维码信息写入数据库中?

重金酬谢:用PHP或者Java写一个小程序:实现大量扫描货品二维码信息,并将二维码信息存入数据 库中。类似于超市结账时用扫码枪连续扫描几件、几十件商品,并将扫描到信息写入数据库中。想做一...

海滩小男孩
2018/03/17
466
2
7 天后,让掘金开发者大会带你探索微信小程序开发的无限可能!

掘金即将于2018年9月16日在北京富力万丽酒店召开以「掘金开发者大会 · 微信小程序专场」的大型开发者活动,届时将有超过 600 名开发者、数十个小程序团队、十余家合作伙伴及数十家媒体参与。...

稀土君
2018/09/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ngrok 外网映射工具

ngrok介绍 许多刚学java web的同学(包括我自己)肯定都非常好奇,如何在外网上访问自己做的项目,跟我们本地访问tomcat有什么区别? 今天就向大家介绍一个非常强大的外网映射工具:ngrok.ngrok可以...

edison_kwok
25分钟前
0
0
Spark Streaming的优化之路——从Receiver到Direct模式

          作者:个推数据研发工程师 学长 1 业务背景 随着大数据的快速发展,业务场景越来越复杂,离线式的批处理框架MapReduce已经不能满足业务,大量的场景需要实时的数据处理结果来...

个推
今天
3
0
壮丽70年·奋斗新时代|蒸妙集团熏蒸中会阴熏蒸的神奇好处

聚结相合之处为会。会阴居两阴间,为督、任、冲三脉的起点,三脉背出两阴之间,会聚阴部,因名会阴。会阴,经穴名。出《针灸甲乙经》。会阴别名屏翳、下极、金门。属任脉。在会阴部,男性当阴...

公益传承
今天
2
0
pentaho-kettle-8.2.0.0-R源码开发环境搭建

1.从Kettle官网下载源码,本文使用的是pentaho-kettle-8.2.0.0-R 下载地址:https://codeload.github.com/pentaho/pentaho-kettle/zip/8.2.0.0-R 2.打开eclipse,选择一个新的工作空间,然后设...

gq_2010
今天
1
0
lua web快速开发指南(7) - 高效的接口调用 - httpc库

httpc库基于cf框架都内部实现的socket编写的http client库. httpc库内置SSL支持, 在不使用代理的情况下就可以请求第三方接口. httpc支持header、args、body、timeout请求设置, 完美支持各种h...

水果糖的小铺子
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部