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

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

rush:js;"> //定义数据模型

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; }
}

}

rush:js;"> 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

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").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-www-form-urlencoded";
req.ContentLength = requestBytes.Length;

Stream requestStream = req.GetRequestStream();
requestStream.Write(requestBytes,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;

}

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

相关文章

什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据...
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:...
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面