微信开发 消息推送实现代码

网友投稿 182 2023-07-02


微信开发 消息推送实现代码

最近做微信公共号的开发,有个需求是这样的消息推送,以文本的形式把编辑的消息发送给微信企业号中的某一个应用组,这里做下笔记,以下是整理内容:

//定义数据模型

public class Access_token

{

public Access_token()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

string _access_token;

string _expires_in;

///

/// 获取到的凭证

///

public string access_token

{

get { return _access_token; }

set { _access_token = value; }

}

///

/// 凭证有效时间,单位:秒

///

public string expires_in

{

get { return _expires_in; }

set { _expires_in = value; }

}

}

public ActionResult index(string returnUrl)

{

GetAccess_token();

IsExistAccess_Token();

return View();

}

public static Access_token GetAccess_token()

{

string AppUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?";

string AppID = "应用组的CorpID";//在设置-》权限管理-》系统管理组

string AppSecret = "应用组的Secret";//在设置-》权限管理-》系统管理组

WebClient webClient = new WebClient();

Byte[] bytes = webClient.DownloadData(string.Format("{0}corpid={1}&corpsecret={2}", AppUrl, AppID, AppSecret));

string result = Encoding.GetEncoding("utf-8").GetString(bytes);

JObject jObj = JObject.Parse(result);

string token = jObj["access_token"].ToString();

string expires_in = jObj["expires_in"].ToString();

Access_token mode = new Access_token();

mode.access_token = token;

mode.expires_in = expires_in;

return mode;

}

///

根据当前日期 判断Access_Token 是否超期 如果超期返回新的Access_Token 否则返回之前的Access_Token

public static string IsExistAccess_Token()

{

string Token = string.Empty;

DateTime YouXRQ;

string strPath = "../../weixin/XMLFile.xml";

// 读取XML文件中的数据,并显示出来

//string filepath = System.Web.Hosting.HostingEnvironment.MapPath(strPath);

string filepath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);

StreamReader str = new StreamReader(filepath, System.Text.Encoding.UTF8);

XmlDocument xml = new XmlDocument();

xml.Load(str);

str.Close();

str.Dispose();

Token = xml.SelectSingleNode("xml").SelectSingleNode("Access_Token").InnerText;

YouXRQ = Convert.ToDateTime(xml.SelectSingleNode("xml").SelectSingleNode("Access_YouXRQ").InnerText);

if (DateTime.Now > YouXRQ)

{

DateTime _youxrq = DateTime.Now;

Access_token mode = GetAccess_token();

xml.SelectSingleNode("xml").SelectSingleNode("Access_Token").InnerText = mode.access_token;

_youxrq = _youxrq.AddSeconds(int.Parse(mode.expires_in));

xml.SelectSingleNode("xml").SelectSingleNode("Access_YouXRQ").http://InnerText = _youxrq.ToString();

xml.Save(filepath);

Token = mode.access_token;

}

object text = new

{

toparty = "1",

agentid = "2",

msgtype = "text",

text = new

{

content = "项目名称:"+来保网+""

}

};

string wcr= btnSend(Token, text);

return wcr;

}

public static string btnSend(string Token, object text)

{

string url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + Token;

WebRequest req = WebRequest.Create(url);

javascriptSerializer aa = new javaScriptSerializer();

string postData = aa.Serialize(text);

byte[] requestBytes = Encoding.UTF8.GetBytes(postData);

req.Method = "POST";

req.ContentType = "application/x-wwhttp://w-form-urlencoded";

req.ContentLength = requestBytes.Length;

Stream requestStream = req.GetRequestStream();

requestStream.Write(requestBytes, 0, requestBytes.Length);

requestStream.Close();

HttpWebResponse res = (HttpWebResponse)req.GetResponse();

StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.Default);

string backstr = sr.ReadToEnd();

sr.Close();

res.Close();

WeChatReturn WCR = aa.Deserialize(backstr);

return WCR.errmsg;

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:bootstrap中使用google prettify让代码高亮的方法
下一篇:基于angular中的重要指令详解($eval,$parse和$compile)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~