微信小程序发送公众号模版消息

官方文档 统一下发消息

注意事项

mp_template_msg.appid为公众号的appid。
mp_template_msg.url不能为空,那么怕写个xxx。
如果要小程序,则miniprogram下填充小程序的appid和page。
统一服务消息的发送位置为公众号。

公众号的小程序一定要关联以下哦(不需要开放平台关联

传递的openId 可以是小程序的 但是access_token获取也必须是小程序的
如果传递公众号openId access_token应该也需要用公众号对应的appid和secret获取

DEMO

//wxMpProperties 公众号配置
//WxTemplateMessageType 公众号模版消息
//miniProgramProperties 小程序参数
  public void  sendWxMessage() {
        String accessToken = getAccessToken();
        HashMap<String, Object> params = new HashMap<>();
        List<String> openIds = new ArrayList<>();
        openIds.add("*************"); //小程序 里昂
//        openIds.add("**************");//公众号 里昂
        if (openIds != null && openIds.size() > 0) {

            for (String openId : openIds) {
                params.put("touser", openId);
                HashMap<String, Object> mp_template_msg = new HashMap<>();
                mp_template_msg.put("appid", wxMpProperties.getAppId());
                mp_template_msg.put("template_id", WxTemplateMessageType.ORDER_COMPLETION_AFTER_SALES.getTemplateId());
                mp_template_msg.put("url", "http://weixin.qq.com/download");
                HashMap<String, Object> miniprogram = new HashMap<>();
                miniprogram.put("appid", miniProgramProperties.getAppId());
                miniprogram.put("pagepath", "index?foo=bar");
                mp_template_msg.put("miniprogram", miniprogram);
                HashMap<String, Object> data = new HashMap<>();
                HashMap<Object, Object> first = new HashMap<>();
                first.put("value", "您好,您的订单已完成售后");
                HashMap<String, Object> keyword1 = new HashMap<>();
                keyword1.put("value", "0.01");
                HashMap<String, Object> keyword2 = new HashMap<>();
                keyword2.put("value", "测试");
                HashMap<String, Object> keyword3 = new HashMap<>();
                keyword3.put("value", "4545131");
                HashMap<String, Object> keyword4 = new HashMap<>();
                keyword4.put("value", "2020-12-12 12:12:12");
                HashMap<Object, Object> remark = new HashMap<>();
                remark.put("value", "感谢您的支持,欢迎再次购买!");
                data.put("first", first);
                data.put("keyword1", keyword1);
                data.put("keyword2", keyword2);
                data.put("keyword3", keyword3);
                data.put("keyword4", keyword4);
                data.put("remark", remark);

                mp_template_msg.put("data", data);
                params.put("mp_template_msg", mp_template_msg);


                log.info("发送微信消息" + JSONUtil.toJsonPrettyStr(params));
                HttpResponse execute = HttpRequest.post(String.format(SEND_MESSAGE_URL, accessToken))
                        .body(JSONUtil.toJsonStr(params))
                        .contentType("application/json")
                        .execute();
                String body = execute.body();
                log.info("订单售后完成,订单退款到账通知" + body);
            }
        }
    }
//miniProgramProperties 小程序参数
      String accessToken = null;
        //先从缓存中获取
        accessToken = (String) redisTemplate.opsForValue().get(PREFIX + miniProgramProperties.getAppId());
        if (StrUtil.isEmpty(accessToken)) {
            //获取小程序全局唯一后台接口调用凭据(access_token)
            String token_url = String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", miniProgramProperties.getAppId(), miniProgramProperties.getAppSecret());
            JSONObject jsonObject = JSON.parseObject(HttpRequest.get(token_url).execute().body());
            accessToken = jsonObject.getString("access_token");
            redisTemplate.opsForValue().set(PREFIX + miniProgramProperties.getAppId(), accessToken, 7000, TimeUnit.MINUTES);
        }
        return accessToken;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值