博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明
阅读量:6670 次
发布时间:2019-06-25

本文共 16070 字,大约阅读时间需要 53 分钟。

原文:

    这里所说的高级接口是指面向通过认证的服务号开通的高级功能。

    高级功能大致可以分类为:

  • 用户接口
  • 分组接口
  • 客服接口(有别于之前介绍的)
  • 群发接口
  • 多媒体接口
  • 二维码接口
  • 模板消息接口(不是所有账号都可开通)
  • OAuth2.0(相对比较复杂,后面会有专门介绍)

  以上所有的接口都包含在Senparc.Weixin.MP.AdvancedAPIs命名空间下。

一些共同的操作

  几乎所有的高级接口都需要用到AccessToken来通讯(注意,下面如果没有特殊说明的接口都需要这个AccessToken,但并非所有),因此多数会有一个AccessToken参数传入,有关AccessToken获取和操作的方式见

用户接口

  源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/User

  源代码中相关方法如下:

namespace Senparc.Weixin.MP.AdvancedAPIs{    //接口详见:http://mp.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF        ///     /// 用户接口    ///     public static class User    {        ///         /// 获取用户信息        ///         /// 调用接口凭证        /// 普通用户的标识,对当前公众号唯一        /// 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语        /// 
public static UserInfoJson Info(string accessToken, string openId, Language lang = Language.zh_CN) { string url = string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang={2}", accessToken, openId, lang.ToString()); return HttpUtility.Get.GetJson
(url); //错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误): //{"errcode":40013,"errmsg":"invalid appid"} } ///
/// 获取关注着OpenId信息 /// ///
///
///
public static OpenIdResultJson Get(string accessToken, string nextOpenId) { string url = string.Format("https://api.weixin.qq.com/cgi-bin/user/get?access_token={0}", accessToken); if (!string.IsNullOrEmpty(nextOpenId)) { url += "&next_openid=" + nextOpenId; } return HttpUtility.Get.GetJson
(url); } }}

分组接口

  源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/Groups

  源代码中相关方法如下:

