/// <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); }
//必须要服务号才可调用 //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)); }
/// <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); }
/// <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())); }
//图片 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); }
/// <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); }
/// <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); } }
/// <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)); }
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); }
/// <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); }
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"); }
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"); }
/// <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); }
//---------------------------------------------------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); }
/// <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); } }
//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); } }
/// <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); }
/// <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)); }
/// <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 + "\"}")); }
/// <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)); }
/// <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)); }
//删除全部微信菜单 public string DelWxMenu() { return(APIHelper.GetWebResult(apiurl + "menu/delete?access_token=" + AccessToken)); }
/// <summary> /// 获取微信菜单 /// </summary> /// <returns>{menu:{button:[{name:'菜单名',type:'菜单类型',key:'关键值,与推送事件匹配'},{name:菜单名,sub_button:[子菜单(格式与菜单一样)]}]}}</returns> public string GetWxMenu() { return(APIHelper.GetWebResult(apiurl + "menu/get?access_token=" + AccessToken)); }
/// <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)); }
//向用户发送信息(用于主动推送) 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)); }
/// <summary> /// 发送图文消息(用于主动推送) /// </summary> public string SendImgMsg(M_WxImgMsg model) { return(APIHelper.GetWebResult(apiurl + "message/custom/send?access_token=" + AccessToken, "POST", model.ToJson())); }
/// <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)); }