小程序向公众号推送模板消息

项目做成了小程序,原有公众号推送消息失效。
原因:
小程序的appid、secret与公众号的不一致;
小程序的opneid和微信公众号的openid不一致;
解决办法:
直接使用小程序openid( 此处是用户对小程序的openid,不是公众号openid )从公众号推送模板消息给用户。
操作步骤:
1.微信公众号关联小程序。
2.调用小程序统一消息服务向公众号发送模板消息。
所需主要参数:
小程序appid、secret ;
微信公众号appid、secret;
用户openid(本实现采用用户对小程序的openid);
消息模板id;
具体实现:

1.微信公众号关联小程序。(这一步太简单了) 公众号关联小程序
2.调用统一服务消息接口
请求地址:(注意尾部的access_token

https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN

参数说明:

参数类型必须说明
access_tokenstring使用小程序appid、secret获取
touserstring用户openid,本文使用对小程序的openid
mp_template_msgObject公众号模板消息相关内容

mp_template_msg 参数说明:

参数类型必须说明
appidstring公众号appid
template_idstring公众号模板消息id
datastring公众号模板消息的数据
urlstring公众号模板消息所要跳转的url(微信开发文档中写这个url为必须,但是实际使用中没有要跳转的url,所以不传这个参数也可以
miniprogramstring公众号模板消息所要跳转的小程序(微信开发文档中写这个miniprogram为必须,实际不传这个参数也可以

代码:

    public void sendWxTemMsg(String openId, ClaimDO claimDO, String handTime, String statusDescRemake) {

        //获取小程序accessToken 
        String string = HttpUtil.get("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + XCX_APPID+ "&secret=" + XCX_SECRET);
        JSONObject returnJSON = JSONObject.parseObject(string);
        String accessToken = returnJSON.get("access_token") + "";

        //小程序统一消息推送
        String path = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=" + accessToken;
        //封装参数
        JSONObject jsonData = new JSONObject();
        jsonData.put("touser", XCX_OPENID); // 小程序openid
        
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("appid", GZH_OPENID);// 公众号id
        jsonObject.put("template_id", XXMBID);// 公众号消息模板id
       
        //公众号消息数据封装
        JSONObject data = new JSONObject();
        JSONObject first = new JSONObject();
        first.put("value", "您的目前状态为:已结案");
        first.put("color", "#173177");
        JSONObject keyword1 = new JSONObject();
        keyword1.put("value", "2487610552");
        keyword1.put("color", "#173177");
        JSONObject keyword2 = new JSONObject();
        keyword2.put("value", "2020-08-27");
        keyword2.put("color", "#173177");
        JSONObject remark = new JSONObject();
        remark.put("value", "欢迎下次使用");
        remark.put("color", "#173177");
        data.put("first", first);
        data.put("keyword1", keyword1);
        data.put("keyword2", keyword2);
        data.put("remark", remark);
        jsonObject.put("data", data);
        
        jsonData.put("mp_template_msg", jsonObject);
        HttpUtil.post(path, jsonData.toJSONString());
    }

调用截图:
在这里插入图片描述

微信文档参考:统一消息服务
补充:文档中还可以使用工种号openid,对应发送参数由mp_template_msg转换为weapp_template_msg,详情需要关注文档具体内容。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值