我们需要将一些行为的进展消息推送给用户。除了短信,发送微信模板消息也是不错的选择。模板消息免费、精准到达、而且可以引导用户回到网站上来。但它有两个前提条件。1个是认证的服务号,你才能选择模板。2个是被推送的用户必须关注了你的公众号,而且你也拿到了他的openid。

先在模板库中找到自己的想要的模板,添加到“我的模板”中。

展开详情,我们可以看到示例。接下来用C#代码发送一次:

从官方文档的示例中我们可以看到除了推送人的openid,还可以设置每个字段的颜色及跳转地址。先可以定义以个TempModel对象:

  public class TemplateModel{public string touser { get; set; }public string template_id { get; set; }public string url { get; set; }public string topcolor { get; set; }public TemplateData data { get; set; } public TemplateModel(string hello,string state,string reason,string last){data=new TemplateData(){first = new TempItem(hello),keyword1 = new TempItem(state),keyword2 = new TempItem(reason),remark = new TempItem(last)};}}public class TemplateData{public TempItem first { get; set; }public TempItem keyword1 { get; set; }public TempItem keyword2 { get; set; }public TempItem remark { get; set; }}public class TempItem{public TempItem(string v,string c = "#173177"){value = v;color = c;}public string value { get; set; }public string color { get; set; }}

还有一个返回结果对象:

 public class OpenApiResult{public int error_code { get; set; }public string error_msg { get; set; }public string msg_id { get; set; }}

然后定义一个发送方法:

using SendHelp= Senparc.Weixin.CommonAPIs.CommonJsonSend;public OpenApiResult SendTemplateMessage(string token,TemplateModel model){var url = string.Format("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}", token);try{var res = SendHelp.Send<OpenApiResult>(token, url, model);return res;}catch (Exception e){return new OpenApiResult(){error_code = -1,error_msg = e.Message};}} 

SendHelp是基于Senparac.Weixin 最后就可以调用了:

        public ActionResult SendMessage(){var token = getToken();var toUserId = "oBSBmwQjqwjfzQlKsFNjxFLSiIQM";var data = new TemplateModel("你好,stoneniqiu","审核通过","资料完整","祝你生活幸福!");data.touser = toUserId;data.template_id = "gXmkeL7Kc-KUy2EQzKqjPKY-kzFyatTztiYFKCaUPO4";data.url = "http://www.xxx.com/xx/xx";data.topcolor = "#FF0000";var res=wxDeviceService.SendTemplateMessage(token, data);return View(res);}

token即通过AppID和APPSECRET获取。发送之后,手机上马上收到消息。这里的url就是下图详情的跳转地址。 只能是注册域名下面的地址,不能跳到别的域名去。

但如果你只是拿到了用户的openid,但该用户没有关注公众号,发送时会抛出下面的错误:

其他信息: 微信Post请求发生错误!错误代码:43004,说明:require subscribe hint: [Q2OfvA0092ge21]

相关部分代码:http://files.cnblogs.com/files/stoneniqiu/wx-template.zip

官方文档:https://mp.weixin.qq.com/advanced/tmplmsg?action=faq&token=1798469214&lang=zh_CN

全部错误类型:http://www.szdyhd.com/news/view/webdesign/2016/0614/519.html

