目录

  • 1 开发中遇到的问题汇总
  • 2 模板消息创建
  • 3 调试接口
    • 3.1 微信公众号消息模板
      • 3.1.1 基本信息
    • 3.2 请求参数
      • 3.2.1 Query参数及说明
      • 3.2.2 body参数及说明
  • 4 测试结果
  • 5 工具类封装
  • 6 常见问题

1 开发中遇到的问题汇总

首先是在测试中,遇到最多的就是41003->appid错误,然后就是40165,说什么page和pagepath,其实就是线上和体验的问题,反正不管怎么改发出去就行,跳转到正确的页面即可,但是大问题是:公众号的文档然后里面发送模板消息是小程序的,然后一直就是appid错误,然后突然发现还有个文档,修改body后测试成功.按照我的方式是肯定成功的,因为有的博客都是从官方文档抄一遍测都不测.


2 模板消息创建

3 调试接口

3.1 微信公众号消息模板

3.1.1 基本信息

  • 接口状态: 开发中
  • 接口URL: https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=49_pWR_MJBhGBi97IMi0pzXqkxphglh9YzKPs8Wu962QjtVeVL1MbnTLHTL11mUMPFrhJMjPTB6OGvmzcs9w1MJG8xQVbhFalmh5K7WtOHLR7pQDhupwLCKkQGrqsb8sy-OIAkDr2CzWtQVlBOIRTNdAGAEGA
  • 请求方式: POST
  • Content-Type: application/json

3.2 请求参数

3.2.1 Query参数及说明

参数名 示例值 参数类型 是否必填 参数描述
access_token 49_pWR_MJBhGBi97IMi0pzXqkxphglh9YzKPs8Wu962QjtVeVL1MbnTLHTL11mUMPFrhJMjPTB6OGvmzcs9w1MJG8xQVbhFalmh5K7WtOHLR7pQDhupwLCKkQGrqsb8sy-OIAkDr2CzWtQVlBOIRTNdAGAEGA 暂无描述

3.2.2 body参数及说明

{"touser": "oUtXT6JTkW8oeQbRb-wBe9CMucyU","template_id": "Eeh7tc4SiJ9W49QSyjTeuCgscRTjBq_DEmf1BNmq_VU","url": "http://weixin.qq.com/download","topcolor": "#FF0000","data": {"first": {"value": "恭喜你购买成功!","color": "#173177"},"keyword1": {"value": "巧克力","color": "#173177"},"keyword2": {"value": "39.8元","color": "#173177"},"keyword3": {"value": "2014年9月22日","color": "#173177"},"remark": {"value": "欢迎再次购买!","color": "#173177"}}
}

4 测试结果


其实开发过程中并不是很复杂,只是文档有一些问题,容易歧义

5 工具类封装

// 获取tokenString token = saveAndFlushAccessTokenUtil.getToken();String postUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;JSONObject jsonObject = new JSONObject();jsonObject.put("touser", "发送到用户的openid");   // openidjsonObject.put("template_id", "你的模板id");jsonObject.put("url", "http://www.baidu.com");JSONObject data = new JSONObject();JSONObject first = new JSONObject();first.put("value", "hello");first.put("color", "#173177");JSONObject keyword1 = new JSONObject();keyword1.put("value", "hello");keyword1.put("color", "#173177");JSONObject keyword2 = new JSONObject();keyword2.put("value", "hello");keyword2.put("color", "#173177");JSONObject keyword3 = new JSONObject();keyword3.put("value", "hello");keyword3.put("color", "#173177");JSONObject remark = new JSONObject();remark.put("value", "hello");remark.put("color", "#173177");data.put("first",first);data.put("keyword1",keyword1);data.put("keyword2",keyword2);data.put("keyword3",keyword3);data.put("remark",remark);jsonObject.put("data", data);String string = HttpClientUtils.sendPostJsonStr(postUrl, jsonObject.toJSONString());JSONObject result = JSON.parseObject(string);int errcode = result.getIntValue("errcode");if(errcode == 0){// 发送成功System.out.println("发送成功");} else {// 发送失败System.out.println("发送失败");}

6 常见问题

有时候你会发现你的jsonobject中进行转字符串会被转义,然后发出去的模板消息读不到内容,可能是因为你放入的Json字符串,之后又进行了一次jsonObject.toJSONString(),之后就被转义了,建议就是把所有的Json放入到一个jsonObject,最后合并时在进行jsonObject.toJSONString().

以下为测试代码:最终的话被转义的内容是空白!

  @ApiOperation(value = "测试发送微信公众模板消息", notes = "测试发送微信公众模板消息")@GetMapping("/sendMsg")public ResponseEntity sendMsg() throws ApiException {com.alibaba.fastjson.JSONObject jsonObject=new com.alibaba.fastjson.JSONObject();com.alibaba.fastjson.JSONObject jsonObjectValue = new com.alibaba.fastjson.JSONObject();jsonObjectValue.put("value","oldlu");jsonObjectValue.put("color","#173177");com.alibaba.fastjson.JSONObject firstValue = new com.alibaba.fastjson.JSONObject();firstValue.put("value","oldlu");firstValue.put("color","#173177");jsonObject.put("first",firstValue.toJSONString());com.alibaba.fastjson.JSONObject keyword1Value = new com.alibaba.fastjson.JSONObject();keyword1Value.put("value","oldlu");keyword1Value.put("color","#173177");jsonObject.put("keyword1",keyword1Value.toString());com.alibaba.fastjson.JSONObject keyword2Value = new com.alibaba.fastjson.JSONObject();keyword2Value.put("value","oldlu");keyword2Value.put("color","#173177");jsonObject.put("keyword2",keyword2Value);com.alibaba.fastjson.JSONObject keyword3Value = new com.alibaba.fastjson.JSONObject();keyword3Value.put("value","oldlu");keyword3Value.put("color","#173177");jsonObject.put("keyword3",keyword3Value);com.alibaba.fastjson.JSONObject remarkValue = new com.alibaba.fastjson.JSONObject();remarkValue.put("value","oldlu");remarkValue.put("color","#173177");jsonObject.put("remark",remarkValue);JSONObject jsonResponse= WeChatMpUtil.sendTemplate("oUtXT6DbS3tA_eeMaUVZvN66ezTs", "Eeh7tc4SiJ9W49QSyjTeuCgscRTjBq_DEmf1BNmq_VU", jsonObject, "http://www.baidu.com/");return ResponseEntity.ok(jsonResponse);}

