微信二维码关注传递参数
以往关注后会发一条欢迎XXX的信息给我。
最近遇到一个如为我生成了一个二维码关注后会提示XXX你是谁谁谁推荐的客户
不仅获取了当前用户信息还有推荐人的信息。
所以就有了本文:
文档:
http://mp.weixin.qq.com/wiki/18/8a8bbd4f0abfa3e58d7f68ce7252c0d6.html
https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=向用户发送消息&form=发送客服消息接口%20/message/custom/send
http://mp.weixin.qq.com/wiki/18/c66a9f0b5aa952346e46dc39de20f672.html
http://mp.weixin.qq.com/wiki/14/d9be34fe03412c92517da10a5980e7ee.html
原理:在二维码Url上添加了参数,如用户md5id。
当扫成功后微信分析此url 获取到参数。并且回调给公众号上 基本配置里的url地址。
是以post 传递给我们服务器
参数是xml:
1348831860 1234567890123456
扫码参数:
123456789
| 参数 | 描述 |
|---|---|
| ToUserName | 开发者微信号 |
| FromUserName | 发送方帐号(一个OpenID) |
| CreateTime | 消息创建时间 (整型) |
| MsgType | 消息类型,event |
| Event | 事件类型,subscribe |
| EventKey | 事件KEY值,qrscene_为前缀,后面为二维码的参数值 |
| Ticket | 二维码的ticket,可用来换取二维码图片 |
用openid来获取当前用户信息,用ticket来得到谁推荐的。
最后响应请求返回发送消息数据
12345678
| 参数 | 是否必须 | 描述 |
|---|---|---|
| ToUserName | 是 | 接收方帐号(收到的OpenID) |
| FromUserName | 是 | 开发者微信号 |
| CreateTime | 是 | 消息创建时间 (整型) |
| MsgType | 是 | text |
| Content | 是 | 回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示) |
实现:
1、生成参数的关注二维码:
需要先请求获取到access_token
post 请求传递参数获取生成的二维码url 和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}}}
永久二维码请求说明
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": "123"}}}
参数说明
| 参数 | 说明 |
|---|---|
| expire_seconds | 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。 |
| action_name | 二维码类型,QR_SCENE为临时,QR_LIMIT_SCENE为永久,QR_LIMIT_STR_SCENE为永久的字符串参数值 |
| action_info | 二维码详细信息 |
| scene_id | 场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1--100000) |
| scene_str | 场景值ID(字符串形式的ID),字符串类型,长度限制为1到64,仅永久二维码支持此字段 |
返回说明
正确的Json返回结果:
{"ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm3sUw==","expire_seconds":60,"url":"http:\/\/weixin.qq.com\/q\/kZgfwMTm72WWPkovabbI"}
| 参数 | 说明 |
|---|---|
| ticket | 获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。 |
| expire_seconds | 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天)。 |
| url | 二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片 |
返回里得到ticket url
用记扫描关注:
二、得到openid ticket 并回复用户
对于单个用记直接send 输出xml就可以了。
node 获取二维码和ticket
var request=require('request');var http=require('http');
http.createServer(function(req,res){if(req.url=='/'){res.writeHead(200,{'Content-Type':'text/html'});//先获取tokenrequest('http://123.103.22.208/token?appId=wxf7a88566a83b58cf',function(err,res1,body){console.log(body);res.write(body);var token=body;//post 提交二维码上的参数值 得到ticket 和urlrequest.post({headers:{'content-type':'application/json','encoding':'utf-8'},url:'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='+token,//form 可以是一个对象也可以是字符串form:'{"expire_seconds":604800,"action_name":"QR_SCENE","action_info":{"scene":{"scene_id":123}}}'},function(err,res1,body){console.log(body)res.end(body);})/*https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=* 根据tocket 获取url二维码图片*/});}
}).listen(3010,function(){console.log('绑定成功')
}) 以上是源码,需要注意的是post到微信生成二维友的接口它只接收json字符串数据。所以form写成了Json字符串形式。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
