Example #1
0
        /// <summary>
        /// 发送图文消息(点击跳转到外链) 图文消息条数限制在8条以内,注意,如果图文数超过8,则将会无响应。
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="openId"></param>
        /// <param name="articles"></param>
        /// <returns></returns>
        public static WxJsonResult CustomSendNewsMsg(string accessToken, string openId,
                                                     List <Article> articles)
        {
            string url = string.Format("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}", accessToken);

            dynamic jsonData = new
            {
                touser  = openId,
                msgtype = "news",
                news    = new
                {
                    articles = articles.Select(a => new
                    {
                        title       = a.Title,
                        description = a.Description,
                        url         = a.Url,
                        picurl      = a.PicUrl
                    }).ToList()
                }
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #2
0
        /// <summary>
        /// 自定义菜单创建接口
        /// </summary>
        /// <param name="jsonData"></param>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public static WxJsonResult CreateMenu(List <Menu> menu, string accessToken)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                button = menu.Select(a => new
                {
                    type       = a.type,
                    name       = a.name,
                    key        = a.key,
                    url        = a.url,
                    media_id   = a.media_id,
                    sub_button = a.sub_button.Select(b => new
                    {
                        type     = b.type,
                        name     = b.name,
                        key      = b.key,
                        url      = b.url,
                        media_id = b.media_id
                    }).ToList()
                }).ToList()
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #3
0
        /// <summary>
        /// 设置客服帐号的头像
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="kf_account">完整客服账号,格式为:账号前缀@公众号微信号</param>
        /// <param name="fileName">文件完整路径</param>
        /// <returns></returns>
        public static WxJsonResult SetCustomAccountHeadImg(string accessToken, string kf_account, string fileName)
        {
            string       url      = string.Format("http://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token={0}&kf_account={1}", accessToken, kf_account);
            dynamic      result   = HttpService.WeChatPostForm(url, fileName);//post/form提交图片
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #4
0
        /// <summary>
        /// 删除当前使用的自定义菜单。另请注意,在个性化菜单时,调用此接口会删除默认菜单及全部个性化菜单。
        /// </summary>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public static WxJsonResult DeleteMenu(string accessToken)
        {
            string       url      = string.Format("https://api.weixin.qq.com/cgi-bin/menu/delete?access_token={0}", accessToken);
            string       result   = HttpService.Get(url);
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #5
0
        /// <summary>
        /// 删除永久素材
        /// 1、请谨慎操作本接口,因为它可以删除公众号在公众平台官网素材管理模块中新建的图文消息、语音、视频等素材(但需要先通过获取素材列表来获知素材的media_id)
        /// 2、临时素材无法通过本接口删除
        /// 3、调用该接口需https协议
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="media_id"></param>
        /// <returns></returns>
        public static WxJsonResult DeletePermanentMedia(string accessToken, string media_id)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/material/del_material?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                media_id = media_id
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(result);
        }
Example #6
0
        /// <summary>
        /// 删除个性化菜单
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="menuid">menuid为菜单id,可以通过自定义菜单查询接口获取。</param>
        /// <returns></returns>
        public static WxJsonResult DeleteConditionalMenu(string accessToken, string menuId)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                menuid = menuId
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
        /// <summary>
        /// 删除模板
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="template_id">	公众帐号下模板消息ID</param>
        /// <returns></returns>
        public static WxJsonResult DeleteTemplate(string accessToken, string template_id)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                template_id = template_id
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
        /// <summary>
        /// 删除群发【订阅号与服务号认证后均可用】
        /// 由于技术限制,群发只有在刚发出的半小时内可以删除,发出半小时之后将无法被删除。
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="msg_id"></param>
        /// <returns></returns>
        public static WxJsonResult DeleteGroupSend(string accessToken, string msg_id)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                msg_id = msg_id
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
        /// <summary>
        /// 设置所属行业
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="industry_id1">	公众号模板消息所属行业编号</param>
        /// <param name="industry_id2">	公众号模板消息所属行业编号</param>
        /// <returns></returns>
        public static WxJsonResult TemplateSetIndustry(string accessToken, int industry_id1, int industry_id2)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                industry_id1 = industry_id1,
                industry_id2 = industry_id2
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #10
0
        /// <summary>
        /// 批量为用户取消标签
        /// 标签功能目前支持公众号为用户打上最多三个标签。
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="openid_list">粉丝列表</param>
        /// <param name="tagid"></param>
        /// <returns></returns>
        public static WxJsonResult BatchUnTagging(string accessToken, string[] openid_list, string tagid)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/tags/members/batchuntagging?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                openid_list = openid_list.ToList(),
                tagid       = tagid
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #11
0
        /// <summary>
        /// 设置用户备注名
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="openid"></param>
        /// <param name="remark">设置备注名</param>
        /// <returns></returns>
        public static WxJsonResult RemarkUser(string accessToken, string openid, string remark)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                openid = openid,
                remark = remark
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #12
0
        /// <summary>
        /// 增改删客服账号
        /// </summary>
        /// <param name="url"></param>
        /// <param name="kf_account">完整客服账号,格式为:账号前缀@公众号微信号</param>
        /// <param name="nickname">客服昵称,最长6个汉字或12个英文字符</param>
        /// <param name="password">客服账号登录密码,格式为密码明文的32位加密MD5值。该密码仅用于在公众平台官网的多客服功能中使用,若不使用多客服功能,则不必设置密码</param>
        /// <returns></returns>
        private static WxJsonResult CustomAccountHelper(string url, string kf_account, string nickname, string password)
        {
            dynamic jsonData = new
            {
                kf_account = kf_account,
                nickname   = nickname,
                password   = password
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #13
0
        /// <summary>
        /// 编辑标签
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="id"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static WxJsonResult EditUserTag(string accessToken, string id, string name)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/tags/update?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                tag = new
                {
                    id   = id,
                    name = name
                }
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #14
0
        /// <summary>
        /// 发送语音消息
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="openId"></param>
        /// <param name="media_id">发送的图片/语音/视频/图文消息(点击跳转到图文消息页)的媒体ID</param>
        /// <returns></returns>
        public static WxJsonResult CustomSendVoiceMsg(string accessToken, string openId, string media_id)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                touser  = openId,
                msgtype = "voice",
                voice   = new
                {
                    media_id = media_id
                }
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #15
0
        /// <summary>
        /// 配置设备与门店的关联关系
        /// 修改设备关联的门店ID。可用设备ID或完整的UUID、Major、Minor指定设备,二者选其一。
        /// </summary>
        /// <param name="deviceinfo"></param>
        /// <param name="poi_id"></param>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public static WxJsonResult BindLocation(ShakeDeviceInfo deviceinfo, int poi_id, string accessToken)
        {
            string  url      = string.Format("https://api.weixin.qq.com/shakearound/device/update?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                device_identifier = new
                {
                    device_id = deviceinfo.device_id,
                    uuid      = deviceinfo.uuid,
                    major     = deviceinfo.major,
                    minor     = deviceinfo.minor,
                },
                poi_id = poi_id
            };
            string       result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #16
0
        /// <summary>
        /// 修改永久图文素材
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="a">文章</param>
        /// <param name="media_id">要修改的图文消息的id</param>
        /// <param name="index">要更新的文章在图文消息中的位置(多图文消息时,此字段才有意义),第一篇为0</param>
        /// <returns></returns>
        public static WxJsonResult EditNews(string accessToken, UploadArticle a, string media_id, int index)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                media_id = media_id,
                index    = index,
                articles = new{
                    thumb_media_id     = a.thumb_media_id,
                    author             = a.author,
                    title              = a.title,
                    content_source_url = a.content_source_url,
                    content            = a.content,
                    digest             = a.digest,
                    show_cover_pic     = a.show_cover_pic
                }
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }
Example #17
0
        public static T GetJsonResultToEntity <T>(string result)
        {
            JavaScriptSerializer js = new JavaScriptSerializer();

            if (result.Contains("errcode"))
            {
                //可能发生错误
                WxJsonResult errorResult = js.Deserialize <WxJsonResult>(result);
                if (errorResult.errcode != ReturnCode.请求成功)
                {
                    //发生错误
                    //Log.Debug("GetJsonResultToEntity",
                    //    string.Format("微信Post请求发生错误!错误代码:{0},说明:{1}",
                    //    (int)errorResult.errcode,
                    //    errorResult.errmsg));
                }
            }

            T entityResult = js.Deserialize <T>(result);

            return(entityResult);
        }
Example #18
0
        /// <summary>
        /// 发送音乐消息
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="openId"></param>
        /// <param name="musicurl">	音乐链接</param>
        /// <param name="hqmusicurl">高品质音乐链接,wifi环境优先使用该链接播放音乐</param>
        /// <param name="thumb_media_id">缩略图的媒体ID</param>
        /// <param name="title">图文消息/视频消息/音乐消息的标题</param>
        /// <param name="description">图文消息/视频消息/音乐消息的描述</param>
        /// <returns></returns>
        public static WxJsonResult CustomSendVideoMsg(string accessToken, string openId,
                                                      string musicurl, string hqmusicurl, string thumb_media_id, string title, string description)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}", accessToken);
            dynamic jsonData = new
            {
                touser  = openId,
                msgtype = "music",
                music   = new
                {
                    musicurl       = musicurl,
                    hqmusicurl     = hqmusicurl,
                    thumb_media_id = thumb_media_id,
                    title          = title,
                    description    = description
                }
            };
            dynamic      result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            WxJsonResult wxResult = EntityHelper.GetJsonResultToEntity <WxJsonResult>(result);

            return(wxResult);
        }