微信公众号"发送一次性订阅消息"接口的使用
来源:互联网 发布:python cuda编程 编辑:程序博客网 时间:2024/05/17 20:56
最近,微信新增了发送一次性订阅消息的接口,便使用php做了一个测试案例,希望可以给大家帮助。微信发送一次性订阅消息的规范 :https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1500374289_66bvB
发送一次性订阅消息有两个步骤:
第一步:需要用户同意授权,获取一次给用户推送一条订阅模板消息的机会
第二步:通过API推送订阅模板消息给到授权微信用户
接下来,我就附上我的代码,然后给大家讲解一下
/** * 获取授权发送一次性订阅接口接口 */ public function getSubscribemsg() { redirect("https://mp.weixin.qq.com/mp/subscribemsg?action=get_confirm&appid=wxee6a581d613debee&scene=1000&template_id=ZydnrAeuYY4kPcImQTe3J81TDLUsSioKBQYvAwG4OwI&redirect_url=http%3a%2f%2fsslkg.xnit.net%2findex.php%2fhome%2fCom%2fsubscribemsg&reserved=test#wechat_redirect"); } /** * 发送一次性订阅接口 */ public function subscribemsg() { $action = $_GET['action']; if ($action == "confirm") { $openid = $_GET['openid']; $template_id = $_GET['template_id']; $scene = $_GET['scene']; $access_token = $this->get_access_tokenjs(); $url = "https://api.weixin.qq.com/cgi-bin/message/template/subscribe?access_token={$access_token}"; $postdata = "{" . "\"touser\": \"" . $openid . "\"," . "\"template_id\":\"" . $template_id . "\"," . "\"url\": \"https://www.baidu.com\"," . "\"scene\": \"".$scene."\"," . "\"title\": \"t\"," . "\"data\": {" . "\"content\": {" . "\"value\": \"订阅消息测试\"," . "\"color\": \"blue\"" . "}" . "}" . "}"; $ch1 = curl_init(); $timeout = 3000; curl_setopt($ch1, CURLOPT_URL, $url); curl_setopt($ch1, CURLOPT_POST, 1); curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch1, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch1, CURLOPT_POSTFIELDS, $postdata); $result = curl_exec($ch1); curl_close($ch1); $result = json_decode($result, true); $errcode = $result['errmsg']; $this->error($errcode, "/Houses/houselist"); } }我们看到上面有两个方法,getSubscribemsg()这个方法主要是获取用户授权,获得一次发送一次性订阅消息的机会,它的主要功能就是转发到用户授权url,主要有几个参数
参数说明
是否必须说明action是直接填get_confirm即可appid是
公众号的唯一标识scene是重定向后会带上scene参数,开发者可以填0-10000的整形值,用来标识订阅场景值template_id是订阅消息模板ID,登录公众平台后台,在接口权限列表处可查看订阅模板IDredirect_url是授权后重定向的回调地址,请使用UrlEncode对链接进行处理。注:要求redirect_url的域名要跟登记的业务域名一致,且业务域名不能带路径。业务域名需登录公众号,在设置-公众号设置-功能设置里面对业务域名设置。reserved否用于保持请求和回调的状态,授权请后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验,开发者可以填写a-zA-Z0-9的参数值,最多128字节#wechat_redirect是无论直接打开还是做页面302重定向时,必须带此参数
redirect_url参数对应第二个方法的访问路径,这个路径需要经过urlencoding编码
用户同意或取消授权后会返回相关信息
如果用户点击同意或取消授权,页面将跳转至:
redirect_url/?openid=OPENID&template_id=TEMPLATE_ID&action=ACTION&scene=SCENE
参数说明
参数说明openid用户唯一标识,只在用户确认授权时才会带上template_id订阅消息模板IDaction用户点击动作,”confirm”代表用户确认授权,”cancel”代表用户取消授权scene订阅场景值reserved请求带入原样返回subscribemsg()方法就是根据返回数据去发送一次性订阅信息,我们在subscribemsg()方法里获取以上返回的数据,然后拼成json格式的数据,发送数据到下面的接口。
接口请求说明
http请求方式: post
https://api.weixin.qq.com/cgi-bin/message/template/subscribe?access_token=ACCESS_TOKEN
post数据示例
{
“touser”:”OPENID”,
“template_id”:”TEMPLATE_ID”,
“url”:”URL”,
“scene”:”SCENE”,
“title”:”TITLE”,
“data”:{
“content”:{
“value”:”VALUE”,
“color”:”COLOR”
}
}
}
参数说明
返回说明
在调用接口后,会返回JSON数据包。正常时的返回JSON数据包示例:
{
“errcode”:0,
“errmsg”:”ok”
}
1. errmsg 返回的信息是data format error hint,这个问题主要是数据格式不正确,在这里,我需要插一句,我在做这个的时候,发现微信接口说明里
说的”value为消息内容文本(200字以内),没有固定格式,可用\n换行“,我发现如果在value参数里写上\n,就会报错,所以,我不知道是还未提供,
还是哪里出了问题,如果各位知道了,希望告知一声。
2. errmsg 返回的信息是user refuse to accept the msg hint: [5aw330620ge21],一次性订阅接口并不是说会员订阅一次后就能不断的推送消息,
而是说会员订阅一次后你只能推送一条,如果想再次推送,需要再一次订阅,这点要先搞明白,如果你想尝试一次订阅多次推送。
我在测试过程中也遇到了这个问题,后面发现是因为我没有给scene赋值,所以,获取到返回数据之后,一定要把scene参数上传。希望可以给各位一些
帮助。如果各位发现其中有什么问题,希望可以指出,谢谢!
- 微信公众号"发送一次性订阅消息"接口的使用
- 微信公众平台新增“一次性订阅消息”接口
- 微信的一次性订阅消息
- 微信一次性订阅消息
- 微信一次性订阅消息
- PHP语言编写的微信一次性订阅消息
- 微信公众号发送模板消息接口
- 微信公众号开发-----微信模板消息接口-----发送模板消息
- 使用shell通过微信公众号发送模板消息
- 向微信公众号发送消息
- 微信公众号发送模板消息
- 微信公众号发送模板消息
- 微信公众号发送模板消息
- 微信公众平台模板消息发送接口文档
- 微信公众平台 发送消息-群发接口
- C#微信公众号/订阅号开发 接口源码
- 【微信公众平台开发】利用客服接口向用户发送网页授权的消息
- PHP微信公众平台接口(四)——消息的接收和发送
- MySQL性能监控工具-MONyog
- [BZOJ][KD-tree]2626: JZPFAR
- react native 获取控件本身的高度
- hdu5412:CRB and Queries (整体二分+树状数组)
- 推挽输出、开漏输出、复用开漏输出、复用推挽输出 以及上拉输入、下拉输入、浮空输入、模拟输入的区别
- 微信公众号"发送一次性订阅消息"接口的使用
- 缺失值的处理
- Eclipse vs. IDEA快捷键对比大全
- Mysql学习随笔
- matlab实用源代码
- 实验吧逆向工程之 1000 WP
- Python玩转数据分析学习笔记-04字典相关
- Swift_学习笔记_枚举和结构体
- 牛顿法和拟牛顿法