當(dāng)前位置:首頁(yè) > IT技術(shù) > 微信平臺(tái) > 正文

5行代碼實(shí)現(xiàn)微信模版消息推送,springboot實(shí)現(xiàn)微信推送,java微信推送
2021-08-07 18:49:27

?

今天來(lái)帶大家學(xué)習(xí)下微信模版消息推送。

先看效果圖:
5行代碼實(shí)現(xiàn)微信模版消息推送,springboot實(shí)現(xiàn)微信推送,java微信推送_java微信推送

核心代碼只有下面幾行,即可輕松實(shí)現(xiàn)微信模版消息推送

        //1,配置
        WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
        wxStorage.setAppId("wx77bb69292323a000");
        wxStorage.setSecret("29bd368145806115ad6820133e62806e");
        WxMpService wxMpService = new WxMpServiceImpl();
        wxMpService.setWxMpConfigStorage(wxStorage);
        //2,推送消息
        WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
                .toUser("o5kho6DgC7SDry8zCmXuvHJGvrgI")//要推送的用戶(hù)openid
                .templateId("Tpln-Eue2obJ0B-8JNkgkiRJaDMPgVeIgGxna982xrg")//模版id
                .url("https://30paotui.com/")//點(diǎn)擊模版消息要訪(fǎng)問(wèn)的網(wǎng)址
                .build();
        try {
            wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
        } catch (Exception e) {
            System.out.println("推送失?。? + e.getMessage());
        }

所用知識(shí)點(diǎn)

  • 1, springboot實(shí)現(xiàn)java后臺(tái)
  • 2,微信測(cè)試賬號(hào)的申請(qǐng)
  • 3,微信模版推送的配置
    接下來(lái)就帶領(lǐng)大家來(lái)一步步實(shí)現(xiàn)微信模版消息推送。

一,springboot創(chuàng)建java后臺(tái)

至于springboot怎么創(chuàng)建java后臺(tái),我這里就不再?lài)Z叨了,大家百度一下,一大堆的文章。這里只需要重點(diǎn)講解下以下幾點(diǎn)。

  • 1,在pom.xml文件里引入下面類(lèi)庫(kù)
        <!--微信模版消息推送三方sdk-->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>3.3.0</version>
        </dependency>
  • 2,寫(xiě)一個(gè)推送的controller
package com.qiushi.wxpush;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;

/**
 * Created by qcl on 2019-03-28
 * 微信:2501902696
 * desc: 模版消息推送模擬
 */
@RestController
public class PushController {


    /*
     * 微信測(cè)試賬號(hào)推送
     * */
    @GetMapping("/push")
    public void push() {
        //1,配置
        WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
        wxStorage.setAppId("wx77bb69292323a000");
        wxStorage.setSecret("29bd368145806115ad6820133e62806e");
        WxMpService wxMpService = new WxMpServiceImpl();
        wxMpService.setWxMpConfigStorage(wxStorage);

        //2,推送消息
        WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
                .toUser("o5kho6DgC7SDry8zCmXuvHJGvrgI")//要推送的用戶(hù)openid
                .templateId("Tpln-Eue2obJ0B-8JNkgkiRJaDMPgVeIgGxna982xrg")//模版id
                .url("https://30paotui.com/")//點(diǎn)擊模版消息要訪(fǎng)問(wèn)的網(wǎng)址
                .build();
        //3,如果是正式版發(fā)送模版消息,這里需要配置你的信息
        //        templateMessage.addData(new WxMpTemplateData("name", "value", "#FF00FF"));
        //                templateMessage.addData(new WxMpTemplateData(name2, value2, color2));
        try {
            wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
        } catch (Exception e) {
            System.out.println("推送失敗:" + e.getMessage());
            e.printStackTrace();
        }

    }


}

二,接下來(lái)就來(lái)重點(diǎn)講講我們?nèi)绾巫?cè)微信測(cè)試賬號(hào),并實(shí)現(xiàn)推送功能。

