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


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脚本
Dec 03 Javascript
自定义jQuery选项卡插件实例
Mar 27 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
Jun 28 Javascript
Javascript检查图片大小不要让大图片撑破页面
Nov 04 Javascript
开源的javascript项目Kissy介绍
Nov 28 Javascript
jQuery获得指定元素坐标的方法
Apr 14 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
js获取滚动距离的方法
May 30 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
Dec 01 Javascript
浅析JS抽象工厂模式
Dec 14 Javascript
JS实现图片转换成base64的各种应用场景实例分析
Jun 22 Javascript
JS算法题之查找数字在数组中的索引位置
May 15 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
第六节 访问属性和方法 [6]
2006/10/09 PHP
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
七款最流行的PHP本地服务器分享
2013/02/19 PHP
php设计模式之观察者模式的应用详解
2013/05/21 PHP
PHP 实现explort() 功能的详解
2013/06/20 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
Javascript 解疑
2009/11/11 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
js模糊查询实例分享
2016/12/26 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
vue-router 按需加载 component: () => import() 报错的解决
2020/09/22 Javascript
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
python中对数据进行各种排序的方法
2019/07/02 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
python/golang 删除链表中的元素
2020/09/14 Python
Python扫描端口的实现
2021/01/25 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
25道Java面试题集合
2013/05/21 面试题
秘书英文求职信范文
2014/01/31 职场文书
辩护词范文大全
2015/05/21 职场文书
岁月神偷观后感
2015/06/11 职场文书
python中取整数的几种方法
2021/11/07 Python
Python中第三方库Faker的使用详解
2022/04/02 Python