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


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学习笔记之jQuery选择器的使用
Dec 22 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
Oct 29 Javascript
jquery ajax jsonp跨域调用实例代码
Dec 11 Javascript
JavaScript中Date.toSource()方法的使用教程
Jun 12 Javascript
JavaScript实现向右伸出的多级网页菜单效果
Aug 25 Javascript
基于JS实现PHP的sprintf函数实例
Nov 14 Javascript
js密码强度检测
Jan 07 Javascript
jquery制做精致的倒计时特效
Jun 13 Javascript
vue实现留言板todolist功能
Aug 16 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
Mar 10 Javascript
小程序红包雨的实现示例
Feb 19 Javascript
javascript History对象原理解析
Feb 17 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中的数组操作函数整理
2008/08/18 PHP
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
php解析json数据实例
2014/08/19 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
Backbone.js中的集合详解
2015/01/14 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
python 错误处理 assert详解
2020/04/20 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
C++是不是类型安全的
2014/02/18 面试题
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
大学生饮食连锁店创业计划书
2014/01/17 职场文书
电力安全事故反思
2014/04/27 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
2014年创卫工作总结
2014/11/24 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
cypress测试本地web应用
2022/06/01 Javascript