您的位置:首页 > 移动开发 > 微信开发

微信公众号开发之微信模板消息

2015-07-27 14:44 766 查看
前言  模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。具体模板消息运营规则请读模板消息运营规范关于使用规则,请注意:
1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
3、在所选择行业的模板库中选用已有的模板进行调用;
4、每个账号可以同时使用15个模板。
5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制。【2014年11月18日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。当账号粉丝数超过10W/100W/1000W时,模板消息的日调用上限会相应提升,以公众号MP后台开发者中心页面中标明的数字为准。

关于接口文档,请注意:
  1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容;
  2、模板中参数内容必须以".DATA"结尾,否则视为保留字;
  3、模板保留符号"{{}}"。

一、首先我们要在公众号里面添加我们所需要用到的模板,先假设您已经在MP中设置好了所属行业;  

  下面这张图就是领取成功通知的模板,我们必须按照这个模板提供的字段来发送消息
二、然后我们要定义一些请求模板消息时所要使用的实体类
///<summary>
///公众号模板消息
///</summary>
publicclassTemplateMessage
{
publicTemplateMessage()
{
topcolor="#FF0000";
}
///<summary>
///接收者微信OpenId
///</summary>
publicstringtouser{get;set;}
///<summary>
///模板Id
///</summary>
publicstringtemplate_id{get;set;}
///<summary>
///跳转url
///</summary>
publicstringurl{get;set;}
///<summary>
///顶部颜色
///</summary>
publicstringtopcolor{get;set;}
///<summary>
///具体模板数据
///</summary>
publicobjectdata{get;set;}
}
数据项data:
publicclassTemplateDataItem
{
///<summary>
///项目值
///</summary>
publicstringvalue{get;set;}
///<summary>
///16进制颜色代码,如:#FF0000
///</summary>
publicstringcolor{get;set;}///<summary>
///
///</summary>
///<paramname="v">value</param>
///<paramname="c">color</param>
publicTemplateDataItem(stringv,stringc="#173177")
{
value=v;
color=c;
}
}
这里就是我们上面在公众号中添加的一些模板:
publicclassMessageTemplate
{
///<summary>
///领取通知消息模板(优惠券领取成功通知)
///</summary>
///<paramname="first">通知标题</param>
///<paramname="keyword1">券名称</param>
///<paramname="keyword2">来源商家</param>
///<paramname="keyword3">过期时间</param>
///<paramname="keyword4">使用说明</param>
///<paramname="remark">备注</param>
///<returns></returns>
publicstaticobjectNoticeTemplate(stringfirst,stringkeyword1,stringkeyword2,stringkeyword3,stringkeyword4,stringremark)
{
vardata=new
{
first=newTemplateDataItem(first,"#3990eb"),
keyword1=newTemplateDataItem(keyword1,"#feb91a"),
keyword2=newTemplateDataItem(keyword2,"#feb91a"),
keyword3=newTemplateDataItem(keyword3,"#feb91a"),
keyword4=newTemplateDataItem(keyword4,"#000000"),
remark=newTemplateDataItem(remark,"#fe5627")
};
returndata;
}///<summary>
///(订单支付成功)消息模板---->>面向消费者
///</summary>
///<paramname="first">标题</param>
///<paramname="orderMoneySum">支付金额</param>
///<paramname="orderProductName">商品信息</param>
///<paramname="Remark">备注</param>
///<returns></returns>
publicstaticobjectNoticeOrderPaySuccess(stringfirst,stringorderMoneySum,stringorderProductName,stringRemark)
{
vardata=new
{
first=newTemplateDataItem(first,"#3990eb"),
orderMoneySum=newTemplateDataItem(orderMoneySum,"#feb91a"),
orderProductName=newTemplateDataItem(orderProductName,"#feb91a"),
Remark=newTemplateDataItem(Remark,"#fe5627")
};
returndata;
}///<summary>
///(新订单通知)消息模板---->>面向商家
///</summary>
///<paramname="first">消息标题</param>
///<paramname="keyword1">下单时间</param>
///<paramname="keyword2">配送地址</param>
///<paramname="keyword3">订单金额</param>
///<paramname="keyword4">订单备注</param>
///<paramname="remark"></param>
///<returns></returns>
publicstaticobjectNoticeOrderPaySuccess(stringfirst,stringkeyword1,stringkeyword2,stringkeyword3,stringkeyword4,stringremark)
{
vardata=new
{
first=newTemplateDataItem(first,"#3990eb"),
keyword1=newTemplateDataItem(keyword1,"#feb91a"),
keyword2=newTemplateDataItem(keyword2,"#feb91a"),
keyword3=newTemplateDataItem(keyword3,"#feb91a"),
keyword4=newTemplateDataItem(keyword4,"#000000"),
remark=newTemplateDataItem(remark,"#fe5627")
};
returndata;
}
}
还有一个消息发送之后微信返回码的一个实体:
///<summary>
///JSON返回结果(用于微信响应接口等)
///</summary>
publicclassWxJsonResult
{
publicReturnCodeerrcode{get;set;}
publicstringerrmsg{get;set;}
}
///<summary>
///发送模板消息结果
///</summary>
publicclassTemplateMessageResult:WxJsonResult
{
///<summary>
///msgid
///</summary>
publicintmsgid{get;set;}
}
三、所有实体建好之后我们就需要去写发送模板消息的服务了;
1publicclassSendTemplateMessageService
{
///<summary>
///公众号相关信息
///</summary>
privateconststringAppId="wxabcde123456xyz";
privateconststringAppSecret="25633c23232d23gc0000d93428b1234";
///<summary>
///发送模板消息API
///</summary>
privateconststringSendMessageApi="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}";
///<summary>
///获取用信息API
///</summary>
privateconststringGetBaseUserInfoApi="https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN";
///<summary>
///公众号发送模板消息方法
///</summary>
///<paramname="appId"></param>
///<paramname="appSecret"></param>
///<paramname="templateId">模板ID</param>
///<paramname="openId">微信openId</param>
///<paramname="url">点击详情跳转路径</param>
///<paramname="data"></param>
publicstaticvoidSendTemplateMessage(stringtemplateId,stringopenId,stringurl,objectdata)
{
varaccessToken=AccessTokenContainer.TryGetToken(AppId,AppSecret);
vargetInfoUrl=string.Format(GetBaseUserInfoApi,accessToken,openId);
varuserInfo=HttpClientHelper.GetResponse<WeixinUserInfoResult>(getInfoUrl);
//判断用户是否关注公众号
switch(userInfo.subscribe)
{
case0:
break;
default:
varsendUrl=string.Format(SendMessageApi,accessToken);
varmsg=newTemplateMessage
{
template_id=templateId,
touser=openId,
url=url,
data=data
};
//序列化实体为json
stringjson=JsonConvert.SerializeObject(msg,newJsonSerializerSettings{NullValueHandling=NullValueHandling.Ignore});//调用消息发送接口
varresult=HttpClientHelper.PostResponse<TemplateMessageResult>(string.Format(sendUrl,accessToken),json);
LoggerHelper.Log(string.Format("【微信公众号发送模板消息接口调用】返回参数:errcode:{0},erromsg:{1},misgid:{2}",result.errcode,result.errmsg,result.msgid));
break;
}
}
}
四、最后一步就是调用我们上面的这个方法发送模板消息了
//判断是否是在微信浏览器中
if(isWechat)
{
varurl="http://m.xdd.wquan.cn/findcp";
varendDate="2015年08月20日";
varfirst=string.Format("恭喜您,获得了100元现金抵用券");
varkeyword4=StrUtil.HtmlDiscode(ecList.ECouponDetail.Usage);
varremark="点击“详情”查看优惠券,欢迎再次使用享叮当!";
//得到所需要的模板数据
vardata=MessageTemplate.NoticeTemplate(first,ecList.ProductName,ecList.CorpName,endDate,keyword4,remark);
//调用发送模板消息的方法,模板Id存储在config中
SendTemplateMessageService.SendTemplateMessage(noticeTemplateId,oAuthAccessTokenResult.openid,url,data);
}
最后来看一下效果:微信模板消息其实就这么简单!


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: