微信小程序向公众号推送消息超详细教程

这篇具有很好参考价值的文章主要介绍了微信小程序向公众号推送消息超详细教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 官方教程
    官方教程

  • 开通一下服务号公众号

  • 超级管理员登录服务号公众号后台
    登录地址

  • 开通模板消息
    微信小程序向公众号推送消息超详细教程

  • 申请一个模板消息,获取模板ID
    微信小程序向公众号推送消息超详细教程
    注意此处的参数,后续接口需要使用
    微信小程序向公众号推送消息超详细教程

  • 绑定公众号与小程序
    官方教程
    1.登录微信公众号后台
    2.点击小程序管理
    微信小程序向公众号推送消息超详细教程
    3.关联小程序

  • 获取微信公众号APPID
    1.登录微信公众号后台
    2.点击基本配置
    微信小程序向公众号推送消息超详细教程

  • 导入HTTP依赖

     <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.3.6</version>
        </dependency>
   <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.15</version>
        </dependency>
  • http请求工具类
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
/**
 * 发送请求工具类
 */
public class HttpUtils {
    private static CloseableHttpClient httpClient;

    static {
        PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
        cm.setMaxTotal(100);
        cm.setDefaultMaxPerRoute(20);
        cm.setDefaultMaxPerRoute(50);
        httpClient = HttpClients.custom().setConnectionManager(cm).build();
    }

