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


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 相关文章推荐
js innerHTML 的一些问题的解决方法
Jun 22 Javascript
JavaScript 学习笔记(四)
Dec 31 Javascript
js实现仿百度瀑布流的方法
Feb 05 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
详解JavaScript中的表单验证
Jun 16 Javascript
js实现获取两个日期之间所有日期的方法
Jun 17 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
Mar 15 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
Mar 17 Javascript
swiper 自动图片无限轮播实现代码
May 21 Javascript
解决百度Echarts图表坐标轴越界的方法
Oct 17 Javascript
微信小程序如何播放腾讯视频的实现
Sep 20 Javascript
jQuery实现广告显示和隐藏动画
Jul 04 jQuery
微信和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
php读取数据库信息的几种方法
2008/05/24 PHP
php引用传值实例详解学习
2013/11/06 PHP
php连接mysql数据库
2017/03/21 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
CCPry JS类库 代码
2009/10/30 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
javascript实现拖放效果
2015/12/16 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
Python遍历目录中的所有文件的方法
2016/07/08 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
弘扬雷锋精神演讲稿
2014/05/10 职场文书
企业承诺书格式
2014/05/21 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
python 判断文件或文件夹是否存在
2022/03/18 Python