国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序訂閱消息推送(附帶后臺java代碼)

這篇具有很好參考價值的文章主要介紹了微信小程序訂閱消息推送(附帶后臺java代碼)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

官方文檔:
小程序前端:點擊進入
小程序服務(wù)端:點擊進入

一,代碼實現(xiàn)(后端)

①定義實體類

package com.saic.fin.system.sendInfo;

import lombok.Data;

import java.util.Map;

@Data
public class WxMsgVo {

    private String touser;//用戶openId
    private String template_id;//模版id
    private Map<String , TemplateData> data;//推送文字
    private String page="pages/index/index";//跳轉(zhuǎn)路徑 ,默認跳轉(zhuǎn)到小程序首頁

}
package com.saic.fin.system.sendInfo;

public class TemplateData {
    private String value;

    public TemplateData(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

②定義HttpUtil類(Get請求)

package com.saic.fin.system.util;

import com.alibaba.fastjson.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;


public class HttpUtil {
    public static final String APPID = "";//小程序APPID(小程序ID)
    public static final String APPSECRET = "";//小程序APPSECRET(小程序秘鑰)
    public static JSONObject doGetJson(String URL) throws IOException {
        JSONObject jsonObject = null;
        HttpURLConnection conn = null;
        InputStream is = null;
        BufferedReader br = null;
        StringBuilder result = new StringBuilder();
        try {
            //創(chuàng)建遠程url連接對象
            URL url = new URL(URL);
            //通過遠程url連接對象打開一個連接,強轉(zhuǎn)成HTTPURLConnection類
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            //設(shè)置連接超時時間和讀取超時時間
            conn.setConnectTimeout(15000);
            conn.setReadTimeout(60000);
            conn.setRequestProperty("Accept", "application/json");
            //發(fā)送請求
            conn.connect();
            //通過conn取得輸入流,并使用Reader讀取
            if (200 == conn.getResponseCode()) {
                is = conn.getInputStream();
                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                String line;
                while ((line = br.readLine()) != null) {
                    result.append(line);
                    System.out.println(line);
                }
            } else {
                System.out.println("ResponseCode is an error code:" + conn.getResponseCode());
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null) {
                    br.close();
                }
                if (is != null) {
                    is.close();
                }
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
            conn.disconnect();
        }
        jsonObject = JSONObject.parseObject(result.toString());
        return jsonObject;
    }
}

③驗證token過期時間

package com.saic.fin.system.OfficialAccounts;

import lombok.Data;

@Data
public class AccessToken {
    private String accessToken;
    //過期時間 當(dāng)前系統(tǒng)時間+微信傳來的過期時間
    private Long expiresTime;

    public AccessToken(String accessToken, String expiresIn) {
        this.accessToken = accessToken;
        this.expiresTime = System.currentTimeMillis()+Integer.parseInt(expiresIn)*1000;
    }

    /**
     * 判斷token是否過期
     * @return
     */
    public boolean isExpired(){
        return System.currentTimeMillis()>expiresTime;
    }
}

④小程序發(fā)送消息

package com.saic.fin.system.sendInfo;

import com.alibaba.fastjson.JSONObject;
import com.saic.fin.system.OfficialAccounts.AccessToken;
import com.saic.fin.system.util.AuthUtil;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

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

/**
 * 發(fā)送小程序訂閱消息
 */
public class SendWxMessage {

    public static final String APP_ACCESS_TOKEN_URL= "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+HttpUtil.APPID+"&secret="+HttpUtil.APPSECRET;

    private static AccessToken at;
    public static String push(String openid) {
        RestTemplate restTemplate = new RestTemplate();
        String accessToken = getToken();
        //這里簡單起見我們每次都獲取最新的access_token(時間開發(fā)中,應(yīng)該在access_token快過期時再重新獲取)
        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken;
        //拼接推送的模版
        WxMsgVo wxMsgVo = new WxMsgVo();
        wxMsgVo.setTouser(openid);//用戶的openid(要發(fā)送給那個用戶)
        wxMsgVo.setTemplate_id("CFeSWarQLMPyPjwmiy6AV4eB-IZcipu48V8bFLkBzTU");//訂閱消息模板id
        wxMsgVo.setPage("pages/index/index");

        Map<String, TemplateData> m = new HashMap<>(3);
        m.put("thing1", new TemplateData("課程"));
        m.put("thing6", new TemplateData("大學(xué)"));
        m.put("thing7", new TemplateData("一節(jié)"));
        wxMsgVo.setData(m);
        ResponseEntity<String> responseEntity =
                restTemplate.postForEntity(url, wxMsgVo, String.class);
        return responseEntity.getBody();
    }


    public static String getToken(){
        if (at == null || at.isExpired()){
            getAccessToken();
        }
        return at.getAccessToken();
    }

    /**
     * 獲取token
     */
    private static void getAccessToken() {
        //發(fā)送請求獲取token
        JSONObject token = null;
        try {
            token = AuthUtil.doGetJson(APP_ACCESS_TOKEN_URL);
        } catch (Exception e) {
            e.printStackTrace();
        }
        JSONObject jsonObject = token;
        String accessToken = (String) jsonObject.get("access_token");
        Integer expiresIn = (Integer) jsonObject.get("expires_in");
        //創(chuàng)建token對象,并存儲
        at = new AccessToken(accessToken,String.valueOf(expiresIn));
    }
}

AuthUtil工具類文章來源地址http://www.zghlxwxcb.cn/news/detail-631046.html

package com.saic.fin.system.util;

import com.alibaba.fastjson.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * 微信授權(quán)登錄調(diào)用Util
 */
public class AuthUtil {
    public static final String APPID = "xxxxxx";//小程序APPID(小程序ID)
    public static final String APPSECRET = "xxxxxxxxxxx";//小程序APPSECRET(小程序秘鑰)
    public static JSONObject doGetJson(String URL) throws IOException {
        JSONObject jsonObject = null;
        HttpURLConnection conn = null;
        InputStream is = null;
        BufferedReader br = null;
        StringBuilder result = new StringBuilder();
        try {
            //創(chuàng)建遠程url連接對象
            URL url = new URL(URL);
            //通過遠程url連接對象打開一個連接,強轉(zhuǎn)成HTTPURLConnection類
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            //設(shè)置連接超時時間和讀取超時時間
            conn.setConnectTimeout(15000);
            conn.setReadTimeout(60000);
            conn.setRequestProperty("Accept", "application/json");
            //發(fā)送請求
            conn.connect();
            //通過conn取得輸入流,并使用Reader讀取
            if (200 == conn.getResponseCode()) {
                is = conn.getInputStream();
                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                String line;
                while ((line = br.readLine()) != null) {
                    result.append(line);
                    System.out.println(line);
                }
            } else {
                System.out.println("ResponseCode is an error code:" + conn.getResponseCode());
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null) {
                    br.close();
                }
                if (is != null) {
                    is.close();
                }
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
            conn.disconnect();
        }
        jsonObject = JSONObject.parseObject(result.toString());
        return jsonObject;
    }
}

到了這里,關(guān)于微信小程序訂閱消息推送(附帶后臺java代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 微信小程序云開發(fā)定時推送訂閱消息

    微信小程序云開發(fā)定時推送訂閱消息

    (1)點擊訂閱消息 (2)點擊公共模板庫,然后找到想要選用的模板,點擊選用。 (3)在我的模板里面,復(fù)制模板id。 如果找不到想要用的模板,可以在公共模板的最后一頁,點擊下圖中圈出來的,去申請自己想要的模板。 (1)云函數(shù)部分的代碼 config.json 云函數(shù)配置文件

    2024年02月09日
    瀏覽(20)
  • 微信小程序?qū)崿F(xiàn)訂閱消息推送的實現(xiàn)步驟

    微信小程序?qū)崿F(xiàn)訂閱消息推送的實現(xiàn)步驟

    1、準(zhǔn)備工作 ??準(zhǔn)備小程序賬號、開發(fā)環(huán)境,我小程序是基于uniapp開發(fā),后臺代碼基于SpringBoot開發(fā)。同時先閱讀官方文檔,了解小程序訂閱消息和后端如何發(fā)送訂閱消息等相關(guān)知識,官方文檔地址如下: 《小程序訂閱消息》 《發(fā)送訂閱消息》 2、實現(xiàn)步驟 2.1、啟用并配置

    2024年02月15日
    瀏覽(29)
  • 如何為微信小程序添加訂閱消息和推送通知功能

    為微信小程序添加訂閱消息和推送通知功能是非常有用的,它可以讓用戶在重要的事件發(fā)生時及時地收到通知。在本文中,我們將詳細介紹如何為微信小程序添加這兩種功能。 一、訂閱消息 訂閱消息是一種新的消息類型,用戶可以選擇是否訂閱它們。訂閱消息一般用于向用

    2024年02月04日
    瀏覽(36)
  • Java開發(fā)微信小程序訂閱消息推送

    Java開發(fā)微信小程序訂閱消息推送

    使用到開源工具WxJava 這里環(huán)境使用到springboot 框架,廢話不多說直接上干貨。 pom.xml引用 application配置 templateId具體申請在微信公眾平臺 具體如下 ? wx配置代碼編寫 模板代碼編寫 這里注意模板對應(yīng)的字段 具體代碼 ?然后和前端一配合就完事了,非常簡單

    2024年02月16日
    瀏覽(16)
  • uni-app中實現(xiàn)微信小程序/公眾號訂閱消息推送功能

    uni-app中實現(xiàn)微信小程序/公眾號訂閱消息推送功能

    ??????? 熱愛攝影的程序員 ??????? 喜歡編碼的設(shè)計師 ???? 擅長設(shè)計的剪輯師 ??????? 一位高冷無情的編碼愛好者 大家好,我是全棧 IT 工程師摘星人 歡迎分享 / 收藏 / 贊 / 在看! 開發(fā)業(yè)務(wù)時時常遇到需要向用戶發(fā)送一些通知,如欠費通知、會員到期通知等等。

    2024年02月02日
    瀏覽(97)
  • 微信公眾號 - Java推送小程序訂閱消息給用戶_java 通過微信公眾號發(fā)送訂閱通知

    微信公眾號 - Java推送小程序訂閱消息給用戶_java 通過微信公眾號發(fā)送訂閱通知

    不啰嗦,我們直接開始! 本文使用體驗版小程序進行調(diào)試。 1、登錄微信公眾平臺 點開下面鏈接,使用微信掃碼 微信公眾平臺 然后選擇一個小程序并登錄 2、在小程序后臺找到Appid、AppSecret、Token、EncodingAESKey等參數(shù) AppSecret忘記了可以自行重置 往下翻,在消息推送這兒能看到

    2024年04月26日
    瀏覽(29)
  • 手把手教你實現(xiàn)微信小程序向特定用戶推送一次性訂閱消息

    手把手教你實現(xiàn)微信小程序向特定用戶推送一次性訂閱消息

    目前有一個已 微信認證 的 訂閱號 類型公眾號,一個 微信認證 小程序,小程序和公眾號互相關(guān)聯(lián)。尚不清楚是否必須微信認證或特定類型,因為目前沒遇到類型不匹配或相關(guān)的問題,發(fā)送微信小程序一次性訂閱消息的相關(guān)限制較少 1、功能介紹 訂閱消息推送位置:服務(wù)通知

    2024年02月08日
    瀏覽(28)
  • java實現(xiàn)微信小程序訂閱和推送訂閱信息

    java實現(xiàn)微信小程序訂閱和推送訂閱信息

    1、進入微信公眾平臺,掃碼登錄 2、獲取appid和secret 3、配置模板 在對應(yīng)yml中配置 前端調(diào)用彈出是否訂閱時調(diào)用后臺服務(wù) 1、controller 2、后端接參AddSinosoftWxSubscribeParam 3、service 一般時通過時間或者調(diào)度進行調(diào)用服務(wù),以下只進行服務(wù)實現(xiàn)展示 1、在domain層寫send方法 1、首先小

    2024年02月13日
    瀏覽(16)
  • 微信小程序消息訂閱Java

    微信小程序消息訂閱Java

    編寫日期 : 2022-11-04 寫這篇文章原因 公司給政府做一個訂餐系統(tǒng),需要在員工在小程序上發(fā)起訂餐后經(jīng)過部門領(lǐng)導(dǎo)和書記的審批后,再由食堂確認訂餐結(jié)果。在訂餐審批單在各個節(jié)點流轉(zhuǎn)的過程中,需要給每一個節(jié)點的審批人發(fā)送 微信訂閱消息 和 手機短信 ,通知訂餐流程所

    2024年02月10日
    瀏覽(19)
  • 使用Java實現(xiàn)微信小程序訂閱消息

    使用Java實現(xiàn)微信小程序訂閱消息

    首先到微信小程序的官網(wǎng),選擇合適自己的訂閱消息模板。 尋找到適合自己的模板之后,記住模板ID,點開詳情,記住每個字段id 微信小程序訂閱消息官網(wǎng)文檔介紹地址:小程序訂閱消息 | 微信開放文檔 (qq.com) 微信小程序訂閱消息接口:發(fā)送訂閱消息 | 微信開放文檔 (qq.com

    2024年02月03日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包