namespace Senparc.Weixin.MP.AdvancedAPIs{    ///     /// 用户组接口    ///     public static class Groups    {        ///         /// 创建分组        ///         /// 
public static CreateGroupResult Create(string accessToken, string name) { var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token={0}"; var data = new { group = new { name = name } }; return CommonJsonSend.Send
(accessToken, urlFormat, data); } ///
/// 发送文本信息 /// ///
///
public static GroupsJson Get(string accessToken) { var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token={0}"; var url = string.Format(urlFormat, accessToken); return HttpUtility.Get.GetJson
(url); } ///
/// 获取用户分组 /// ///
///
///
public static GetGroupIdResult GetId(string accessToken, string openId) { var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/getid?access_token={0}"; var data = new { openid = openId }; return CommonJsonSend.Send
(accessToken, urlFormat, data); } ///
/// 创建分组 /// ///
///
///
分组名字(30个字符以内) ///
public static WxJsonResult Update(string accessToken, int id, string name) { var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token={0}"; var data = new { group = new { id = id, name = name } }; return CommonJsonSend.Send(accessToken, urlFormat, data); } ///
/// 移动用户分组 /// ///
///
///
///
public static WxJsonResult MemberUpdate(string accessToken, string openId, int toGroupId) { var urlFormat = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token={0}"; var data = new { openid = openId, to_groupid = toGroupId }; return CommonJsonSend.Send(accessToken, urlFormat, data); } }}

客服接口

  说明一下,这里的客服接口和之前的“多客服”是有差别的,之前介绍的多客服是把用户对话状态切换到多客服客,消息发送到专门的多客服户端,这个对话是由用户主动发起的。而这里的“客服”实际上是指在任意时间,主动推送消息给指定过的用户(用户在48小时内有过互动),对话不需要由用户主动发起。

  源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/Custom

  源代码中相关方法如下:

namespace Senparc.Weixin.MP.AdvancedAPIs{    ///     /// 客服接口    ///     public static class Custom    {        private const string URL_FORMAT = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}";        ///         /// 发送文本信息        ///         ///         ///         ///         /// 
public static WxJsonResult SendText(string accessToken, string openId, string content) { var data = new { touser = openId, msgtype = "text", text = new { content = content } }; return CommonJsonSend.Send(accessToken, URL_FORMAT, data); } /// /// 发送图片消息 /// /// /// /// ///
public static WxJsonResult SendImage(string accessToken, string openId, string mediaId) { var data = new { touser = openId, msgtype = "image", image = new { media_id = mediaId } }; return CommonJsonSend.Send(accessToken, URL_FORMAT, data); } /// /// 发送语音消息 /// /// /// /// ///
public static WxJsonResult SendVoice(string accessToken, string openId, string mediaId) { var data = new { touser = openId, msgtype = "voice", voice = new { media_id = mediaId } }; return CommonJsonSend.Send(accessToken, URL_FORMAT, data); } /// /// 发送视频消息 /// /// /// /// /// ///
public static WxJsonResult SendVideo(string accessToken, string openId, string mediaId, string thumbMediaId) { var data = new { touser = openId, msgtype = "video", video = new { media_id = mediaId, thumb_media_id = thumbMediaId } }; return CommonJsonSend.Send(accessToken, URL_FORMAT, data); } /// /// 发送音乐消息 /// /// /// /// 音乐标题(非必须) /// 音乐描述(非必须) /// 音乐链接 /// 高品质音乐链接,wifi环境优先使用该链接播放音乐 /// 视频缩略图的媒体ID ///
public static WxJsonResult SendMusic(string accessToken, string openId, string title, string description, string musicUrl, string hqMusicUrl, string thumbMediaId) { var data = new { touser = openId, msgtype = "music", music = new { title = title, description = description, musicurl = musicUrl, hqmusicurl = hqMusicUrl, thumb_media_id = thumbMediaId } }; return CommonJsonSend.Send(accessToken, URL_FORMAT, data); } /// /// 发送图文消息 /// /// /// /// 音乐标题(非必须) /// 音乐描述(非必须) /// 音乐链接 /// 高品质音乐链接,wifi环境优先使用该链接播放音乐 /// 视频缩略图的媒体ID ///
public static WxJsonResult SendNews(string accessToken, string openId, List
articles) { var data = new { touser = openId, msgtype = "news", news = new { articles = articles.Select(z => new { title = z.Title, description = z.Description, url = z.Url, picurl = z.PicUrl//图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80 }).ToList() } }; return CommonJsonSend.Send(accessToken, URL_FORMAT, data); } }}

 

群发接口

  这里的群发效果和登录微信后台群发是一样的。

  源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/GroupMessage

  源代码中相关方法如下:

namespace Senparc.Weixin.MP.AdvancedAPIs{    ///     /// 高级群发接口    ///     public static class GroupMessage    {        ///         /// 根据分组进行群发        ///         /// 请注意:        /// 1、该接口暂时仅提供给已微信认证的服务号        /// 2、虽然开发者使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条,请小心测试        /// 3、无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败。        ///         ///         ///         /// 群发到的分组的group_id        /// 用于群发的消息的media_id        /// 
public static SendResult SendGroupMessageByGroupId(string accessToken, string groupId, string mediaId) { const string urlFormat = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token={0}"; var data = new { filter = new { group_id = groupId }, mpnews = new { media_id = mediaId }, msgtype = "mpnews" }; return CommonJsonSend.Send
(accessToken, urlFormat, data); } ///
/// 根据OpenId进行群发 /// ///
///
用于群发的消息的media_id ///
openId字符串数组 ///
public static SendResult SendGroupMessageByOpenId(string accessToken, string mediaId, params string[] openIds) { const string urlFormat = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token={0}"; var data = new { touser = openIds, mpnews = new { media_id = mediaId }, msgtype = "mpnews" }; return CommonJsonSend.Send
(accessToken, urlFormat, data); } ///
/// 删除群发消息 /// ///
///
发送出去的消息ID ///
public static WxJsonResult DeleteSendMessage(string accessToken, string mediaId) { //官方API地址为https://api.weixin.qq.com//cgi-bin/message/mass/delete?access_token={0},应该是多了一个/ const string urlFormat = "https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token={0}"; var data = new { msgid = mediaId }; return CommonJsonSend.Send
(accessToken, urlFormat, data); } }}

 

多媒体接口

  多媒体接口用于上传图片、语音、图文消息等多媒体信息,一般这些信息都可以用于客服接口或群发。

  源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/Media

  源代码中相关方法如下:

namespace Senparc.Weixin.MP.AdvancedAPIs{    //接口详见:http://mp.weixin.qq.com/wiki/index.php?title=%E4%B8%8A%E4%BC%A0%E4%B8%8B%E8%BD%BD%E5%A4%9A%E5%AA%92%E4%BD%93%E6%96%87%E4%BB%B6        ///     /// 多媒体文件接口    ///     public static class Media    {        ///         /// 上传媒体文件        ///         ///         ///         ///         /// 
public static UploadResultJson Upload(string accessToken, UploadMediaFileType type, string file) { var url = string.Format("http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", accessToken, type.ToString()); var fileDictionary = new Dictionary
(); fileDictionary["media"] = file; return HttpUtility.Post.PostFileGetJson
(url, null, fileDictionary, null); } ///
/// 下载媒体文件 /// ///
///
///
public static void Get(string accessToken, string mediaId, Stream stream) { var url = string.Format("http://file.api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}", accessToken, mediaId); HttpUtility.Get.Download(url, stream); } ///
/// 上传图文消息素材 /// ///
Token ///
图文消息组 ///
public static UploadMediaFileResult UploadNews(string accessToken, params NewsModel[] news) { const string urlFormat = "https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token={0}"; var data = new { articles = news }; return CommonJsonSend.Send
(accessToken, urlFormat, data); } }}

 

二维码接口

  使用二维码接口可以方便地创建和验证二维码。所创建的二维码用于让用户关注或识别扫描的场景。

  源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/QrCode

  源代码中相关方法如下:

namespace Senparc.Weixin.MP.AdvancedAPIs{    //API:http://mp.weixin.qq.com/wiki/index.php?title=%E7%94%9F%E6%88%90%E5%B8%A6%E5%8F%82%E6%95%B0%E7%9A%84%E4%BA%8C%E7%BB%B4%E7%A0%81    ///     /// 二维码接口    ///     public static class QrCode    {        ///         /// 创建二维码        ///         /// 该二维码有效时间,以秒为单位。 最大不超过1800。0时为永久二维码        /// 场景值ID,临时二维码时为32位整型,永久二维码时最大值为1000        /// 
public static CreateQrCodeResult Create(string accessToken, int expireSeconds, int sceneId) { var urlFormat = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}"; object data = null; if (expireSeconds > 0) { data = new { expire_seconds = expireSeconds, action_name = "QR_SCENE", action_info = new { scene = new { scene_id = sceneId } } }; } else { data = new { action_name = "QR_LIMIT_SCENE", action_info = new { scene = new { scene_id = sceneId } } }; } return CommonJsonSend.Send
(accessToken, urlFormat, data); } ///
/// 获取二维码(不需要AccessToken) /// 错误情况下(如ticket非法)返回HTTP错误码404。 /// ///
///
public static void ShowQrCode(string ticket, Stream stream) { var urlFormat = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={0}"; HttpUtility.Get.Download(string.Format(urlFormat, ticket), stream); } }}

模板消息接口

  模板消息类似于短信通知,它遵循一定的模板格式(和图文信息等不一样),不是每个通过验证的服务号都可以获取。

  源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/TemplateMessage

  源代码中相关方法如下:

namespace Senparc.Weixin.MP.AdvancedAPIs{    ///     /// 模板消息接口    ///     public static class Template    {        public static WxJsonResult SendTemplateMessage
(string accessToken, string openId, string templateId, string topcolor, T data) { const string urlFormat = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}"; var msgData = new TempleteModel() { template_id = templateId, topcolor = topcolor, touser = openId, data = data }; return CommonJsonSend.Send
(accessToken, urlFormat, msgData); } }}

OAuth2.0接口

  OAuth接口用于安全验证使用微信内嵌浏览器访问的用户的身份(例如获取OpenId)

  源文件文件夹:Senparc.Weixin.MP/AdvancedAPIs/OAuth

  相比其他接口OAuth2.0略微复杂,相关内容将在下一篇专门进行介绍:《》

 

  系列教程索引:

 

转载地址:http://iulxo.baihongyu.com/

你可能感兴趣的文章
【Java】数组升序和降序
查看>>
Implement Trie (Prefix Tree)
查看>>
【佛法】由佛法观爱情与人生——一位居士对爱情、婚姻和家庭的体悟
查看>>
加速数组操作(Array)
查看>>
收集计算机分区信息,去除列中的重复值(Excel)(空行)
查看>>
Python抓取zabbix性能监控图
查看>>
JDBC进行数据库的--增--删--改--案例----纯代码
查看>>
纪录一个table元素里面的tr th td
查看>>
CF1076C Meme Problem 数学
查看>>
iml文件
查看>>
Python编码/文件读取/多线程
查看>>
自己写了一个弹出菜单,有间隙也可以
查看>>
数据的处理和特征工程
查看>>
DBMS_SCHEDULER CHAIN用法
查看>>
html之表格列标题<th>的使用...
查看>>
JS实现AOP拦截方法调用
查看>>
文件上传
查看>>
移位操作发现的悲剧
查看>>
win10 nodejs指定ionic版本安装(npm方式)
查看>>
JumpServer跳板机
查看>>