asp.net微信开发第九篇----模板消息的使用
获取模板列表
获取已添加至帐号下所有模板列表,可在MP中查看模板列表信息,为方便第三方开发者,提供通过接口调用的方式来获取帐号下所有模板信息,具体如下:
接口调用请求说明
http请求方式:GET
https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=ACCESS_TOKEN
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 接口调用凭证 |
返回说明
正确调用后的返回示例:
{
"template_list": [{
"template_id": "iPk5sOIt5X_flOVKn5GrTFpncEYTojx6ddbt8WYoV5s",
"title": "领取奖金提醒",
"primary_industry": "IT科技",
"deputy_industry": "互联网|电子商务",
"content": "{ {result.DATA} }\n\n领奖金额:{ {withdrawMoney.DATA} }\n领奖 时间:{ {withdrawTime.DATA} }\n银行信息:{ {cardInfo.DATA} }\n到账时间: { {arrivedTime.DATA} }\n{ {remark.DATA} }",
"example": "您已提交领奖申请\n\n领奖金额:xxxx元\n领奖时间:2013-10-10 12:22:22\n银行信息:xx银行(尾号xxxx)\n到账时间:预计xxxxxxx\n\n预计将于xxxx到达您的银行卡"
}]
}
返回参数说明
参数 | 说明 |
---|---|
template_id | 模板ID |
title | 模板标题 |
primary_industry | 模板所属行业的一级行业 |
deputy_industry | 模板所属行业的二级行业 |
content | 模板内容 |
example | 模板示例 |
删除模板
删除模板可在MP中完成,为方便第三方开发者,提供通过接口调用的方式来删除某帐号下的模板,具体如下:
接口调用请求说明
http请求方式post
https://api,weixin.qq.com/cgi-bin/template/del_private_template?access_token=ACCESS_TOKEN
POST数据说明如下:
{
“template_id”=”Dyvp3-Ff0cnail_CDSzk1fIc6-9lOkxsQE7exTJbwUE”
}
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
template_id | 是 | 公众帐号下模板消息ID |
返回说明
在调用接口后,会返回JSON数据包。正常时的返回JSON数据包示例:
{
"errcode":0,"errmsg":"ok"
}
用户手机微信接收到的模板消息
和平时我们微信中关注信用卡官方微信,如果消费了,信用卡官方微信就返回一个模板消息给我们告知,余额还有多少,消费了多少。
主要涉及到获取微信模板消息,删除模板消息,同步模板消息,
一、同步模板消息:
1.从微信服务器获取模板消息列表,进行本地化存储,
2.本地化存储前,删除本地全部模板消息列表
二、程序获取用户的OpenId,发送模板消息
this.LinkBtnUpdate.Attributes.Add("OnClick", "return confirm('确定修改密码?')"); if (Request.QueryString["code"] != null)
{
string code = Request.QueryString["code"].ToString();
string codeurl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + WeiXinServer.appid.ToString() + "&secret=" + WeiXinServer.secret.ToString()+ "&code=" + code + "&grant_type=authorization_code"; string content = HttpSendCode.GetPageContent(codeurl, Encoding.UTF8); //使用前需药引用Newtonsoft.json.dll文件
JObject jsonObj = JObject.Parse(content); if (jsonObj.ToString().Contains("openid"))
{
//Response.Write(jsonObj["openid"].ToString());
Session["openid"] = jsonObj["openid"].ToString();
Session.Timeout = ;//设置session有效时间为10分钟
} }
其中这个Session["openid"]是根据用户访问了EmploUpdatePwd.aspx这个网页,后台做的一些处理获取到的。
1.//密码修改页面
public const string updatePwdOAuthUrl = postUrl + "/EmploUpdatePwd.aspx"; 2.//跳转密码修改认证Url
public string PwdURL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + WeiXinServer.appid.ToString() + "&redirect_uri=" + updatePwdOAuthUrl + "&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
3.//微信中的点击菜单修改密码
postData += " \"type\":\"view\"," + "\r\n";
postData += " \"name\":\"密码修改\", " + "\r\n";
postData += " \"url\":\"" + PwdURL + "\"" + "\r\n";
第二步:发送模板消息
//发送模板消息,提示密码修改成功
WeiXinServer wxs = new WeiXinServer();
///从缓存读取accesstoken
string Access_token = Cache["Access_token"] as string;
if (Access_token == null)
{
//如果为空,重新获取
Access_token = wxs.GetAccessToken(); //设置缓存的数据7000秒后过期
Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(), System.Web.Caching.Cache.NoSlidingExpiration);
}
string Access_tokento = Access_token.Substring(, Access_token.Length - ); //https请求地址
string url = string.Format("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}", Access_tokento); //用户的openId
string UserOpenId = Session["openid"].ToString();
//官网示范的json串
//{
// "touser":"OPENID",
// "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
// "url":"http://weixin.qq.com/download",
// "data":{
// "first": {
// "value":"恭喜你购买成功!",
// "color":"#173177"
// },
// "keynote1":{
// "value":"巧克力",
// "color":"#173177"
// },
// "keynote2": {
// "value":"39.8元",
// "color":"#173177"
// },
// "keynote3": {
// "value":"2014年9月22日",
// "color":"#173177"
// },
// "remark":{
// "value":"欢迎再次购买!",
// "color":"#173177"
// }
// }
// } //string strPostData = "{ \"touser\":\"" + UserOpenId + "\",\"template_id\":\"3yj8V1SauPXkSC9-PoPvOEtvIXaQhFsP6-bjyDs8Ilo\",\"url\":\"http://weixin.deqiaohr.com.cn\", \"data\":{\"channel\":{\"value\":\"微信\",\"color\":\"#173177\"},\"orderNumber\":{\"value\":\"113234\",\"color\":\"#173177\"},\"state\":{\"value\":\"进入收单状态\",\"color\":\"#173177\"},\"doSomething\":{\"value\":\"kantzou将在今天下午三点上门收件\",\"color\":\"#173177\"},\"remark\":{\"value\":\"谢谢您的支持!\",\"color\":\"#173177\"}}}"; string postData = "{ \"touser\":\"" + UserOpenId + "\",\"template_id\":\"3yj8V1SauPXkSC9-PoPvOEtvIXaQhFsP6-bjyDs8Ilo\",\"url\":\"http://weixin.deqiaohr.com.cn/EmploUpdatePwd.aspx\", \"data\":{\"first\":{\"value\":\"恭喜您!你的查询密码已重置成功!\",\"color\":\"#173177\"},\"keyword1\":{\"value\":\"" + euserinfo.EmploName.ToString() + "\",\"color\":\"#173177\"},\"keyword2\":{\"value\":\"NULL\",\"color\":\"#173177\"},\"keyword3\":{\"value\":\"" + euserinfo.EmploIdentityCard.ToString().Substring(,)+ "\",\"color\":\"#173177\"},\"remark\":{\"value\":\"如需再次修改密码,请点击进入!!\",\"color\":\"#173177\"}} }"; string result = wxs.GetPage(url, postData);
1.template_id:官网后台直接复制的,
至于怎么添加的模板,官网有介绍不罗嗦。完成。
asp.net微信开发第九篇----模板消息的使用的更多相关文章
- h5 录音 自动生成proto Js语句 UglifyJS-- 对你的js做了什么 【原码笔记】-- protobuf.js 与 Long.js 【微信开发】-- 发送模板消息 能编程与会编程 vue2入坑随记(二) -- 自定义动态组件 微信上传图片
得益于前辈的分享,做了一个h5录音的demo.效果图如下: 点击开始录音会先弹出确认框: 首次确认允许后,再次录音不需要再确认,但如果用户点击禁止,则无法录音: 点击发送 将录音内容发送到对话框中.点 ...
- asp.net微信开发第二篇----消息应答
当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上. 请注意: 1.关于重试的消息排重,推荐使用msgid排重. 2.微信服务器在五秒内收不到响应会断掉连接 ...
- asp.net微信开发第一篇----开发者接入
在项目的根目录或者特定的文件夹内,创建一个ashx文件(一般处理程序文件),如图 public void ProcessRequest(HttpContext context) { context.R ...
- php之微信公众号发送模板消息
讲一下开发项目中微信公众号发送模板消息的实现过程(我用的还是Thinkphp5.0). 先看一下效果,如图: 就是类似于这样的,下面讲一下实现过程: 第一步:微信公众号申请模板消息权限: 立即申请: ...
- 微信小程序:模板消息推送提示{“errcode”:41030,”errmsg”:”invalid page hint: [gP1eXXXXXX]”}
在开发小程序 模板消息定时推送功能时,在开发版测试程序功能运行正常,但提交到线上后提示报错{“errcode”:41030,”errmsg”:”invalid page hint: [gP1eXXXX ...
- 微信小程序发送模板消息
微信小程序发送模板消息 标签(空格分隔): php 看小程序文档 [模板消息文档总览]:https://developers.weixin.qq.com/miniprogram/dev/framewo ...
- .NET微信公众号开发-6.0模板消息
一.前言 为了保证用户不受到骚扰,在开发者出现需要主动提醒.通知用户时,才允许开发者在公众平台网站中模板消息库中选择模板,选择后获得模板ID,再根据模板 ID向用户主动推送提醒.通知消息.这个意思也就 ...
- 微信小程序-发送模板消息(C#)
步骤一:获取模板ID 有两个方法可以获取模版ID 通过模版消息管理接口获取模版ID 在微信公众平台手动配置获取模版ID 步骤二:页面的 <form/> 组件,属性report-submit ...
- 微信小程序的模板消息与小程序订阅消息
小程序订阅消息 功能介绍 消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验. 订阅消息推送位置:服务通知 订阅消息下发条件:用户自主订阅 订阅消息卡片跳 ...
随机推荐
- HTML5拖放
HTML5拖放 <!doctype html> <html> <head> <meta charset="UTF-8"> <t ...
- JQUERY1.9学习笔记 之基本过滤器(九) 小于选择器
小于选择器 jQuery( ":lt(index)" ) jQuery( ":lt(-index)" ) 描述:选择所有小于指定下标的元素. <!DOCT ...
- Scut:通用配置管理器
1. 配置节 ConfigSection private List<ConfigNode> _configNodes; public class ConfigNode { public C ...
- Linux的时钟管理
本文转自博客园zhenwenxian的Linux时间管理,很详细,写得很不错,对初学者还是有很大帮助的. 时间管理在内核中占有非常重要的地位.相对于事件驱动,内核中有大量的函数都是基于时间驱动的.内核 ...
- 转:Centos6.3添加解码器播放MP3和常见视频音频
原文来自于:http://blog.csdn.net/odaynot/article/details/8462273 参考地址: http://wiki.centos.org/AdditionalRe ...
- ISO14443-4块传输协议的实现
ISO1444-3块传输协议主要用于应用数据的传输,其实现如下: unsigned char Apdu(unsigned char *comm,unsigned short len,unsigned ...
- 关于如何将C语言源文件转化为汇编文件
--转载自:http://blog.21ic.com/user1/6088/archives/2010/68469.html 方法:(假设当前工程中只有一个C代码文件) 第1步:新建一个工程,添加C文 ...
- 【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备
背景 硬件要求1:PS3 手柄 + 手柄配套的USB线 硬件要求2:已经获得 ROOT 权限并且支持蓝牙的安卓设备 软件要求1:Sixaxis Compatibility Checker PS3 手柄 ...
- AWK中几个变量
学习AWK语言 https://awk.readthedocs.org/en/latest/chapter-one.html http://www.ibm.com/developerworks/cn/ ...
- 使用 FreeMarker 替换 JSP 的 10 个理由
你还在使用 Java 服务器页面(俗称JSP)吗?我曾经也是,但是几年前我抛弃了它们,并且再也没有用过JSP了.JSP 是个很好的概念,但是它却剥夺了 web 开发的乐趣. 对我而言,这些都是小事,比 ...