公司去年营收不太好,最近开始疯狂裁员,近一个月大概裁了6-8个前端,4-5个产品。(开发一共也就60~70人)
公司福利待遇本来就不好,过年后又开始压榨员工了,晚上九点下班、周六加班成为常有的事了。
同班同学搞安卓,11K,965不加班,对比起来就emo了。。还遇到个3-5年的脑残前端,对个接口都对不好,态度极其恶劣。也就随便吐槽一点,多学习,争取早点跳槽吧。

回到正题

项目中有一个微信消息推送的功能。
微信开发文档-模板消息
使用的是GitHub上大神封装的SDK

遇到的问题1:微信公众号的accessToken有效期为7200秒,一天只能获取2000次,项目中并没有引入redis,那么如果避免频繁获取accessToken?

解决办法:将配置信息存储在WxMpConfigStorage类中,再注入到Spring。

官方示例:

@Test(invocationCount = 5, threadPoolSize = 3)public void testSendTemplateMsg() throws WxErrorException {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");TestConfigStorage configStorage = (TestConfigStorage) this.wxService.getWxMpConfigStorage();WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder().toUser(configStorage.getOpenid()).templateId(configStorage.getTemplateId()).url(" ").build();templateMessage.addData(new WxMpTemplateData("first", dateFormat.format(new Date()), "#FF00FF")).addData(new WxMpTemplateData("remark", RandomStringUtils.randomAlphanumeric(100), "#FF00FF"));String msgId = this.wxService.getTemplateMsgService().sendTemplateMsg(templateMessage);Assert.assertNotNull(msgId);System.out.println(msgId);}

自己的代码实现:

@Component
public class WechatMpConfig {// WechatAccountConfig实际上是一个配置信息类// 主要作用是从nacos上读取配置信息@Autowiredprivate WechatAccountConfig wxAccountConfig;/*** 声明实例*/@Beanpublic WxMpService wxMpService(WxMpConfigStorage wxConfigProvider) {WxMpService wxMpService = new WxMpServiceImpl();wxMpService.setWxMpConfigStorage(wxConfigProvider);return wxMpService;}/*** 微信客户端配置存储*/@Beanpublic WxMpConfigStorage wxConfigProvider() {WxMpDefaultConfigImpl wxMpConfigStorage = new WxMpDefaultConfigImpl();// 公众号的appIdwxMpConfigStorage.setAppId(wxAccountConfig.getAppId());// 公众号appSecretwxMpConfigStorage.setSecret(wxAccountConfig.getSecret());// 公众号TokenwxMpConfigStorage.setToken(wxAccountConfig.getToken());return wxMpConfigStorage;}
}

发送消息时

    @Resourceprivate WxMpService wxMpService;// 发送消息的配置信息、内容自行替换掉public void send(){WxMpTemplateMessage wxMpTemplateMessage = WxMpTemplateMessage.builder().toUser(openId).templateId(templateId).miniProgram(new WxMpTemplateMessage.MiniProgram(basicConfig.getMiniWxAppId(), "pages/index/auth?push=" + urlEncode, false)).build();wxMpTemplateMessage.addData(new WxMpTemplateData("first", "尊敬的家长,您的孩子有了新的家校成绩", "#EC320")).addData(new WxMpTemplateData("keyword1", achievementMsgDTO.getClassName(), "#272A6C")).addData(new WxMpTemplateData("keyword2", achievementMsgDTO.getTestName(), "#272A6C")).addData(new WxMpTemplateData("remark", "xxxx", "#EC320"));// 直接通过wxMpService来发送消息,无需关注accessTokenString result = wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage);}

问题2:微信公众号发送消息模板,报40013错误。如果不附带小程序的参数是正常推送的。附带了小程序参数的话,说是appid错误。(检查后确认小程序的appid是无误的)。

解决办法:检查公众号和小程序是否进行关联

当时Google出的解决办法是,到微信公众号后台检查公众号是否关联了小程序。我到微信公众号后台检查了,并且确定了关联了小程序。最后和产品确定了才发现,原来没有关联。(因为我们有2个小程序,名字和图标都是十分相似的。要和产品即时沟通!!)

问题3:消息模板附带小程序参数确实是可以发送了,但是无法跳转到小程序的指定页面。

解决办法:

官方示例:

public class WxMpTemplateMessageTest {@Testpublic void testToJson() {WxMpTemplateMessage tm = WxMpTemplateMessage.builder().toUser("OPENID").templateId("ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY").miniProgram(new WxMpTemplateMessage.MiniProgram("xiaochengxuappid12345", "index?foo=bar",true)).url("http://weixin.qq.com/download").build();tm.addData(new WxMpTemplateData("first", "haahah", "#FF00FF"));tm.addData(new WxMpTemplateData("remark", "heihei", "#FF00FF"));assertEquals(tm.toJson(), "{\"touser\":\"OPENID\",\"template_id\":\"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY\",\"url\":\"http://weixin.qq.com/download\",\"miniprogram\":{\"appid\":\"xiaochengxuappid12345\",\"pagepath\":\"index?foo=bar\"},\"data\":{\"first\":{\"value\":\"haahah\",\"color\":\"#FF00FF\"},\"remark\":{\"value\":\"heihei\",\"color\":\"#FF00FF\"}}}");}}

我也的确是按照官方示例进行编写的啊,new WxMpTemplateMessage.MiniProgram中也设为true了。但是就是无法跳转到指定页面,点开MiniProgram的源码,发现了猫腻

这个usePath并不是代表是否开启页面跳转,而是代表发送给微信时,参数名称的不同!!官方中使用的时

可能是我的不细心导致遇到那么多问题吧。。最近也被老大刁的有点多。。sad。。。

微信公众号跳转小程序失败 new WxMpTemplateMessage.MiniProgram相关推荐

  1. 微信公众号跳转小程序 wx-open-launch-weapp (最全指南及坑)

    微信公众号使用 wx-open-launch-weapp 开放标签跳转小程序 注意事项 微信开放标签有最低的微信版本要求,以及最低的系统版本要求. 微信版本要求为:7.0.12及以上 系统版本要求为: ...

  2. 微信公众号跳转小程序方法

    1 公众号需要关联小程序 2 跳转方法: wx.navigateToMiniProgram(Object object)  打开另一个小程序 wx.navigateToMiniProgram({app ...

  3. php 微信公众号跳转小程序,微信公众号菜单添加小程序miniprogrampagepath参数详解php开发公众号-小程序怎么放到公众号菜单里-公众号菜单链接小程序...

    1. 随着微信小程序功能的开发,2. 已经可以跟公众号打通了,3. 主要有两种方式:4. 1)在公众号文章中插入小程序5. 2)在公众号菜单中添加小程序6. 第一种方式,7. 子恒老师在前面的课程已经 ...

  4. 微信公众号跳转小程序流程简单梳理(未完待续)

    功能需求:公众号跳转至小程序 一.准备工作 1.申请测试号 http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo& ...

  5. uniapp 微信公众号跳转小程序的各种坑

    一.引进js http://res2.wx.qq.com/open/js/jweixin-1.6.0.js import wx from "jweixin-module"; let ...

  6. php 微信公众号跳转小程序,微信小程序页面跳转功能

    本文主要介绍微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法,结合具体实例形式总结分析了微信小程序页面跳转及列表item项跳转页面的相关操作技巧,需要的朋友可以参考下. 一.效果图 从 ...

  7. 微信公众号跳转小程序 wx-open-launch-weapp(h5)

    一:在vue3中使用 <wx-open-launch-weapp@launch="onlaunch"@error="onerror"path=" ...

  8. 微信小程序如何跳转到微信公众号文章,小程序如何关联公众号或订阅号

    微信小程序如何跳转到微信公众号文章,小程序如何关联公众号或订阅号 前置条件 公众号最高管理权限(或能与最高权限管理者配合操作) 小程序开发权限或最高管理权限 小程序方面 根据官方资料描述,小程序中展示 ...

  9. vue代码怎么变成小程序_使用vue编写h5公众号跳转小程序的实现代码

    前言:我使用vue编写的h5公众号,实现点击小程序入口,打开小程序,微信官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_App ...

  10. 公众号跳转小程序首次没有数据_小程序如何从“0”开始运营,变成获客神器...

    随着发展,越来越多的企业都感觉到获客难,获客成本高.而小程序的诞生恰恰解决了这些问题.合理的利用小程序的功能,可以帮助商家低成本高效获客,今天我们就来谈谈具体怎么用小程序来拉新引流. 合理的利用小程序 ...

最新文章

  1. 设计模式——3单例模式(Singleton)
  2. 编写uwsgi后台启动文件
  3. Unity下个月将推出开源VR编辑器,让VR内容开发so easy
  4. 孙叫兽进阶之路之源代码配置管理过程(图文教程)
  5. iQOO 8系列即将登场:首发三星E5 AMOLED全面屏
  6. Maven实战(四)——基于Maven的持续集成实践
  7. 敏捷个人A1组第二次讨论纪要 你在事业上打算何去何从?
  8. c语言开发gc,GC的基本原理
  9. 阿里云DataV基础平面地图使用笔记(2)
  10. 24点之5 7 7 11
  11. 个人网站、公众号申请微信个人支付接口
  12. Your Command Line Tools are too outdated
  13. SQL Server 2014下载及安装教程
  14. 微信小程序自定义picker多列选择器
  15. CDR中人民币符号怎么打
  16. JPA实现领域驱动设计(DDD) 中值对象的持久化
  17. 【一起去北碚玩吧】->【我们从北碚回来了】
  18. LaTeX 页面设置 插入代码
  19. 将SQL server2019数据库部署在虚拟机上
  20. 怎样检查mysql是否安装成功_怎么检验mysql安装成功

热门文章

  1. 雷电模拟器Android obb,exagear模拟器数据obb包
  2. Excel常用公式之LOOKUP
  3. 饥荒dns服务器未响应,DNS服务器未响应怎么办
  4. Unity 资源包导入报错 “Substance engine failed to load“
  5. VBA自动创建数据透视表
  6. hp台式计算机u盘启动设置,惠普台式机U盘启动BIOS设置的方法教程
  7. 【转载】Altera FPGA使用通用SPI Flash(代替EPCS的方法)
  8. JAVA 循环结构while简单方法使用
  9. 以《西游记》为例 详解游戏设计归纳演绎法
  10. 解决 invalid DSN: missing the slash separating the database name