Пример #1
0
        /// <summary>
        /// 获取微信分组
        /// </summary>
        public List <M_WxGroupInfo> GetWxGroup()
        {
            string    result = APIHelper.GetWebResult(apiurl + "groups/get?access_token=" + AccessToken);
            M_WxGroup model  = JsonConvert.DeserializeObject <M_WxGroup>(result);

            return(model.groups);
        }
Пример #2
0
        //必须要服务号才可调用
        //https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433542
        /// <summary>
        /// 生成永久的带参二维码(使用数字和字符参数要不同)
        /// </summary>
        /// <param name="param">英文或数字,不要含特殊字符</param>
        /// <returns>{"ticket":"base64字符串","expire_seconds":60,"url":"http:\/\/weixin.qq.com\/q\/kZgfwMTm72WWPkovabbI"}</returns>
        public string QRCode_Static(string param)
        {
            //{"scene": {"scene_id": 123}}//目前参数只支持1--100000
            string data = "{\"action_name\": \"QR_LIMIT_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": \"" + param + "\"}}}";

            return(APIHelper.GetWebResult(apiurl + "message/qrcode/create?access_token=" + AccessToken, "POST", data));
        }
Пример #3
0
        /// <summary>
        /// 获取关注者列表
        /// </summary>
        public List <string> GetUserList()
        {
            string     result    = APIHelper.GetWebResult(apiurl + "user/get?access_token=" + AccessToken + "&next_openid=");
            M_WiKiUser usermodel = JsonConvert.DeserializeObject <M_WiKiUser>(result);

            return(usermodel.data.openid);
        }
Пример #4
0
        /// <summary>
        /// 获得模板ID
        /// </summary>
        /// <param name="template_id_short"></param>
        /// <returns> {"errcode":0,"errmsg":"ok","template_id":"模板ID"}</returns>
        //public string AddTlp(string template_id_short)
        //{
        //    return APIHelper.GetWebResult(apiurl + "template/api_add_template?access_token=" + AccessToken, "POST", "{\"template_id_short\":\"" + template_id_short + "\"}");
        //}
        /// <summary>
        /// 获取已添加至帐号下所有模板列表
        /// </summary>
        /// <returns></returns>
        public List <M_WXTlp> Tlp_GetAllPteTlp()
        {
            //template_list
            string  result = APIHelper.GetWebResult(apiurl + "template/get_all_private_template?access_token=" + AccessToken);
            JObject obj    = JsonConvert.DeserializeObject <JObject>(result);

            return(JsonConvert.DeserializeObject <List <M_WXTlp> >(obj["template_list"].ToString()));
        }
Пример #5
0
        //图片 WXAllMsg model = new WXAllMsg() { filter = new WXFiter() { group_id = gid, is_to_all = true }, msgtype = "image", image = new WXMsgMedia() { media_id = obj["media_id"].ToString() } };
        //图文 WXAllMsg model = new WXAllMsg() { filter = new WXFiter() { group_id = gid, is_to_all = true }, msgtype = "mpnews", mpnews = new WXMsgMedia() { media_id = "" } };
        public string SendAll(M_WXAllMsg model, bool flag = true)
        {
            string result = APIHelper.GetWebResult(apiurl + "message/mass/sendall?access_token=" + AccessToken, "POST", model.ToJson());

            if (result.Contains("errcode") && flag)
            {
                ErroMsg(result);
            }
            return(result);
        }
Пример #6
0
        /// <summary>
        /// 删除微信素材
        /// </summary>
        /// <param name="media_id"></param>
        /// <returns></returns>
        public string DelWxMaterial(string media_id, string type)
        {
            string data   = "{\"media_id\":\"" + media_id + "\"}";
            string result = APIHelper.GetWebResult(apiurl + "material/del_material?access_token=" + AccessToken, "POST", data);

            if (IsSuccess(result))
            {
                DelWxMaterialByLocal(media_id, type);
            }
            return(result);
        }