    public static String get(String url) {
        CloseableHttpResponse response = null;
        BufferedReader in = null;
        String result = "";
        try {
            HttpGet httpGet = new HttpGet(url);
            RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(30000).setConnectionRequestTimeout(30000).setSocketTimeout(30000).build();
            httpGet.setConfig(requestConfig);
            httpGet.setConfig(requestConfig);
            httpGet.addHeader("Content-type", "application/json; charset=utf-8");
            httpGet.setHeader("Accept", "application/json");
            response = httpClient.execute(httpGet);
            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while ((line = in.readLine()) != null) {
                sb.append(line + NL);
            }
            in.close();
            result = sb.toString();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != response) {
                    response.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return result;
    }

    public static String post(String url, String jsonString) {
        CloseableHttpResponse response = null;
        BufferedReader in = null;
        String result = "";
        try {
            HttpPost httpPost = new HttpPost(url);
            RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(30000).setConnectionRequestTimeout(30000).setSocketTimeout(30000).build();
            httpPost.setConfig(requestConfig);
            httpPost.setConfig(requestConfig);
            httpPost.addHeader("Content-type", "application/json; charset=utf-8");
            httpPost.setHeader("Accept", "application/json");
            httpPost.setEntity(new StringEntity(jsonString, Charset.forName("UTF-8")));
            response = httpClient.execute(httpPost);
            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while ((line = in.readLine()) != null) {
                sb.append(line + NL);
            }
            in.close();
            result = sb.toString();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != response) {
                    response.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return result;
    }

}

  • 配置类
/**
 * @Description: 参数配置
 */
public class WxAppletConfig {

        /**小程序appid*/
      
        public static String APPLET_APPID="";

        /**小程序秘钥*/
     
        public static String APPLET_SECRET="";


        /**公众号appid*/

        public static String  OFFICIAL_ACCOUNT_APPID="";

        /**公众号模板id*/
   
        public static String OFFICIAL_ACCOUNT_TEMPLATE_ID="";
    
}

  • 接口
package com.hk.frame.controller.push;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.Map;

/**
 * @Description: 小程序推送公众号消息测试
 */

@Slf4j
@Controller
public class MsgPushTest {

    /**
     * 获取token
     * @return
     */
    public String getAccessToken() {
            RestTemplate restTemplate = new RestTemplate();
            Map<String, String> params = new HashMap<>();
            params.put("APPID", WxAppletConfig.APPLET_APPID);
            params.put("APPSECRET", WxAppletConfig.APPLET_SECRET);
            params.put("grant_type", "client_credential");
            String tokenUrl="https://api.weixin.qq.com/cgi-bin/token?appid={APPID}&secret={APPSECRET}&grant_type={grant_type}";
            ResponseEntity<String> responseEntity = restTemplate.getForEntity(tokenUrl, String.class, params);
            String body = responseEntity.getBody();
            JSONObject object = JSON.parseObject(body);
            String access_Token = object.getString("access_token");
            System.err.println("access_Token:"+access_Token);
            return access_Token;
        }




    /**
     * 推送
     * @param content
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/testPush",  method = RequestMethod.POST,produces = "application/json;charset=UTF-8")
    public String push(@RequestBody Map<String, String> content) {
        //获取需要推送的用户openid
        String openid= content.get("openid");
            //获取用户token
            String token = getAccessToken();

            String resultStatus = "0";//0:失败,1:成功
            try {
                //小程序统一消息推送
                String path = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=" + token;
                //封装参数
                JSONObject jsonData = new JSONObject();
                //小程序用户的openid
                jsonData.put("touser", openid);
                JSONObject jsonObject = new JSONObject();
                //公众号APPID
                jsonObject.put("appid", WxAppletConfig.OFFICIAL_ACCOUNT_APPID);
                //公众号模板ID
                jsonObject.put("template_id", WxAppletConfig.OFFICIAL_ACCOUNT_TEMPLATE_ID);
                //公众号模板消息所要跳转的url
                jsonObject.put("url", "https://blog.csdn.net/qq_46122292/article/details/124961251");

                //公众号模板消息所要跳转的小程序,小程序的必须与公众号具有绑定关系
                JSONObject miniprogram = new JSONObject();
                //小程序APPID
                miniprogram.put("appid",WxAppletConfig.APPLET_APPID);
                //跳转到小程序的页面路径
                miniprogram.put("pagepath","pages/main_Page/mainPage");
                jsonObject.put("miniprogram", miniprogram);

                //公众号消息数据封装
                JSONObject data = new JSONObject();
                //此处的参数key,需要对照模板中的key来设置
                data.put("first", getValue("亲爱的王先生/女士您好,您于2022年07月25日新增加一个客户。"));
                data.put("keyword1", getValue(content.get("phone")));//联系方式
                data.put("keyword2", getValue(content.get("time")));//时间
                data.put("remark", getValue("请前往小程序查看!"));
                jsonObject.put("data", data);

                jsonData.put("mp_template_msg", jsonObject);

                System.out.println("请求参数:"+jsonData);
                String s = HttpUtils.post(path, jsonData.toJSONString());

                System.out.println("返回结果:"+s);

                resultStatus="1";
            } catch (Exception e) {
                log.error("微信公众号发送消息失败!",e.getMessage());
                resultStatus="0";
            }
            return resultStatus;
        }



	 /**
     * 获取data
     * @param value
     * @return
     */
    private JSONObject getValue(String value) {
        // TODO Auto-generated method stub
        JSONObject json = new JSONObject();
        json.put("value", value);
        json.put("color", "#173177");
        return json;
    }
}

  • 测试

微信小程序向公众号推送消息超详细教程
微信小程序向公众号推送消息超详细教程
注意:前提是该用户得先关注该服务号文章来源地址https://www.toymoban.com/news/detail-515694.html

到了这里,关于微信小程序向公众号推送消息超详细教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信公众号推送小程序消息通知】--下发统一消息接口被回收后新方案

    由于微信小程序长期订阅的消息模板和下发统一消息推送接口全部失效以后,对于小程序的消息推送可以往公众号推可以使用本文章方案。在网上看了挺多方案,有用用户列表做匹配的等,最终觉得通过关注事件触发的方案是最省事。 1、微信公众平台注册 服务号 (订阅号是

    2024年02月04日
    浏览(32)
  • 微信公众号 - Java推送小程序订阅消息给用户_java 通过微信公众号发送订阅通知

    不啰嗦,我们直接开始! 本文使用体验版小程序进行调试。 1、登录微信公众平台 点开下面链接,使用微信扫码 微信公众平台 然后选择一个小程序并登录 2、在小程序后台找到Appid、AppSecret、Token、EncodingAESKey等参数 AppSecret忘记了可以自行重置 往下翻,在消息推送这儿能看到

    2024年04月26日
    浏览(35)
  • uniApp 微信小程序 授权 公众号推送信息

    准本工作  1.首先小程序  更公众号关联起来 2.配置相应的域名(也就是你请求后端接口的公共地址) 3.需要写一个h5 页面 用于跳板 公众号 的授权 公众号如何关联小程序? 打开微信公众号后台,选择「设置 – 公众号设置 」 [关注公众号 -打开开关  ], 步骤一 步骤二  步

    2024年02月10日
    浏览(27)
  • 微信公众号推送天气教程,自动定时推送【Java版】开发者和小白详细教程

    久违的大更新: 建议先打开,因为GitHub在国内加载很慢。 点击打开 Java版本,教程最近一次更新时间为: 2023-08-23 重大更新: 1: 谚语功能修复。 2: 新增农历生日。 已经部署的伙伴,务必在公众号后台更新新的模块以及applicantion.yml配置文件中的模板ID,新的模板在本教程当中

    2024年01月23日
    浏览(45)
  • 微信小程序模板消息推送

    时序图 ​​​​​​​   首先,我们需要知道一件事情,小程序的模板推送分为“一次性订阅”和“长期订阅” 一次性订阅:用户订阅小程序后,程序只能对指定OpenId进行一次推送模板消息,无法多次推送 长期订阅:用户长期订阅,能够多次推送模板消息(长期订阅模板需

    2024年02月11日
    浏览(35)
  • 微信小程序发送消息推送

    在小程序开发中,如果想实现:用户发给小程序的消息以及开发者需要的事件推送,在小程序项目中,我们想要实现这样一个功能, 比如我们小程序中的客服功能,我不想要使用小程序后台的在线客服功能,但我又想实现客服功能,这个时候微信提供了消息推送功能,在小程序

    2024年02月09日
    浏览(30)
  • 微信小程序通过公众号服务号发送消息

    一、基础概念: 准备条件:      1、公众号和小程序必须在同一个公司主体下。      2、在公众号后台需要对小程序进程绑定操作。 公众号提供了两种消息,一种是订阅消息,一种是模板消息。 订阅消息需要用户主动订阅,然后才能接收消息,微信提供前端组件用于用户进

    2024年02月07日
    浏览(30)
  • 微信小程序订阅模板消息推送

    背景 在实际的小程序开发过程中往往需要用到给用户发送订阅消息,比如:我们在店里扫码点餐时在付款时往往弹出一个授权窗口(比如‘取餐通知’)这个时候我们就需要对接微信小程序的模板消息。 [https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscrib

    2024年02月11日
    浏览(34)
  • 微信小程序之订阅消息推送

    目录 1、开通订阅消息 2、请求用户授权 2.1、wx.requestSubscribeMessage(Object object) 2.2、wx.requestSubscribeDeviceMessage(Object object) 3、发送订阅信息 3.1、调用方式 3.2、云调用接口方法 3.3、请求参数 3.4、返回值 3.5、代码示例 登录小程序之后点击功能下的 订阅消息 , 点击开通 选择公共模

    2024年02月09日
    浏览(48)
  • 微信公众号推送模板消息给用户

    前置条件: 1.公众号为服务号,而非订阅号 2.认证(300元) 3.进入公众号申请模板推送功能 4.添加模板(注意:推送的消息只能使用微信提供的模板,不可自定义,但也是比较全的) 4.2 获取accessToken时,需要将开发环境的电脑ip添加到微信后台的ip白名单(线上环境亦是如此

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包