微信公众平台开发(83) 生成带参数二维码

摘要:
本文介绍了如何在微信公众平台上使用高级界面开发带有参数的二维码生成功能。这两个二维码适用于账户绑定、用户源统计等场景。

本文介绍在微信公众平台上如何使用高级接口开发生成带参数二维码的功能。

一、场景二维码

为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。

目前有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数据格式

{
    "expire_seconds": 1800,
    "action_name": "QR_SCENE",
    "action_info": {
        "scene": {
            "scene_id": 100000
        }
    }
}

返回格式:

{
    "ticket": "gQFK8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL3kweXE0T3JscWY3UTltc3ZPMklvAAIEG9jUUgMECAcAAA==",
    "expire_seconds": 1800
}

 

永久二维码请求说明

http请求URL

https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

POST数据格式

{
    "action_name": "QR_LIMIT_SCENE",
    "action_info": {
        "scene": {
            "scene_id": 1000
        }
    }
}

返回格式

{
    "ticket": "gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA=="
}

提交数据参数说明:

微信公众平台开发(83) 生成带参数二维码第1张

返回结果参数说明

微信公众平台开发(83) 生成带参数二维码第2张

程序实现

$access_token = " xDx0pD_ZvXkHM3oeu5oGjDt1_9HxlA-9g0vtR6MZ-v4r7MpvZYC4ee4OxN97Lr4irkPKE94tzBUhpZG_OvqAC3D3XaWJIGIn0eeIZnfaofO1C3LNzGphd_rEv3pIimsW9lO-4FOw6D44T3sNsQ5yXQ";
 
//临时
$qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 10000}}}';
//永久
$qrcode = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 1000}}}';
 
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=$access_token";
$result = https_post($url,$qrcode);
$jsoninfo = json_decode($result, true);
$ticket = $jsoninfo["ticket"];
 
function https_post($url, $data = null){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)){
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}
三、通过ticket换取二维码

获取二维码ticket后,开发者可用ticket换取二维码图片。无须登录态即可调用。

HTTPS GET请求说明(TICKET必需UrlEncode)

https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET

ticket正确情况下,http 返回码是200,是一张图片,可以直接展示或者下载。

HTTP头示例如下:

{
    "url": "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA%3D%3D",
    "content_type": "image/jpg",
    "http_code": 200,
    "header_size": 162,
    "request_size": 181,
    "filetime": -1,
    "ssl_verify_result": 20,
    "redirect_count": 0,
    "total_time": 0.509,
    "namelookup_time": 0,
    "connect_time": 0.058,
    "pretransfer_time": 0.343,
    "size_upload": 0,
    "size_download": 28497,
    "speed_download": 55986,
    "speed_upload": 0,
    "download_content_length": 28497,
    "upload_content_length": 0,
    "starttransfer_time": 0.481,
    "redirect_time": 0
}

下面是二种场景二维码的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

微信公众平台开发(83) 生成带参数二维码第3张

免责声明:文章转载自《微信公众平台开发(83) 生成带参数二维码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jquery聚焦文本框Socket编程 (一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

寻找做h5的网站? 泡泡H5解决朋友圈h5怎么制作难题!

相信大家都在微信朋友圈里看到过一些宣传招新活动之类的链接,大家点进去会发现每一页内容都是动态的,文字素材图片的出现都有各自的动画,通过手指滑动切换页面。 类似这样的H5,其实一个人就可以完成制作了,并不需要懂代码,懂设计,只要你不是一个一点美感都没有的人,那么你都可以一个人在线完成制作h5.。 (  邀请函h5展示) ( 招聘h5展示 ) 这种以微信...

idea双击打不开没反应的解决办法

   原文链接:https://www.cnblogs.com/jiazibo/p/14618483.html 网上找了很多方法最后才找到一个可以解决的,如果遇到的问题与我这个相同可以用这个方法解决 1.打开idea安装根目录bin下,选中idea.bat右键编辑,或者使用txt打开 2.在idea.bat最后一行添加 pause  如图   3....

Jenkins:Linux下安装部署步骤

【转载:https://www.cnblogs.com/code-juggler/p/9177805.html】 1. 准备环境   首先,需要jdk是必须要安装好的。本人使用的linux是centos,直接使用yum安装。   先找到合适的版本://至少1.8 yum search java | grep jdk   然后运行安装: yum instal...

熵池 在计算机科学与金融学中的应用

海绵函数_百度百科https://baike.baidu.com/item/海绵函数/8262879 内核熵池_百度百科https://baike.baidu.com/item/内核熵池/1731396 百度百科_全球最大中文百科全书https://baike.baidu.com/search/none?word=熵池&pn=0&rn=10...

前端常用插件网站

动画库 https://daneden.github.io/animate.css/ (可查看样式) https://cdn.jsdelivr.net/npm/animate.css@3.5.1 (动画库代码) swiper官网 ---- 轮播图 https://www.swiper.com.cn/ echarts ---- 统计图 https://ech...

Google Drive 里的文件下载的方法

Google Drive 里并不提供创建直接下载链接的选项,但是可以通过小小的更改链接形式就能把分享的内容保存到本地。例如,一份通过 Google Drive 分享的文件链接形式为: https://drive.google.com/file/d/FILE_ID/edit?usp=sharing 如果将其改为下面修改版的形式,然后再通过浏览器打开,就会直...