Пример #7
0
        /// <summary>
        /// 用于公众号等支付页面,根据code获取用户的openid
        /// </summary>
        public string U_GetOpenIDByCode(string code)
        {
            string resultStr = APIHelper.GetWebResult("https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + AppId.APPID + "&secret=" + AppId.Secret + "&code=" + code + "&grant_type=authorization_code");

            try
            {
                JObject obj = (JObject)JsonConvert.DeserializeObject(resultStr);
                return(obj["openid"].ToString());
            }
            catch (Exception ex) { throw new Exception("U_GetOpenIDByCode|" + ex.Message + "|" + resultStr); }
        }
Пример #8
0
        /// <summary>
        /// 发送模板消息
        /// </summary>
        /// <param name="url"></param>
        /// <param name="jsondata">{ "touser":"******","template_id":"模板ID","url":"","data":{"first": {"value":"参数值","color":"颜色"},..,remark{"value":"","color":""}}}</param>
        /// <returns></returns>
        public string Tlp_SendTlpMsg(string touser, string template_id, string url, string data)
        {
            List <M_WXTlp> tlps         = Tlp_GetAllPteTlp();
            M_WXTlp        tlpMod       = tlps.FirstOrDefault(p => p.template_id == template_id);
            List <string>  tlpParaNames = Tlp_GetTlpParaNames(tlpMod.content);
            string         json         = "{\"touser\":\"" + touser + "\",\"template_id\":\"" + template_id + "\",\"url\":\"" + url + "\",\"data\":" + data + "}";

            //支持序列化结构
            //在模版消息发送任务完成后,微信服务器会将是否送达成功作为通知,发送到开发者中心中填写的服务器配置地址中。
            return(APIHelper.GetWebResult(apiurl + "message/template/send?access_token=" + AccessToken, "POST", json));
        }
Пример #9
0
        public string GetWxMaterial(string type, bool flag = true)
        {
            string data   = "{\"type\":\"" + type + "\",\"offset\":0,\"count\":20}";
            string result = APIHelper.GetWebResult(apiurl + "material/batchget_material?access_token=" + AccessToken, "POST", data);

            if (result.Contains("errcode") && flag)
            {
                ErroMsg(result);
            }
            return(result);
        }
Пример #10
0
        /// <summary>
        /// 删除微信素材
        /// </summary>
        /// <param name="media_id"></param>
        /// <returns></returns>
        public string DelWxMaterial(string media_id, string type)
        {
            string data   = "{\"media_id\":\"" + media_id + "\"}";
            string result = APIHelper.GetWebResult(apiurl + "material/del_material?access_token=" + AccessToken, "POST", data);

            if (result.Contains("\"errcode\":0"))//判断是否删除成功
            {
                DelWxMaterialByLocal(media_id, type);
            }
            return(result);
        }
Пример #11
0
        public string UpdateWxMaterial(string media_id, int index, string art)
        {
            string data   = "{\"media_id\":\"" + media_id + "\",\"index\":" + index + ",\"articles\":" + art + "}";
            string result = APIHelper.GetWebResult(apiurl + "material/update_news?access_token=" + AccessToken, "POST", data);

            if (!IsSuccess(result))
            {
                ErrorMsg(result);
            }
            UpdateMaterByLocal(media_id, index, art);
            return("OK");
        }
Пример #12
0
        public string UpdateWxMaterial(string media_id, int index, string art)
        {
            string  data   = "{\"media_id\":\"" + media_id + "\",\"index\":" + index + ",\"articles\":" + art + "}";
            string  result = APIHelper.GetWebResult(apiurl + "material/update_news?access_token=" + AccessToken, "POST", data);
            JObject jobj   = JsonConvert.DeserializeObject <JObject>(result);

            if (!jobj["errcode"].ToString().Equals("0"))
            {
                ErroMsg(result);
            }
            UpdateMaterByLocal(media_id, index, art);
            return("OK");
        }
Пример #13
0
        /// <summary>
        /// 上传多图文素材,订阅与服务号必须认证后才能用
        /// </summary>
        /// <returns>媒体素材ID,用于多图文上传</returns>
        public string UploadMPNews(List <M_WXNewsItem> list)
        {
            string url    = apiurl + "material/add_news?access_token=" + AccessToken;
            string json   = "{\"articles\": " + JsonConvert.SerializeObject(list) + "}";
            string result = APIHelper.GetWebResult(url, "POST", json);

            if (!result.Contains("\"errcode\""))
            {
                JObject obj = JsonConvert.DeserializeObject <JObject>(result);
                AddMpNewsForLocal(obj["media_id"].ToString(), JsonConvert.SerializeObject(list));
            }
            return(result);
        }
Пример #14
0
        //---------------------------------------------------API方法
        /// <summary>
        /// 获取最新的Token,执行该方法也会刷新当前AccessToken
        /// </summary>
        public string GetToken()
        {
            string result = APIHelper.GetWebResult(apiurl + "token?grant_type=client_credential&appid=" + AppId.APPID + "&secret=" + AppId.Secret);

            if (result.Contains("errcode"))
            {
                ErroMsg(result);
            }
            //{"access_token":"7EHneznPapbfKYIQISQGVw4comvbkxIWe5e7JmTkp2Y5P93aIO5FjjEeyvk65L4lcPeL6VuMOMZ7CKel95L_ljZnjZrdi-MGPK9mZZOuSN8","expires_in":7200}
            JObject obj = JsonConvert.DeserializeObject <JObject>(result);

            AppId.Token     = obj["access_token"].ToString();
            AppId.TokenDate = DateTime.Now;
            return(AppId.Token);
        }
Пример #15
0
        /// <summary>
        /// 获取JSAPI Ticket,用于多选图片,上传图片等
        /// </summary>
        /// <param name="token">公众号的有效Token</param>
        /// <returns>授权号</returns>
        public string JSAPI_GetTicket(string token)
        {
            //{"errcode":0,"errmsg":"ok","ticket":"sM4AOVdWfPE4DxkXGEs8VEjmRiwQmjlaNL_HOyRiWg9U8Xv42jI-qEyGR-F8ap-ar7JkISzSrAl0fBFqDRzk_w","expires_in":7200}
            string  url    = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + token + "&type=jsapi";
            string  result = APIHelper.GetWebResult(url);
            JObject robj   = JsonConvert.DeserializeObject <JObject>(result);

            if (robj["errcode"].ToString() == "0")
            {
                return(robj["ticket"].ToString());
            }
            else
            {
                throw new Exception("获取JS授权失败,原因:" + result);
            }
        }
Пример #16
0
        //https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
        //或可直接使用返回的URL字段
        #endregion
        /// <summary>
        /// 用户是否绑定微信并关注你的公众号
        /// </summary>
        /// <returns></returns>
        public bool IsFollow(int uid)
        {
            B_UserAPP appBll = new B_UserAPP();
            M_UserAPP appMod = appBll.SelModelByUid(uid, "wechat");

            if (appMod == null || string.IsNullOrEmpty(appMod.OpenID))
            {
                return(false);
            }
            string  result = APIHelper.GetWebResult(apiurl + "user/info?access_token=" + AccessToken + "&openid=" + appMod.OpenID);
            JObject jobj   = JsonConvert.DeserializeObject <JObject>(result);

            if (jobj["subscribe"] != null && jobj["subscribe"].ToString() == "1")
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #17
0
        /// <summary>
        /// 获取粉丝信息模型,该接口需要公众号已认证,否则无法获取粉丝信息
        /// </summary>
        public M_WX_User GetWxUserModel(string openid)
        {
            M_WX_User userMod = new M_WX_User();

            userMod.OpenID = openid;
            string  result = APIHelper.GetWebResult(apiurl + "user/info?access_token=" + AccessToken + "&openid=" + openid);
            JObject obj    = JsonConvert.DeserializeObject <JObject>(result);

            try
            {
                userMod.Name       = obj["nickname"].ToString();
                userMod.Sex        = DataConverter.CLng(obj["sex"]);
                userMod.City       = obj["city"].ToString();
                userMod.Province   = obj["province"].ToString();
                userMod.Country    = obj["country"].ToString();
                userMod.HeadImgUrl = obj["headimgurl"].ToString();
                userMod.Groupid    = DataConverter.CLng(obj["groupid"]);
            }
            catch (Exception ex) { ZLLog.L("GetWxUserModel出错,原因:" + ex.Message + ",返回:" + result); }
            return(userMod);
        }
Пример #18
0
        /// <summary>
        /// 有时间限制的带参临时二维码
        /// </summary>
        /// <returns></returns>
        public string QRCode_Temp(string param)
        {
            string data = "{\"expire_seconds\": 604800, \"action_name\": \"QR_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": \"" + param + "\"}}}";

            return(APIHelper.GetWebResult(apiurl + "message/qrcode/create?access_token=" + AccessToken, "POST", data));
        }
Пример #19
0
 /// <summary>
 /// 删除模板
 /// </summary>
 /// <returns></returns>
 public string Tlp_DelPteTlp(string template_id)
 {
     return(APIHelper.GetWebResult(apiurl + "template/del_private_template?access_token=" + AccessToken, "POST", "{\"template_id\":\"" + template_id + "\"}"));
 }
Пример #20
0
 /// <summary>
 /// 获取设置的行业信息
 /// </summary>
 /// <returns>{"primary_industry":{"first_class":"运输与仓储","second_class":"快递"}(帐号设置的主营行业),"secondary_industry":{"first_class":"IT科技","second_class":"互联网|电子商务"}}(帐号设置的副营行业)</returns>
 public string Tlp_GetIndustry()
 {
     return(APIHelper.GetWebResult(apiurl + "template/get_industry?access_token=" + AccessToken));
 }
Пример #21
0
        /// <summary>
        /// 设置所属行业
        /// </summary>
        /// <param name="industry_id1">公众号模板消息所属行业编号</param>
        /// <param name="industry_id2">公众号模板消息所属行业编号</param>
        /// <returns></returns>
        public string Tlp_SetIndustry(int industry_id1, int industry_id2)
        {
            string data = "{ \"industry_id1\":\"" + industry_id1 + "\",\"industry_id2\":\"" + industry_id2 + "\" }";

            return(APIHelper.GetWebResult(apiurl + "template/api_set_industry?access_token=" + AccessToken, "POST", data));
        }
Пример #22
0
 //删除全部微信菜单
 public string DelWxMenu()
 {
     return(APIHelper.GetWebResult(apiurl + "menu/delete?access_token=" + AccessToken));
 }
Пример #23
0
 /// <summary>
 /// 获取微信菜单
 /// </summary>
 /// <returns>{menu:{button:[{name:'菜单名',type:'菜单类型',key:'关键值,与推送事件匹配'},{name:菜单名,sub_button:[子菜单(格式与菜单一样)]}]}}</returns>
 public string GetWxMenu()
 {
     return(APIHelper.GetWebResult(apiurl + "menu/get?access_token=" + AccessToken));
 }
Пример #24
0
 /// <summary>
 /// 创建微信菜单
 /// </summary>
 /// <param name="jsondata">{button:[{name:'菜单名',type:'菜单类型',key:'关键值,与推送事件匹配'},{name:菜单名,sub_button:[子菜单(格式与菜单一样)]}]}</param>
 /// <returns></returns>
 public string CreateWxMenu(string jsondata)
 {
     return(APIHelper.GetWebResult(apiurl + "menu/create?access_token=" + AccessToken, "POST", jsondata));
 }
Пример #25
0
        //向用户发送信息(用于主动推送)
        public string SendMsg(string uid, string content)
        {
            string data = "{\"touser\":\"" + uid + "\",\"msgtype\":\"text\",\"text\":{\"content\":\"" + content + "\"}}";

            return(APIHelper.GetWebResult(apiurl + "message/custom/send?access_token=" + AccessToken, "POST", data));
        }
Пример #26
0
 /// <summary>
 /// 发送图文消息(用于主动推送)
 /// </summary>
 public string SendImgMsg(M_WxImgMsg model)
 {
     return(APIHelper.GetWebResult(apiurl + "message/custom/send?access_token=" + AccessToken, "POST", model.ToJson()));
 }
Пример #27
0
        /// <summary>
        /// 发送图文,
        /// </summary>
        /// <param name="mediaid">图片的素材ID</param>
        /// <returns></returns>
        public string SendImg(string uid, string mediaid)
        {
            string msg = "{\"touser\":\"" + uid + "\",\"msgtype\":\"image\",\"image\":{\"media_id\":\"" + mediaid + "\"}}";

            return(APIHelper.GetWebResult(apiurl + "message/custom/send?access_token=" + AccessToken, "POST", msg));
        }