微信公众号跳转小程序失败 new WxMpTemplateMessage.MiniProgram
公司去年营收不太好,最近开始疯狂裁员,近一个月大概裁了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相关推荐
- 微信公众号跳转小程序 wx-open-launch-weapp (最全指南及坑)
微信公众号使用 wx-open-launch-weapp 开放标签跳转小程序 注意事项 微信开放标签有最低的微信版本要求,以及最低的系统版本要求. 微信版本要求为:7.0.12及以上 系统版本要求为: ...
- 微信公众号跳转小程序方法
1 公众号需要关联小程序 2 跳转方法: wx.navigateToMiniProgram(Object object) 打开另一个小程序 wx.navigateToMiniProgram({app ...
- php 微信公众号跳转小程序,微信公众号菜单添加小程序miniprogrampagepath参数详解php开发公众号-小程序怎么放到公众号菜单里-公众号菜单链接小程序...
1. 随着微信小程序功能的开发,2. 已经可以跟公众号打通了,3. 主要有两种方式:4. 1)在公众号文章中插入小程序5. 2)在公众号菜单中添加小程序6. 第一种方式,7. 子恒老师在前面的课程已经 ...
- 微信公众号跳转小程序流程简单梳理(未完待续)
功能需求:公众号跳转至小程序 一.准备工作 1.申请测试号 http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo& ...
- uniapp 微信公众号跳转小程序的各种坑
一.引进js http://res2.wx.qq.com/open/js/jweixin-1.6.0.js import wx from "jweixin-module"; let ...
- php 微信公众号跳转小程序,微信小程序页面跳转功能
本文主要介绍微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法,结合具体实例形式总结分析了微信小程序页面跳转及列表item项跳转页面的相关操作技巧,需要的朋友可以参考下. 一.效果图 从 ...
- 微信公众号跳转小程序 wx-open-launch-weapp(h5)
一:在vue3中使用 <wx-open-launch-weapp@launch="onlaunch"@error="onerror"path=" ...
- 微信小程序如何跳转到微信公众号文章,小程序如何关联公众号或订阅号
微信小程序如何跳转到微信公众号文章,小程序如何关联公众号或订阅号 前置条件 公众号最高管理权限(或能与最高权限管理者配合操作) 小程序开发权限或最高管理权限 小程序方面 根据官方资料描述,小程序中展示 ...
- vue代码怎么变成小程序_使用vue编写h5公众号跳转小程序的实现代码
前言:我使用vue编写的h5公众号,实现点击小程序入口,打开小程序,微信官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_App ...
- 公众号跳转小程序首次没有数据_小程序如何从“0”开始运营,变成获客神器...
随着发展,越来越多的企业都感觉到获客难,获客成本高.而小程序的诞生恰恰解决了这些问题.合理的利用小程序的功能,可以帮助商家低成本高效获客,今天我们就来谈谈具体怎么用小程序来拉新引流. 合理的利用小程序 ...
最新文章
- 设计模式——3单例模式(Singleton)
- 编写uwsgi后台启动文件
- Unity下个月将推出开源VR编辑器,让VR内容开发so easy
- 孙叫兽进阶之路之源代码配置管理过程(图文教程)
- iQOO 8系列即将登场:首发三星E5 AMOLED全面屏
- Maven实战(四)——基于Maven的持续集成实践
- 敏捷个人A1组第二次讨论纪要 你在事业上打算何去何从?
- c语言开发gc,GC的基本原理
- 阿里云DataV基础平面地图使用笔记(2)
- 24点之5 7 7 11
- 个人网站、公众号申请微信个人支付接口
- Your Command Line Tools are too outdated
- SQL Server 2014下载及安装教程
- 微信小程序自定义picker多列选择器
- CDR中人民币符号怎么打
- JPA实现领域驱动设计(DDD) 中值对象的持久化
- 【一起去北碚玩吧】->【我们从北碚回来了】
- LaTeX 页面设置 插入代码
- 将SQL server2019数据库部署在虚拟机上
- 怎样检查mysql是否安装成功_怎么检验mysql安装成功
热门文章
- 雷电模拟器Android obb,exagear模拟器数据obb包
- Excel常用公式之LOOKUP
- 饥荒dns服务器未响应,DNS服务器未响应怎么办
- Unity 资源包导入报错 “Substance engine failed to load“
- VBA自动创建数据透视表
- hp台式计算机u盘启动设置,惠普台式机U盘启动BIOS设置的方法教程
- 【转载】Altera FPGA使用通用SPI Flash(代替EPCS的方法)
- JAVA 循环结构while简单方法使用
- 以《西游记》为例 详解游戏设计归纳演绎法
- 解决 invalid DSN: missing the slash separating the database name