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


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 相关文章推荐
在Javascript中为String对象添加trim,ltrim,rtrim方法
Sep 22 Javascript
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
Jul 08 Javascript
如何编写高质量JS代码(续)
Feb 25 Javascript
javascript闭包的理解
Apr 01 Javascript
JavaScript中的lastIndexOf()方法使用详解
Jun 06 Javascript
ionic实现滑动的三种方式
Aug 27 Javascript
vue.js指令v-model使用方法
Mar 20 Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
VUE前后端学习tab写法实例
Aug 06 Javascript
通过实例了解JS 连续赋值
Sep 24 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
PHP CURL获取返回值的方法
2014/05/04 PHP
php递归创建目录的方法
2015/02/02 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
jquery dialog键盘事件代码
2010/08/01 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
微信小程序云开发之云函数详解
2019/05/16 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
python如何变换环境
2020/07/21 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
大学毕业的自我鉴定
2013/10/08 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
师德标兵事迹材料
2014/12/19 职场文书
民事上诉状范文
2015/05/22 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python