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


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创建平滑的页面滚动(顶部或底部)
Feb 26 Javascript
浅谈JavaScript Date日期和时间对象
Dec 29 Javascript
jQuery实现3D文字特效的方法
Mar 10 Javascript
《JavaScript函数式编程》读后感
Aug 07 Javascript
jquery实现表单输入时提示文字滑动向上效果
Aug 10 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
Jan 30 Javascript
Angular 根据 service 的状态更新 directive
Apr 03 Javascript
JavaScript正则获取地址栏中参数的方法
Mar 02 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 jQuery
layerUI下的绑定事件实例代码
Aug 17 Javascript
vue滚动tab跟随切换效果
Jun 29 Javascript
Vue实现背景更换颜色操作
Jul 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中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
PHP可变函数的使用详解
2013/06/14 PHP
php实现webservice实例
2014/11/06 PHP
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
Nodejs核心模块之net和http的使用详解
2019/04/02 NodeJs
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
numpy中的高维数组转置实例
2018/04/17 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
python flask框架实现重定向功能示例
2019/07/02 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
python爬取招聘要求等信息实例
2020/11/20 Python
浅析python实现动态规划背包问题
2020/12/31 Python
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
什么是Web Service?
2012/07/25 面试题
儿科护士实习自我鉴定
2013/10/17 职场文书
大学四年规划书范文
2013/12/27 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js