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


Posted in Javascript onOctober 21, 2016

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

//定义数据模型
 
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").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, 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;
 
}

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

Javascript 相关文章推荐
jQuery判断div随滚动条滚动到一定位置后停止
Apr 02 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
May 12 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
Dec 26 Javascript
Cookies 和 Session的详解及区别
Apr 21 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
Jul 17 jQuery
Node.js五大应用性能技巧小结(必须收藏)
Aug 09 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
Aug 29 Javascript
vscode下的vue文件格式化问题
Nov 28 Javascript
vue集成kindeditor富文本的实现示例代码
Jun 07 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
Oct 14 Javascript
JS+CSS实现随机点名(实例代码)
Nov 04 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
Mar 03 Javascript
微信和qq时间格式模板实例详解
Oct 21 #Javascript
微信开发 微信授权详解
Oct 21 #Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
Oct 21 #Javascript
微信 java 实现js-sdk 图片上传下载完整流程
Oct 21 #Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
Oct 21 #Javascript
Bootstrap如何创建表单
Oct 21 #Javascript
bootstrap table小案例
Oct 21 #Javascript
You might like
用Zend Encode编写开发PHP程序
2006/10/09 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
input按钮的事件处理大全
2010/12/10 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
javascript验证身份证号
2015/03/03 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
pymongo中group by的操作方法教程
2019/03/22 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
super关键字的用法
2012/04/10 面试题
个人简历中的自我评价范例
2013/10/29 职场文书
分家协议书
2014/04/21 职场文书
法人委托书
2014/07/31 职场文书
五一放假通知怎么写
2015/08/18 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python