正常我們企業(yè)開(kāi)發(fā),實(shí)現(xiàn)微信模版消息推送,必須要有微信公眾號(hào),備案的網(wǎng)址,并且最麻煩的一點(diǎn)是要獲取到用戶(hù)的openid,作為個(gè)人,這些條件基本上都不具備。所以今天就來(lái)帶大家注冊(cè)微信開(kāi)發(fā)測(cè)試賬號(hào),來(lái)輕松實(shí)現(xiàn)微信模版消息推送。

  • 1,微信掃碼登錄下面網(wǎng)址
    https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
    掃碼登錄成功后,就會(huì)給我們生成微信公號(hào)的appid和appsecret
    5行代碼實(shí)現(xiàn)微信模版消息推送,springboot實(shí)現(xiàn)微信推送,java微信推送_java微信推送_02

  • 2,微信掃碼關(guān)注 測(cè)試號(hào)二維碼,微信給我們返回我們的openid,這個(gè)openid在推送時(shí)特別重要。因?yàn)槟阃扑涂隙ㄒ劳扑徒o 誰(shuí)啊,就比如你打電話(huà),肯定要知道用戶(hù)的電話(huà)號(hào)碼吧。這個(gè)openid就是我們要推送給那個(gè)用戶(hù)的唯一標(biāo)示。
    5行代碼實(shí)現(xiàn)微信模版消息推送,springboot實(shí)現(xiàn)微信推送,java微信推送_java微信推送_03

  • 3,拿到這些以后,我們就可以去實(shí)現(xiàn)微信推送了。推送的代碼就只有下面這么點(diǎn)。

         //1,配置
        WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
        wxStorage.setAppId("wx77bb69292323a000");//appid
        wxStorage.setSecret("29bd368145806115ad6820133e62806e");//appsecret
        WxMpService wxMpService = new WxMpServiceImpl();
        wxMpService.setWxMpConfigStorage(wxStorage);

        //2,推送消息
        WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
                .toUser("o5kho6DgC7SDry8zCmXuvHJGvrgI")//要推送的用戶(hù)openid
                .templateId("Tpln-Eue2obJ0B-8JNkgkiRJaDMPgVeIgGxna982xrg")//模版id
                .url("https://30paotui.com/")//點(diǎn)擊模版消息要訪(fǎng)問(wèn)的網(wǎng)址
                .build();
        //3,如果是正式版發(fā)送模版消息,這里需要配置你的信息
        //        templateMessage.addData(new WxMpTemplateData("name", "value", "#FF00FF"));
        //                templateMessage.addData(new WxMpTemplateData(name2, value2, color2));

        //發(fā)起推送
        try {
            String msg = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
            System.out.println("推送成功:" + msg);
        } catch (Exception e) {
            System.out.println("推送失敗:" + e.getMessage());
            e.printStackTrace();
        }

三,推送測(cè)試

代碼都完成后,我們就可以來(lái)測(cè)試推送了。測(cè)試我們這個(gè)分兩種

  • 1,java的單元測(cè)試
  • 2,運(yùn)行springboot,通過(guò)get請(qǐng)求來(lái)觸發(fā)推送

單元測(cè)試

package com.qiushi.wxpush;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import static org.junit.Assert.*;

/**
 * Created by qcl on 2019-03-28
 * 微信:2501902696
 * desc:測(cè)試用例
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class PushControllerTest {

    @Autowired
    PushController pushController;

    @Test
    public void push() {
        pushController.push();
    }
}

單元測(cè)試其實(shí)很簡(jiǎn)單,我們只需要點(diǎn)擊箭頭所指的綠色按鈕,即可運(yùn)行單元測(cè)試,運(yùn)行通過(guò)后就可以看到發(fā)送消息成功了。
5行代碼實(shí)現(xiàn)微信模版消息推送,springboot實(shí)現(xiàn)微信推送,java微信推送_微信模版推送_04
log里可以看出我們是10:46發(fā)起推送的,看下圖我們微信接受到的推送消息也是10:46
5行代碼實(shí)現(xiàn)微信模版消息推送,springboot實(shí)現(xiàn)微信推送,java微信推送_小程序推送_05

運(yùn)行springboot,通過(guò)get請(qǐng)求來(lái)觸發(fā)推送

這個(gè)就更簡(jiǎn)單了,我們啟動(dòng)springboot項(xiàng)目,然后調(diào)用get請(qǐng)求:
5行代碼實(shí)現(xiàn)微信模版消息推送,springboot實(shí)現(xiàn)微信推送,java微信推送_微信消息推送_06
5行代碼實(shí)現(xiàn)微信模版消息推送,springboot實(shí)現(xiàn)微信推送,java微信推送_微信模版推送_07
可以看到我們也推送成功了。

到這里我們就輕松通過(guò)簡(jiǎn)單幾行代碼實(shí)現(xiàn)了微信模版消息推送的功能了。

我們?cè)谄髽I(yè)生產(chǎn)環(huán)境時(shí),實(shí)現(xiàn)這個(gè)功能,步驟和這里是一樣的。代碼也和這里差不多,只不過(guò)多了一個(gè)獲取用戶(hù)openid的步驟,這個(gè)步驟微信要求比較嚴(yán)格,必須要有備案的網(wǎng)址作為回調(diào),今天就不給大家深入講解了,后期我會(huì)專(zhuān)門(mén)寫(xiě)一篇獲取微信用戶(hù)openid的文章出來(lái)。

如果你有微信或者java開(kāi)發(fā)方面的問(wèn)題,可以加我微信交流學(xué)習(xí):2501902696。也可以加我微信獲取完整

本文摘自 :https://blog.51cto.com/u

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >