微信群发接口开发小结



        高级群发接口比较简单 (但需要认证) .分别可以发送给全部粉丝,或者发送给特定标签下的用户,或者发送给特定用户(根据OpenID列表群发).消息的类型可以是: 图文消息,文本消息,语音消息,图片消息,视频消息,卡券消息.需要注意的是除了文本消息能够直接发送外,语音,图片,视频消息需要通过基础支持中的上传下载多媒体文件来得到获得media_id,而图文消息需要先制作出图文消息内容体(获得特殊的media_id).

        下面,通过图文消息来讲解群发的api(其他消息类型大家可以参见官方文档).

1).上传图文消息内的图片获取URL.

这玩意我调用了,但发现取得的url,在后面的步骤中似乎没用着.反而是回复消息时,如果回复的是图文消息,在xml结构体里用着了.

我上传了2张图片,代码如下:

[php]   view plain  copy
  1. function upload_pic() { //上传图文消息内的图片获取URL  
  2.     $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  
  3.     $url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=$ACCESS_TOKEN";  
  4.     $result = curl_http_upload($url"meida""C:\Users\Administrator\Desktop\a.jpg");  
  5.     $json = json_decode($result);  
  6.     echo $json->url;  
  7. }  

得到的返回值如下:

[javascript]   view plain  copy
  1. {"url""http://mmbiz.qpic.cn/mmbiz/q9jYbRzAGeXKnahdcPUFjP6reSgVibIcKJTXs5tOibzdkiahHv32LLOuBauyzbibDYuR07VNcQVCYHVVf7Sd0tvM7w/0"}  
  2. {"url""http://mmbiz.qpic.cn/mmbiz/q9jYbRzAGeXKnahdcPUFjP6reSgVibIcKs52hkgzsmicAePy5BuqwdBfCzzL9MPEibjZ4vOEE4UP1HlOpIicibLobgA/0"}  


2).上传图文消息素材
代码如下:

[php]   view plain  copy
  1. function upload_ctx() { //上传图文消息素材  
  2.     $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  
  3.     $url = "https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=$ACCESS_TOKEN";  
  4.     $data = '  
  5. {  
  6.     "articles": [{  
  7.         "thumb_media_id""nJdLOlZ1lPluJCph3OlnNEadys0CI43Zzwz75nrp7tcYw6JQIdKCMPr6z0GlDyBs",  
  8.         "author""张仕铨",  
  9.         "title""今天真快乐!",  
  10.         "content_source_url""www.qq.com",  
  11.         "content""遇上了你,是我这辈子最大的幸福,我一定会对你很好很好!",  
  12.         "digest""首show",  
  13.         "show_cover_pic": 1  
  14.     }, {  
  15.         "thumb_media_id""g9QhTm0S6plcWiGqKSvBs5yb1NgKtT1DFGqRKffnFcgVgrOyiDaKyDmVDaX7GsOA",  
  16.         "author""张弄影",  
  17.         "title""洗啊洗啊洗白白!",  
  18.         "content_source_url""www.163.com",  
  19.         "content""洗洗睡吧,别多想了!",  
  20.         "digest""发来看看",  
  21.         "show_cover_pic": 0  
  22.     }]  
  23. }  
  24.     ';  
  25.     $result = curl_http_post($url$data);  
  26.     echo $result;  
  27. }  

为了偷懒,这里的thumb_media_id我直接是发送图片消息,然后公众号服务器接收消息处取来滴.

得到的返回值如下:

[javascript]   view plain  copy
  1. {"type":"news","media_id":"FIyDgwyCxVb4-FHyDJgnGX44BLWE7tGsvyiOA_xYpf9oRtZGjddqukBgZeFq6a8H","created_at":1468469203}  



3).预览接口
微信提供在发送前,将该消息发送给指定用户,在手机端查看消息的样式和排版代码的功能.如下:

[php]   view plain  copy
  1. function preview() { //预览接口  
  2.     $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  
  3.     $url = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=$ACCESS_TOKEN";  
  4.     $data = '  
  5. {  
  6.     "touser""oe5SXv71irmrQ0TH-JxA-z_hmYLE",  
  7.     "mpnews": {"media_id""FIyDgwyCxVb4-FHyDJgnGX44BLWE7tGsvyiOA_xYpf9oRtZGjddqukBgZeFq6a8H"},  
  8.     "msgtype""mpnews"  
  9. }  
  10. ';  
  11.     $result = curl_http_post($url$data);  
  12.     echo $result;  
  13. }  

得到的返回值如下:

[javascript]   view plain  copy
  1. {"errcode":0,"errmsg":"preview success"}  
界面效果如下:

微信群发接口开发小结_第1张图片

分别点击2个图文之后,会看到以下内容:

微信群发接口开发小结_第2张图片和这个微信群发接口开发小结_第3张图片

注意1个界面显示图片,1个界面不显示.点击阅读原文,则会进入2).上传图文消息素材设置的站点.




4).根据OpenID列表群发(也可以是根据标签进行群发)
代码如下:

[php]   view plain  copy
  1. function send_openid() { //根据OpenID列表群发  
  2.     $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  
  3.     $url = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=$ACCESS_TOKEN";  
  4.     $data = '  
  5. {  
  6.     "touser": ["oe5SXv71irmrQ0TH-JxA-z_hmYLE""oe5SXv45Fq5lcB5jlxdBs6QWPNj8"],  
  7.     "mpnews": {"media_id""FIyDgwyCxVb4-FHyDJgnGX44BLWE7tGsvyiOA_xYpf9oRtZGjddqukBgZeFq6a8H"},  
  8.     "msgtype""mpnews"  
  9. }  
  10. ';  
  11.     $result = curl_http_post($url$data);  
  12.     echo $result;  
  13. }  


得到的返回值如下:

[javascript]   view plain  copy
  1. {"errcode":0,"errmsg":"send job submission success","msg_id":3147483651,"msg_data_id":2247483654}  
群发的效果和预览的效果一样.因为在 2).上传图文消息素材 调用时show_cover_pic的值分别不同.




5).查询群发消息发送状态
代码如下:

[php]   view plain  copy
  1. function status() { //查询群发消息发送状态  
  2.     $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  
  3.     $url = "https://api.weixin.qq.com/cgi-bin/message/mass/get?access_token=$ACCESS_TOKEN";  
  4.     $data = '{"msg_id": "3147483651"}';  
  5.     $result = curl_http_post($url$data);  
  6.     echo $result;  
  7. }  
得到的返回值如下:
[javascript]   view plain  copy
  1. {"msg_id":3147483651,"msg_status":"SEND_SUCCESS"}  



6).删除群发
代码如下:

[php]   view plain  copy
  1. function delete() { //删除群发  
  2.     $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  
  3.     $url = "https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token=$ACCESS_TOKEN";  
  4.     $data = '{"msg_id": "3147483651"}';  
  5.     $result = curl_http_post($url$data);  
  6.     echo $result;  
  7. }  

得到的返回值如下:

[javascript]   view plain  copy
  1. {"errcode":0,"errmsg":"ok"}  
此时,再点击相应的图文,则提示该消息已经被删除啦!!如下:

微信群发接口开发小结_第4张图片



7).事件推送群发结果

        官方文档上说:"由于群发任务提交后,群发任务可能在一定时间后才完成,因此,群发接口调用时,仅会给出群发任务是否提交成功的提示,若群发任务提交成功,则在群发任务结束时,会向开发者在公众平台填写的开发者URL(callback URL)推送事件。"我的结果如下:

[html]   view plain  copy
  1. <xml>  
  2.     <ToUserName>ToUserName>  
  3.     <FromUserName>FromUserName>  
  4.     <CreateTime>1468469346CreateTime>  
  5.     <MsgType>MsgType>  
  6.     <Event>Event>  
  7.     <MsgID>3147483651MsgID>  
  8.     <Status>Status>  
  9.     <TotalCount>2TotalCount>  
  10.     <FilterCount>2FilterCount>  
  11.     <SentCount>2SentCount>  
  12.     <ErrorCount>0ErrorCount>  
  13. xml>        
    博客: http://blog.csdn.net/szuzsq

你可能感兴趣的:(微信开发)