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 = 10;//设置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(7000), System.Web.Caching.Cache.NoSlidingExpiration); } string Access_tokento = Access_token.Substring(17, Access_token.Length - 37); //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(6,8)+ "\",\"color\":\"#173177\"},\"remark\":{\"value\":\"如需再次修改密码,请点击进入!!\",\"color\":\"#173177\"}} }"; string result = wxs.GetPage(url, postData);
1.template_id:官网后台直接复制的,
至于怎么添加的模板,官网有介绍不罗嗦。完成。