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


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 Easyui实现左右布局
Jan 26 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
Aug 19 Javascript
JS给swf传参数的实现方法
Sep 13 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
Feb 08 Javascript
vue.js中Vue-router 2.0基础实践教程
May 08 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
Jul 12 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
Feb 11 Javascript
JavaScript实现短暂提示框功能
Apr 04 Javascript
vue 监听屏幕高度的实例
Sep 05 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
Mar 01 Javascript
javascript获取select值的方法完整实例
Jun 20 Javascript
VUE : vue-cli中去掉路由中的井号#操作
Sep 04 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 无限级缓存的类的扩展
2009/03/16 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
window.dialogArguments 使用说明
2011/04/11 Javascript
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
理解javascript异步编程
2016/01/27 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
Python 的描述符 descriptor详解
2016/02/27 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Python文件和流(实例讲解)
2017/09/12 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
python顺序执行多个py文件的方法
2019/06/29 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
Python图像读写方法对比
2020/11/16 Python
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
初中英语教学反思
2014/01/25 职场文书
车间机修工岗位职责
2014/02/28 职场文书
学习之星事迹材料
2014/05/17 职场文书
模具专业求职信
2014/06/26 职场文书
公务员考察材料范文
2014/12/23 职场文书
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL