微信公众平台开发(83)生成带参数二维码_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了微信公众平台开发(83)生成带参数二维码_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8811字,纯文字阅读大概需要13分钟。
内容图文
![微信公众平台开发(83)生成带参数二维码_PHP教程](/upload/InfoBanner/zyjiaocheng/182/e82ab9bb755240ee8233f8e0e4f675c0.jpg)
一、场景二维码
为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。
目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1--100000)。两种二维码分别适用于帐号绑定、用户来源统计等场景。
用户扫描带场景值二维码时,可能推送以下两种事件:
如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。
获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。
二、创建二维码ticket
每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket过程。
临时二维码请求说明
http请求URL
https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
POST数据格式
<span 1 <span { <span 2 "expire_seconds": 1800<span , <span 3 "action_name": "QR_SCENE"<span , <span 4 "action_info"<span : { <span 5 "scene"<span : { <span 6 "scene_id": 100000 <span 7 <span } <span 8 <span } <span 9 }
返回格式:
<span { "ticket": "gQFK8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL3kweXE0T3JscWY3UTltc3ZPMklvAAIEG9jUUgMECAcAAA=="<span , "expire_seconds": 1800<span }
<span 永久二维码请求说明
http请求URL
https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
POST数据格式
<span { "action_name": "QR_LIMIT_SCENE"<span , "action_info"<span : { "scene"<span : { "scene_id": 1000<span } } }
<span 返回格式
<span { "ticket": "gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA=="<span }
<span 提交数据参数说明:
<span
返回结果参数说明
程序实现
<span 1 <span $access_token = " xDx0pD_ZvXkHM3oeu5oGjDt1_9HxlA-9g0vtR6MZ-v4r7MpvZYC4ee4OxN97Lr4irkPKE94tzBUhpZG_OvqAC3D3XaWJIGIn0eeIZnfaofO1C3LNzGphd_rEv3pIimsW9lO-4FOw6D44T3sNsQ5yXQ"<span ; <span 2 <span 3 <span //<span 临时 <span 4 <span $qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 10000}}}'<span ; <span 5 <span //<span 永久 <span 6 <span $qrcode = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 1000}}}'<span ; <span 7 <span 8 <span $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=<span $access_token"<span ; <span 9 <span $result = https_post(<span $url,<span $qrcode<span ); <span 10 <span $jsoninfo = json_decode(<span $result, <span true<span ); <span 11 <span $ticket = <span $jsoninfo["ticket"<span ]; <span 12 <span 13 <span function https_post(<span $url, <span $data = <span null<span ){ <span 14 <span $curl =<span curl_init(); <span 15 curl_setopt(<span $curl, CURLOPT_URL, <span $url<span ); <span 16 curl_setopt(<span $curl, CURLOPT_SSL_VERIFYPEER, <span FALSE<span ); <span 17 curl_setopt(<span $curl, CURLOPT_SSL_VERIFYHOST, <span FALSE<span ); <span 18 <span if (!<span empty(<span $data<span )){ <span 19 curl_setopt(<span $curl, CURLOPT_POST, 1<span ); <span 20 curl_setopt(<span $curl, CURLOPT_POSTFIELDS, <span $data<span ); <span 21 <span } <span 22 curl_setopt(<span $curl, CURLOPT_RETURNTRANSFER, 1<span ); <span 23 <span $output = curl_exec(<span $curl<span ); <span 24 curl_close(<span $curl<span ); <span 25 <span return <span $output<span ; <span 26 }
三、通过ticket换取二维码
获取二维码ticket后,开发者可用ticket换取二维码图片。无须登录态即可调用。
HTTPS GET请求说明(TICKET必需UrlEncode)
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
ticket正确情况下,http 返回码是200,是一张图片,可以直接展示或者下载。
HTTP头示例如下:
<span 1 <span { <span 2 "url": "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA%3D%3D", <span 3 "content_type": "image/jpg", <span 4 "http_code": 200, <span 5 "header_size": 162, <span 6 "request_size": 181, <span 7 "filetime": -1, <span 8 "ssl_verify_result": 20, <span 9 "redirect_count": 0, <span 10 "total_time": 0.509, <span 11 "namelookup_time": 0, <span 12 "connect_time": 0.058, <span 13 "pretransfer_time": 0.343, <span 14 "size_upload": 0, <span 15 "size_download": 28497, <span 16 "speed_download": 55986, <span 17 "speed_upload": 0, <span 18 "download_content_length": 28497, <span 19 "upload_content_length": 0, <span 20 "starttransfer_time": 0.481, <span 21 "redirect_time": 0 <span 22 }
<span 下面是二种场景二维码的URL及生成的图片
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQFK8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL3kweXE0T3JscWY3UTltc3ZPMklvAAIEG9jUUgMECAcAAA%3d%3d
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA%3d%3d
四、下载二维码
二维码生成以后,可以在浏览器中右键另存为本地图片,但如果有很多二维码的时候,用程序来下载就比较方便。
我们使用CURL获取图片的所有信息,并将图片数据保存为一个文件。一个完整的下载代码如下:
<span $ticket = "gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA=="<span ; <span $url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".<span urlencode(<span $ticket<span ); <span $imageInfo = downloadImageFromWeiXin(<span $url<span ); <span $filename = "qrcode.jpg"<span ; <span $local_file = <span fopen(<span $filename, 'w'<span ); <span if (<span false !== <span $local_file<span ){ <span if (<span false !== <span fwrite(<span $local_file, <span $imageInfo["body"<span ])) { <span fclose(<span $local_file<span ); } } <span function downloadImageFromWeiXin(<span $url<span ) { <span $ch = curl_init(<span $url<span ); curl_setopt(<span $ch, CURLOPT_HEADER, 0<span ); curl_setopt(<span $ch, CURLOPT_NOBODY, 0); <span //<span 只取body头 curl_setopt(<span $ch, CURLOPT_SSL_VERIFYPEER, <span FALSE<span ); curl_setopt(<span $ch, CURLOPT_SSL_VERIFYHOST, <span FALSE<span ); curl_setopt(<span $ch, CURLOPT_RETURNTRANSFER, 1<span ); <span $package = curl_exec(<span $ch<span ); <span $httpinfo = curl_getinfo(<span $ch<span ); curl_close(<span $ch<span ); <span return <span array_merge(<span array('body' => <span $package), <span array('header' => <span $httpinfo<span )); }
<span 这样,在程序当前目录就会生成一个包含二维码的图片文件。
五、扫描带参数二维码事件
用户扫描带场景值二维码时,可能推送以下两种事件:
如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。
1. 用户未关注时,进行关注后的事件推送
<span <<span xml
<span <<span ToUserName<span <span gh_45072270791c<span ]]><span </<span ToUserName
<span <<span FromUserName<span <span o7Lp5t6n59DeX3U0C7Kric9qEx-Q<span ]]><span </<span FromUserName
<span <<span CreateTime1389684286<span </<span CreateTime
<span <<span MsgType<span <span event<span ]]><span </<span MsgType
<span <<span Event<span <span subscribe<span ]]><span </<span Event
<span <<span EventKey<span <span qrscene_1000<span ]]><span </<span EventKey
<span <<span Ticket<span <span ]]><span </<span Ticket
<span </<span xml
<span 参数说明
<span
2. 用户已关注时的事件推送
<span <<span xml
<span <<span ToUserName<span <span gh_45072270791c<span ]]><span </<span ToUserName
<span <<span FromUserName<span <span o7Lp5t6n59DeX3U0C7Kric9qEx-Q<span ]]><span </<span FromUserName
<span <<span CreateTime1389684184<span </<span CreateTime
<span <<span MsgType<span <span event<span ]]><span </<span MsgType
<span <<span Event<span <span SCAN<span ]]><span </<span Event
<span <<span EventKey<span <span 1000<span ]]><span </<span EventKey
<span <<span Ticket<span <span ]]><span </<span Ticket
<span </<span xml
<span 参数说明
<span
事件代码:
以下代码判定了扫描带参数二维码的两种情形
<span private function receiveEvent($object) { $contentStr = ""; switch ($object->Event) { case "subscribe": $contentStr = "欢迎关注 "; if (isset($object->EventKey)){ $contentStr = "关注二维码场景 ".$object->EventKey; } break; case "SCAN": $contentStr = "扫描 ".$object->EventKey; break; default: break; } $resultStr = $this->transmitText($object, $contentStr); return $resultStr; }
====================================================================
方倍工作室微信公众平台账号关注方法:
1. 微信通讯录-添加朋友-查找公众号-搜索“方倍工作室”
2. 微信通讯录-添加朋友-搜号码-输入“pondbaystudio”
3. 使用微信扫描下面的二维码
http://www.bkjia.com/PHPjc/738500.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/738500.htmlTechArticle本文介绍在微信公众平台上如何使用高级接口开发生成带参数二维码的功能。 一、场景二维码 为了满足用户渠道推广分析的需要,公众平...
内容总结
以上是互联网集市为您收集整理的微信公众平台开发(83)生成带参数二维码_PHP教程全部内容,希望文章能够帮你解决微信公众平台开发(83)生成带参数二维码_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。