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


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 解析Json字符串的性能比较分析代码
Dec 16 Javascript
5个javascript的数字格式化函数分享
Dec 07 Javascript
js写一个字符串转成驼峰的实例
Jun 21 Javascript
深入理解javascript的执行顺序
Apr 04 Javascript
JavaScript获取Url里的参数
Dec 18 Javascript
JS实现的左侧竖向滑动菜单效果代码
Oct 19 Javascript
全面解析Angular中$Apply()及$Digest()的区别
Aug 04 Javascript
JS简单判断函数是否存在的方法
Feb 13 Javascript
Puppeteer 爬取动态生成的网页实战
Nov 14 Javascript
解决Vue调用springboot接口403跨域问题
Sep 02 Javascript
Vue 使用beforeEach实现登录状态检查功能
Oct 31 Javascript
node.js中 redis 的安装和基本操作示例
Feb 10 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函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
php防止sql注入简单分析
2015/03/18 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
php Session无效分析资料整理
2016/11/29 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
单击某一段文字改写文本颜色
2014/06/06 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
深入解析Python中的变量和赋值运算符
2015/10/12 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
Python向excel中写入数据的方法
2019/05/05 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
python入门教程之基本算术运算符
2020/11/13 Python
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
跟单业务员岗位职责
2014/03/08 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
英语辞职信范文
2015/02/28 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
革命电影观后感
2015/06/18 职场文书