toString和toJsonString其实是一样(源码):

微信公众号发送模板消息相关推荐

  1. springboot微信公众号发送模板消息

    springboot微信公众号发送模板消息 1.准备工作 申请你所需要模板 配置ip白名单(你所需要部署的服务器ip) 2.编写模板消息的请求参数封装类 import java.util.HashMa ...

  2. php 微信模板消息url,【求助】php 微信公众号 发送模板消息改变不了颜色

    php 微信公众号 发送模板消息改变不了颜色 不知道为什么 1.模板消息内容: 2.发送的模板消息效果: 序列化的模板消息内容如下: 大家可以测试下,touser需要另外添加下 a:4:{s:11:& ...

  3. 微信公众号 发送模板消息和获取关注公众号人数

    微信公众号发送模板消息 1.创建模板,拿到模板ID 2.创建发送消息工具类 import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JS ...

  4. php之微信公众号发送模板消息

    讲一下开发项目中微信公众号发送模板消息的实现过程(我用的还是Thinkphp5.0).先看一下效果,如图: 就是类似于这样的,下面讲一下实现过程: 第一步:微信公众号申请模板消息权限: 立即申请: 申 ...

  5. 使用微信公众号发送模板消息

    使用微信公众号 API 本文所有内容均使用微信公众号测试号平台来演示 打开公众平台的测试号管理页面后我们可以在页面中看到测试号的信息 图中的 appId 和 appSecret 就是我们需要用到的 图 ...

  6. 微信公众号 java发送消息_微信公众号发送模板消息 Java实现。

    本博文是测试公众号调用模板接口测试.请不要完全复制我的代码.里面的测试代码中有本人测试号的微信模板id.麻烦替换成自己的可以吗? 第一步:创建模板信息 第二步:准备模板代码实体类用到的属性自行加入就行 ...

  7. 微信开放平台(第三方平台)代替微信公众号发送模板消息(基于lavarel框架开发,EasyWeChat)

    1.公众号必须得把模板消息授权到第三方平台. 2.我用的是 EasyWeChat 3.通过接口修改账号所属行业 (实质上就是开通模板消息) //修改账号所属行业public function set_ ...

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

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

  9. .Net Core 3.1实现微信公众号发送模板消息,且跳转微信小程序

    .Net Core 3.1开发微信相关 背景 微信公众号和小程序关联 微信小程序获取UnionId及OpenId 微信公众号获取UnionId及OpenId 背景 公司需要将内部产品的审批放到微信小程 ...

  10. tp5微信公众号发送模板消息

    ``话不多说直接贴代码(公众号设置模板id看官方文档 ) <?php namespace app\admin\controller; use think\Controller; use thin ...

最新文章

  1. iOS指示器之UIProgressView和UIPageControl
  2. c语言程序朴素贝叶斯分类器,生成式学习算法(四)之----朴素贝叶斯分类器
  3. 短文件名漏洞如何修复_短文件名漏洞修复
  4. Web框架——Flask系列之Flask-SQLAlchemy数据库的基本操作(九)
  5. 3Dcnn 降假阳性模型调试(八)
  6. PhotoshopCS5中将单位修改成百分比
  7. abaqus实例手册_ABAQUS例子问题手册目录.pdf
  8. Java 合并 取消合并 Excel 单元格
  9. 学习笔记(13):MATLAB基础入门课程-kron函数
  10. 厦门大学2019年数学分析考研试题
  11. CCCF“CNCC2017特邀报告”丘成桐:现代几何学与计算机科学
  12. 深信服邮件服务器配置,使用深信服设备实现邮件服务器高可用
  13. 【报告分享】抖音企业号操作指南-巨量引擎(附下载)
  14. 经典车间生产调度问题模型及其算法 目录
  15. 【解决方案】云看大熊猫,动物园直播解决方案EasyNVR+EasyNVS如何玩转动物IP
  16. 浏览器类应用后台耗电解析 教你三招让手机更省电!
  17. 【MySQL】MVCC多版本并发控制(重点:MVCC实现原理之ReadView)
  18. 洛谷P2404 自然数的拆分问题
  19. c语言void返回什么意思,C语言程序返回值是void什么意思?
  20. thinkphp设计模式讲解

热门文章

  1. maven 绑定html压缩,Maven使用yuicompressor-maven-plugin打包压缩css、js文件
  2. 计算机硬盘容量的最小单位,计算机中存储数据的最小单位和存储容量的基本单位各是什么?...
  3. 西北工业大学计算机专业课考什么,西北工业大学西工大计算机考研经验
  4. 百度的71个炸天的开源项目
  5. Win10安装动易5.9故障记录
  6. extjs java 教程_[Java教程]ExtJS 第一个程序
  7. 优秀ui设计网站分享整理
  8. 艾默生变频器报警PHP,艾默生/Emerson变频器启动就报警维修很牛
  9. 安卓linux开机画面,Android开机logo简单修改方法
  10. 10月24日杨力祥老师谈话有感[转]