微信公衆號配置
公衆號是什麼就不需要過多介紹了,現在應該已經遍佈各個行業了,然後我們就直接說配置了
公衆號分總共分爲3類
-
訂閱號
個人 -
服務號
公司-工商營業執照
個體戶-工商營業執照 -
企業號
公司-工商營業執照
我們這裏就演示個人的公衆號開發了
我們先要用我們的郵箱進入官網註冊一下賬號
公衆號官網: https://mp.weixin.qq.com
點擊註冊,然後點擊訂閱號,我們填好信息就註冊成功了,就能看到我們頁面了
然後點擊開發者工具
選擇我們的測試賬號
這裏我們需要用到了就是這3個ID
微信號、appID、appsecret
這3個號碼就是我們需要在我們開發項目中需要用到的
然後由於我們的微信是不能直接用IP訪問的,所以我們需要做IP映射綁定我們的域名
所以我們就需要做一個內網穿透,用一個域名來綁定我們的127.0.0.1,這裏就用到了我們的內網穿透工具
natapp: https://natapp.cn/
註冊賬號需要綁定身份證和支付寶賬號就Ok了
然後我們選擇免費的就ok了,測試完全夠用了
註冊完點擊購買隧道,選擇免費隧道,點擊免費購買就Ok了
購買完之後,我們就去首頁下載客戶端,選擇你自己的系統,我這裏是Windows64
具體詳細步驟我們可以在官網查看
下載完後解壓完文件夾裏面就只有一個exe文件
然後我們還需要下載一個config.ini文件,進入我們的1分鐘快速教程裏面,找到我們的config.ini,點擊詳情下載文件
然後我們的config.ini丟進我們下載的客戶端文件夾中
然後我們的token配置進去
然後點擊exe文件啓動,域名就配置好了
然後我們微信中URL項目地址就可以配置了,token就配置我們的weixin4j就好了,這是我們的工具類包,我們大部分的處理都是調用這個包裏面的
項目配置
項目地址: https://github.com/yang-mou/wx01.git
我們實現微信開發的流程,我們手機發送請求到騰訊服務器,然後騰訊服務器再反應給我們
項目的架構
application就是你項目的相關配置,redis、數據等和以前一樣的配置
weixin4j.properties的主要就是把我前面說的3個重要的ID配置進去
其實配置好之後開發就很簡單了,因爲後面的開發我們只需要導入一個weixin4j的pom依賴大部分的代碼這個接口都幫我們實現了
項目中還引入了redis,用來存儲微信發送的token令牌
<!--引入weixin4j的依賴-->
<dependency>
<groupId>org.weixin4j.spring.boot</groupId>
<artifactId>weixin4j-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
IndexController就是控制頁面的跳轉
package com.xy.wx01.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
public class IndexController {
@RequestMapping("")
public String toIndex(){
// log.info("aaa");
return "index";
}
@RequestMapping("/toHome")
public String toHome(){
return "home";
}
}
我們前面已經用內網穿透映射了域名,然後我們就可以直接用域名訪問項目了
ReceiverController主要是用來接收微信服務器發送過來的消息,只需要實現一個接口即可
package com.xy.wx01.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.weixin4j.spring.web.WeixinJieruController;
/**
* 微信接入入口
*/
@Controller
@RequestMapping("/weixin/receiver")
public class ReceiverController extends WeixinJieruController {
}
然後我們就能進行開發了,我們返回到開發手冊
我們今天就主要介紹一下自定義菜單,也就是我們微信公衆號下面的操作菜單
WeixinController裏面就是我們自定義菜單的代碼
package com.xy.wx01.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.weixin4j.Weixin;
import org.weixin4j.WeixinException;
import org.weixin4j.component.MenuComponent;
import org.weixin4j.model.base.Token;
import org.weixin4j.model.menu.ClickButton;
import org.weixin4j.model.menu.Menu;
import org.weixin4j.model.menu.SingleButton;
import org.weixin4j.model.menu.ViewButton;
import org.weixin4j.spring.WeixinTemplate;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
@Slf4j
@RequestMapping("/wx")
public class WeixinController {
@Autowired
private WeixinTemplate weixinTemplate;
@RequestMapping("/createMenu")
@ResponseBody
public Map<String, Object> createMenu(Model model, HttpServletRequest request) {
// log.info("WeixinController.createMenu");
String ctx = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
// log.info("ctx=" + ctx);
System.out.println("ctx"+ctx);
Map<String, Object> jsonData = new HashMap<String, Object>();
jsonData.put("code", 0);
jsonData.put("message", "微信菜單創建成功");
try {
Menu menu = new Menu();
//創建菜單按鈕
List<SingleButton> buttons = new ArrayList<SingleButton>();
menu.setButton(buttons);
//http://tz3ydw.natappfree.cc/wx01/
SingleButton btn1 = new ViewButton("主界面X", ctx + "/");
buttons.add(btn1);
SingleButton btn2 = new ViewButton("Y界面", ctx + "/toHome");
buttons.add(btn2);
SingleButton btn3 = new ClickButton("界面Z", "hello click!");
buttons.add(btn3);
//設置子菜單
System.out.println(menu.toJSONObject().toString());
//創建自定義菜單
Weixin weixin = weixinTemplate.getWeixinFactory().getWeixin();
MenuComponent menu1 = weixin.menu();
menu1.create(menu);
model.addAttribute("message", "微信菜單創建成功");
} catch (Exception e) {
// log.error(e.getMessage());
System.err.println(e.getMessage());
jsonData.put("code", -1);
jsonData.put("message", "微信菜單創建失敗,原因:" + e.getMessage());
}
return jsonData;
}
@RequestMapping("/deleteMenu")
@ResponseBody
public Map<String,Object> deleteMenu(){
Map<String, Object> jsonData = new HashMap<String, Object>();
jsonData.put("code", 0);
jsonData.put("message", "微信菜單刪除成功");
try {
Weixin weixin = weixinTemplate.getWeixinFactory().getWeixin();
MenuComponent menu = weixin.menu();
menu.delete();
} catch (WeixinException e) {
e.printStackTrace();
jsonData.put("code", -1);
jsonData.put("message", "微信菜單刪除失敗,原因:"+e.getMessage());
}
return jsonData;
}
}
代碼寫好後,我們需要啓動我們的redis,應爲我們需要接收weixin發送過來的token才能進行操作,而我們又是用redis來存儲我們的token令牌的,所以我們需要開啓vm,啓動redis
進入我們安裝redis的文件夾,輸入命令啓動redis
./src/redis-server redis.conf
然後我們運行方法創建菜單
可以看到我們的redis也存儲了一個token令牌
然後我們進入我們自己的開發者中心,掃描關注一下,進入我們的訂閱號就能看見我們的菜單了
utils裏面主要是我們對接收的各類消息進行處理,以及我們redis的工具類
後面的開發就比較簡單了,微信文檔中都記載的很詳細,我們後面也就只需要對菜單以及子菜單的操作進行業務處理就完事了
end…