ASP.NET 微信公众平台模板消息推送功能完整开发
最近公众平台的用户提出了新需求,他们希望当收到新的邮件或者日程的时候,公众平台能主动推送一条提醒给用户。看了看平台提供的接口,似乎只有【模板消息】能尽量满足这一需求,但不得不说微信提供的实例太少,而且只有PHP的,不过摸索了一下还是成功的实现了。
首先是准备工作,需要申请开通【模板消息】功能,网上教程很多。然后申请通过之后,用户可以从现有的模板里选择15个使用,也可以自己添加模板使用。这里吐槽一下:申请添加新的模板时,微信出于保护用户的目的禁止了一些“看起来会很频繁”的消息类型,比如这图里的——
明明是客户的需求,结果微信认为会引起用户反感所以不通过 =L=
后台代码:
/// <summary>
/// 功能: 模板消息推送
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public string ModelMessageSend(string data)
{
CancelView(); string url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + AccessToken; string result = RequestPost(data, url); if (result.Contains("ok"))
{
return "OK";
}
else {
return "result";
}
}
/// <summary>
/// 功能: 模拟Post请求
/// </summary>
/// <param name="postData">json</param>
/// <param name="url">url</param>
/// <returns></returns>
public string RequestPost(string postData, string url)
{
byte[] data = Encoding.UTF8.GetBytes(postData); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "Post";
request.ContentType = "application/json";
request.ContentLength = data.Length;
request.KeepAlive = true; Stream stream = request.GetRequestStream();
stream.Write(data, , data.Length); HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = (HttpWebResponse)ex.Response;
} StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string content = reader.ReadToEnd(); request.Abort();
response.Close();
reader.Dispose();
stream.Close();
stream.Dispose(); return content;
}
然后是关于传入的json数据需要注意,不能使用单引号!
Ex:{\"touser\":\"oHWXst6bEayYb0m91RtdU4FzxfKY\",\"template_id\":\"Gyi3hZCDK6Y8CmAubONfxoHW7VADuwxz9mO_dObWsE0\",\"url\":\"http://www.baidu.com\",\"topcolor\":\"#FF0000\",\"data\":{\"first\": {\"value\":\"新的通知\",\"color\":\"#173177\"},\"keyword1\":{\"value\":\"吃饭!\",\"color\":\"#173177\"},\"keyword2\":{\"value\":\"2015.03.16中午\",\"color\":\"#173177\"},\"keyword3\":{\"value\":\"食堂\",\"color\":\"#173177\"},\"keyword4\":{\"value\":\"张三李四王二麻子\",\"color\":\"#173177\"},\"remark\":{\"value\":\"爱吃吃不吃滚\",\"color\":\"#173177\"}}}
之前为了省事使用了单引号,结果一直提示data格式错误,把单引号换成\"后就成功了……
ASP.NET 微信公众平台模板消息推送功能完整开发的更多相关文章
- Java对接微信公众号模板消息推送
内容有点多,请耐心! 最近公司的有这个业务需求,又很凑巧让我来完成: 首先想要对接,先要一个公众号,再就是开发文档了:https://developers.weixin.qq.com/doc/offi ...
- asp.net 实现微信公众平台的主动推送信息
通过学习借鉴朋友的实现方法进行整理(微信公众帐号主动发送消息给用户,asp.net版本). /// <summary> /// MD5 32位加密 /// </summary> ...
- 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送
微信支付之微信模板消息推送 今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...
- C# MVC 微信支付之微信模板消息推送
微信支付之微信模板消息推送 今天我要跟大家分享的是"模板消息"的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信 ...
- java开发微信模板消息推送
发布时间:2018-12-12 技术:springboot+maven 概述 该demo主要涉及微信模板消息推送功能, 详细 代码下载:http://www.demodashi.com/dem ...
- 前后端分离djangorestframework—— 接入微信模板消息推送
微信 什么是微信也不多说,跟前面的支付宝一样的 微信支付 微信支付也有个沙箱环境,沙箱环境官方文档 由文档中那句很显眼的话所得,即使是测试环境也需要真实的商户号,所以这个就没法想支付宝那样用沙箱账号来 ...
- 【C#版本】微信公众号模板消息对接(一)(图文详解)
特此说明:本篇文章为个人原创文章,创作不易,未经作者本人同意.许可等条件,不得以任何形式搬运.转载.抄袭(等包括但不限于此手段)本文章,否则保留追究有关侵权人责任的权利 一.认识微信公众号模板消息 什 ...
- qhfl-9 微信模板消息推送
开发中用的是测试号 微信公众号认证流程 用户登陆 <!DOCTYPE html> <html lang="en"> <head> <met ...
- 微信开发——微信公众平台实现消息接收以及消息的处理(Java版)
本文主要讲述了如何在微信公众平台实现消息接收以及消息的处理,使用java语言开发,现在把实现思路和代码整理出来分先给兄弟们,希望给他们带来帮助. 温馨提示: 这篇文章是依赖前几篇的文章的. 第一篇:微 ...
随机推荐
- py西游公关之模块
Py西游攻关之模块 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可 ...
- unittest的case和报告生成方法
#coding=utf-8from appium import webdriverimport unittestimport HTMLTestRunnerclass CaseTest(unittest ...
- 【剑指Offer】7、斐波那契数列
题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).假设n<=39. 解题思路: 斐波那契数列:0,1,1,2,3, ...
- 洛谷P1316 丢瓶盖【二分+递推】
陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以到多少呢? 输入输出格式 输入 ...
- 洛谷P1090 合并果子【贪心】
在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可以看出,所 ...
- 洛谷P1012 拼数【字符串+排序】
设有nn个正整数(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3n=3时,33个整数1313,312312,343343联接成的最大整数为:3433121334331 ...
- 使用SQLAlchemy对博客文章进行分页
https://blog.csdn.net/hyman_c/article/details/54382161
- HDU 1704 Rank
Rank Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 17046 ...
- fzu 2173 floyd+矩阵快速幂
#include<stdio.h> #define inf 1000000000000000 #define N 100 long long tmp[N][N],ma[N][N]; int ...
- POJ 2374
挺水的一道线段树+DP题.可以从底往上添加线段,每添加线段之前查询端点所被覆盖的区间线段.再从最顶往下DP,每次从端点出发,递推覆盖该端点的区间线段的两端的值即可. #include <cstd ...