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


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宝典学习笔记(上)
Jan 10 Javascript
jquery的相对父元素和相对文档定位示例代码
Aug 02 Javascript
connect中间件session、cookie的使用方法分享
Jun 17 Javascript
js实现滑动触屏事件监听的方法
May 05 Javascript
javascript基于DOM实现省市级联下拉框的方法
May 14 Javascript
Node.js 条形码识别程序构建思路详解
Feb 14 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
原生js仿jquery实现对Ajax的封装
Oct 04 Javascript
JS实现新建文件夹功能
Jun 17 Javascript
vue中axios请求的封装实例代码
Mar 23 Javascript
jquery-ui 进度条功能示例【测试可用】
Jul 25 jQuery
JavaScript判断数据类型有几种方法及区别介绍
Sep 02 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
MYSQL数据库初学者使用指南
2006/11/16 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
深入理解Python中变量赋值的问题
2017/01/12 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
python 读取二进制 显示图片案例
2020/04/24 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
医学实习生自我鉴定
2013/12/12 职场文书
应届毕业生求职信范例分享
2013/12/17 职场文书
全陪导游欢迎词
2014/01/17 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
社区服务标语
2014/07/01 职场文书
处级干部考察材料
2014/12/24 职场文书
总结会主持词
2015/07/02 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
爱国之歌(8首)
2019/09/29 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers