微信服务号下可以主动给用户推送小程序卡片,但是得用户授权接受消息才可以,小程序卡片点击即可跳转到小程序中对应的页面

前提是服务号要与小程序绑定,且是同一主体.

1.发送卡片工具类

@Component
public class SendAppletsCard {private static final Logger logger = Logger.getLogger(SendAppletsCard.class.getName());public Integer sendCard(String appletsAppid,String GZHappid,String GZHsecret,String title,String touser,String pagepath,String mediaid){try {Map<String, Object> params = new HashMap<>();params.put("touser", touser);params.put("msgtype", "miniprogrampage");Map<String, Object> miniprogrampageMap = new HashMap<>();miniprogrampageMap.put("title", title);miniprogrampageMap.put("appid", appletsAppid);miniprogrampageMap.put("thumb_media_id", mediaid);miniprogrampageMap.put("pagepath", pagepath);params.put("miniprogrampage", miniprogrampageMap);String token = WechatUtil.getToken(GZHappid, GZHsecret).getAccessToken();logger.info("token:--------"+token);String PUSH_APPLET_URL = AppletsConstant.PUSH_APPLET_URL + token;JSONObject result = WX_HttpsUtil.httpsRequest(PUSH_APPLET_URL, "POST", JSON.toJSONString(params));logger.info(JSON.toJSONString(params)+"jsonString---------------");JSONObject resultJson = new JSONObject(result);logger.info("发送小程序卡片结果:" + resultJson.toString());if(resultJson.getInteger("errcode")==40003){//获取新的token并保存到redis中   重新推消息token = WechatUtil.getToken2(GZHappid, GZHsecret).getAccessToken();logger.info("新token:--------"+token);Map<String, Object> params2 = new HashMap<>();params2.put("touser", touser);params2.put("msgtype", "miniprogrampage");Map<String, Object> miniprogrampageMap2 = new HashMap<>();miniprogrampageMap2.put("title", title);miniprogrampageMap2.put("appid", appletsAppid);miniprogrampageMap2.put("thumb_media_id", mediaid);miniprogrampageMap2.put("pagepath", pagepath);params.put("miniprogrampage", miniprogrampageMap2);String PUSH_APPLET_URL2 = AppletsConstant.PUSH_APPLET_URL + token;JSONObject result2 = WX_HttpsUtil.httpsRequest(PUSH_APPLET_URL2, "POST", JSON.toJSONString(params2));JSONObject resultJson2 = new JSONObject(result2);logger.info("发送小程序卡片结果2:" + resultJson2.toString());return resultJson2.getInteger("errcode");}return resultJson.getInteger("errcode");} catch (Exception e) {e.printStackTrace();return -1;}}
}

2.获取素材列表工具类

public class TestMediaList {public String getMediaId(String appid,String secret){String token = WechatUtil.getToken(appid, secret).getAccessToken();String url = "https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token="+token;WXMediaListUtil media = new WXMediaListUtil();media.setOffset(0);media.setCount(10);media.setType("image");JSONObject json = (JSONObject) JSONObject.toJSON(media);JSONObject result = WX_HttpsUtil.httpsRequest(url,"POST",json.toJSONString());JSONArray arr = result.getJSONArray("item");JSONObject jsonObj = arr.getJSONObject(0);String media_id = jsonObj.get("media_id").toString();return media_id;}
}

3.获取token工具类