【微信开发】-- 发送模板消息相关推荐

  1. 微信公众平台开发-发送模板消息

    微信公众账号开发-发送模板消息: 内容概要 本篇文章主要叙述如何在微信公众帐号上实现"发送模板消息开发"功能.包含json的封装与解析. 何谓模板消息 为了保证用户不受到骚扰,在开 ...

  2. 微信公众账号开发-发送模板消息

    内容概要 本篇文章主要叙述如何在微信公众帐号上实现"发送模板消息开发"功能.包含json的封装与解析. 何谓模板消息 为了保证用户不受到骚扰,在开发者出现需要主动提醒.通知用户时, ...

  3. PHP微信模版消息有时收不到_PHP微信开发之模板消息回复

    微信公众平台上,有个模板消息回复接口:可以用来实现回复特定的消息-----比如用户下了订单之后,回复给用户您的订单正在处理中...比如下面这张图: 用户进行了一些操作之后,服务号能够返回特定的消息-- ...

  4. (Java)微信公众号发送模板消息

    模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息. 1.模板消息调用时主要 ...

  5. php公众号模板消息群发,微信公众平台|模板消息群发功能

    小编之前发布过一篇"微信公众平台开发|发送模板消息"的文章,这篇只是发送给某个用户的,那么如何群发给关注该公众号的所有用户呢?下面我们来探讨一下. 最近关注了一个公众号,偶尔会给我 ...

  6. 公众号 接收规则 消息_微信公众平台 发送模板消息(Java接口开发)

    前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西.今天先总结一下微信公众平台模板消息的发送.因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下. 微信公众平台技术 ...

  7. java 模板接口开发_微信公众平台 发送模板消息(Java接口开发)

    前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西.今天先总结一下微信公众平台模板消息的发送.因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下. 微信公众平台技术 ...

  8. 微信公众平台开发-消息管理-发送模板消息

    一.模板说明 模板消息是在特定服务场景中向粉丝发送的消息,例如:信用卡刷卡通知,商品购买成功通知.不同的模板有不同的风格,某些字段可以由你来填充自己的内容(同时设定颜色),从而形成自己的消息.微信公众 ...

  9. java 微信开发收到乱码,微信公众号发送模板消息中文乱码(java)

    使用 restTemplate 发送. /** * 微信模板类 */ @Data public class WeChatTemplate implements Serializable { priva ...

  10. PHP+TP框架实现微信公众号开发之发送模板消息

    一:准备工作. 1.将需要使用到的微信配置放在config.php配置文件中方便获取.(我使用的是微信测试号) return array(//'配置项'=>'配置值''appID'=>'w ...

最新文章

  1. 超干货3D视觉技术分享+人才内推!独角兽奥比中光与你相约VALSE 2021
  2. JDBC - 开发实例 - MVC模式
  3. 对图像进行二维离散Fourier变换
  4. 计算机二级基础知识 文库,计算机二级公共基础知识(全)
  5. alias怎么每次登陆都保存_alias命令使用说明
  6. Thinkphp 发送邮件
  7. const在c语言中作用,在C语言中const作用全面总结.doc
  8. matlab的一些关于块分类的函数~~~
  9. python数据结构剑指offer-反转链表
  10. git bash linux 命令,Git Bash的妙用 - 使用Linux命令
  11. djano 字段不重复_硬不硬你说了算!近 40 张图解被问千百遍的 TCP 3 次握手和 4 次挥手面试题...
  12. Win7使用之查端口,杀进程
  13. 计算机论文的字体要求,论文格式及字体大小要求(标准)
  14. 手把手带你玩转Spark机器学习-深度学习在Spark上的应用
  15. 51单片机定时器与流水灯
  16. 解构2019世界人工智能大会:三大变化,十年趋势,一场地球与火星的碰撞
  17. matlab方波经过低通滤波,方波滤波matlab的实现
  18. ansible之判断语句jinja2模板的使用 与roles角色的配置使用
  19. 前端vue使用vue-socket.io与socket.io-client与后台使用netty-socketio建立实时通信
  20. c语言led左右循环程序,c语言编写程序,将led从左往右,再从右往左依次往返点亮...

热门文章

  1. 使用Fsharp 探索 Dotnet 平台
  2. vs2005常用快捷键_包括代码自动缩进
  3. C++内存管理变革(3):另类内存管理
  4. BCG-MFC 库对《支持重新启动管理器》都做了些什么
  5. 软考信息系统项目管理师_管理科学(运筹学)---软考高级之信息系统项目管理师033
  6. IOS工作笔记001---windows下安装通过VmWare来安装IOS系统_并连接上网_来吧超级详细
  7. Web前端工作笔记003---Javascript 解决IE8不支持filter、map的方法
  8. SpringCloud学习笔记001-SpringCloud_001_SpringCloud简介_单体架构_微服务架构_服务注册与发现_微服务调用关系
  9. ASP.Net学习笔记012--12ViewState初探
  10. Linux防火墙端口设置和mysql端口开放的navicat整合