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


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实现鼠标滚轮动态改变样式或效果
Jan 05 Javascript
jquery自定义插件——window的实现【示例代码】
May 06 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
Jun 01 Javascript
js封装tab标签页实例分享
Dec 19 Javascript
Bootstrap select多选下拉框实现代码
Dec 23 Javascript
js仿拉勾网首页穿墙广告效果
Mar 08 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
Jul 17 Javascript
vue项目开发中setTimeout等定时器的管理问题
Sep 13 Javascript
超简单的微信小程序轮播图
Nov 22 Javascript
AutoJs实现刷宝短视频的思路详解
May 22 Javascript
JavaScript ES 模块的使用
Nov 12 Javascript
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
微信和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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
php实现的CSS更新类实例
2014/09/22 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
Javascript 类型转换方法
2010/10/24 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
python使用psutil模块获取系统状态
2016/08/27 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
python正则表达式之对号入座篇
2018/07/24 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
学雷锋树新风演讲稿
2014/05/10 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server