    public static Token getToken(String appid, String appsecret) {Token token = null;String redis_token=redisUtil.getData(wechat_token_redis_name+":"+appid);if (null==redis_token){String requestUrl = token_url.replace("APPID", appid).replace("APPSECRET", appsecret);// 发起GET请求获取凭证JSONObject jsonObject = httpsRequest(requestUrl, "GET", null);if (null != jsonObject) {try {token = new Token();token.setAccessToken(jsonObject.getString("access_token"));token.setExpiresIn(jsonObject.getInt("expires_in"));//将微信token保存到redis中,失效时间与token失效时间相同redisUtil.setData(wechat_token_redis_name+":"+appid, token.getAccessToken(), token.getExpiresIn());} catch (JSONException e) {token = null;// 获取token失败log.error("获取token失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));}}}else{token=new Token();token.setAccessToken(redis_token);token.setExpiresIn(7200);}return token;}

代码都是亲测可用的,若有任何疑问请关注"老秦的快乐生活"公众号,获取我的联系方式

发送微信小程序卡片到公众号相关推荐

  1. 50行代码实现的艺术签名设计微信小程序,轻松对接公众号,涨粉神器,学习赚钱两不误.微信公众号引流工具.html,python学习小项目.艺术签名设计微信小程序,前端学习小项目有趣的项目

    50行代码实现的艺术签名设计微信小程序,轻松对接公众号,涨粉神器,学习赚钱两不误 先看效果 这个小程序实现艺术签名设计的功能 对接到公众号之后,相当于给你的公众号添加了一个功能,别人关注公众号后,可以 ...

  2. 微信小程序下获取公众号openId

    微信小程序下获取公众号openId 一.为什么我们需要在小程序下面获取公众号的openId呢? 微信公众号和微信小程序我们一般都会开发,有一种场景我们经常会遇到,公众号的消息推送以较成熟,我们希望把小 ...

  3. 微信小程序可以打开公众号文章

    微信今日晚间发布消息,宣布微信小程序基础能力.开发者工具全面升级,新增多项能力. 基础功能方面: 1.小程序新增打开公众号文章功能.可以打开已关联公众号的文章,不过文章内暂不支持赞赏.广告.关注公众号 ...

  4. 微信小程序跳转公众号图文内容

    显示公众号推文 <web-view src="http://....."></web-view> <!--小程序要绑定公众号--> web-vi ...

  5. 微信小程序跳转公众号

    长按识别跳转 步骤: 新建一个页面使用web-view组件的src链接到公众号编辑好的一篇带有公众号的二维码的文章 微信规则只有小程序关联的公众号里的文章可以长按识别二维码 <template& ...

  6. 关注微信公众号后自动回复微信小程序卡片(认证服务号及海外公众号适用)

    微信小程序是微信的下一个风口. 很多大小公司.企事业单位.甚至有关机关部门都有属于自己的小程序,甚至不止一个. 本文旨在简单说说如何实现关注公众号后之后立刻自动回复小程序卡片,而且可以指定回复任意的小 ...

  7. 微信小程序消息从公众号推送

    2020.06.05更新 新的一年认证续费只需要续费公众号. 小程序可以自动关联认证. 一定要记得!!!!!!! ------------------------------------------- ...

  8. 移动手机网站H5页面如何一键打开拉起微信小程序快速关注公众号功能?

    为了方便自己或公司H5网站页面上,能够让用户一键点击按钮,拉起打开微信小程序.实现让用户快速使用微信小程序功能.让用户快捷方便的关注公众号.快速添加微信客服等功能.可以利用H5链接微信环境外打开微信小 ...

  9. 微信小程序跳转公众号(引导关注)之 使用公众号消息

    1.首先 在微信公众号后台发送一条消息,这条消息你可以定向发送给自己看到就行.如图: 内容里面放生产的公众号二维码:微信会提示你是否生产这个跳转连接,还是只是放二维码 2:第二步 在小程序里面使用 s ...

最新文章

  1. Run Android on Your Netbook or Desktop
  2. POJ 2853 Sequence Sum Possibilities
  3. 记一次SQL Server2005导入Oracle10G的折腾过程【供多种数据库导入导出数据的C#程序源码参考】...
  4. Java中文问题详解
  5. php如何判断提交内容为空,php禁止提交空表单(php空值判断)的方法
  6. c++将文本中的字符串一次读入到内存
  7. 128位计算机 ps2,64位就最强?为啥没有128位电脑?
  8. golang map使用总结
  9. 关于 SQL Server Analysis Services
  10. 手把手教你如何把本地文件传到服务器,如何映射
  11. scala Basic 第三课
  12. POJ2135:Farm Tour
  13. 时间管理的六项基本原则
  14. confluence 制作流程图_怎么利用软件绘制结构示意图 软件流程图绘制
  15. 聊聊测试工程师的核心能力模型
  16. matlab插值拟合
  17. vlc搭建流媒体转发服务器
  18. 关于批量取消微博关注
  19. 清晰的理解大端和小端
  20. glob.glob()函数

热门文章

  1. 逻辑回归实战:从疝气病症预测病马的死亡率
  2. easyui主题样式更换
  3. JAVA后台开发访问第三方接口(GET)
  4. NPOI 生成word文档
  5. 山东大学软件学院操作系统(考试)——期末考试回忆版
  6. 【建议收藏】一文简述半导体封装技术演变史
  7. 这个季节戴腕表,会让你的气质成倍提升!
  8. matlab生成西门子plc源文件,西门子PLC把DB快做成源文件步骤
  9. Vue 从零开始,项目搭建以及一些使用经验
  10. 自定义实现Collector,和对Characteristics的实验