當前位置: 妍妍網 > 碼農

有了這玩意,分分鐘開發公眾號功能!

2024-05-11碼農

大家好,我是程式設計師魚皮。

不論在企業、畢設還是個人練手計畫中,很多同學或多或少都會涉及微信相關生態的開發,例如微信支付、開放平台、公眾號等等。

一般情況下,我們需要到官網查閱這些模組對應的 API 介面,自己編寫各種對接微信伺服器的程式碼,結果很多時間都花在了看文件和理解流程上。

好在,某位大佬開源了一個 WxJava 庫,它可以讓我們更高效快速地開發微信相關的功能。

什麽是 WxJava?

WxJava 是一個開箱即用的 SDK,封裝了微信生態後端開發絕大部份的 API 介面為現成的方法,包括微信支付、開放平台、小程式、企業微信、公眾號等。我們開發時直接呼叫這個 SDK 提供的方法即可,同時作者針對這個 SDK 還提供了很多接入的 Demo,大部份場景跟著 demo 就能很快上手,非常高效!不需要深入閱讀微信開發者官方文件,也能學會微信開發。

WxJava 開發 Demo

這個計畫在 GitHub 上 已經有 29.1k 的 star ,社群活躍,且在持續維護更新中。

下面我會透過一個實戰案例【公眾號的選單管理功能】,帶大家入門 WxJava。

公眾號的選單管理開發實戰

1、功能介紹

正常情況下,公眾號的管理員可以在公眾號網頁後台來編輯選單,例如下面這個頁面:

上圖中,我在選單欄分別添加了三個按鈕:主選單一、點選事件、主選單三。

使用者點選 主選單一 後,就會開啟我們設定的跳轉網頁地址。

上圖的 url 僅為演示,實際僅能填寫跟公眾號相關的網址。

使用者點選 點選事件 後,就會自動回復一條訊息:您點選了選單。

你可能會好奇了:公眾號網頁後台都內建了選單管理能力,我們還開發什麽?

舉個例子,如果我們希望使用者點了選單後,呼叫我們的後端完成新使用者註冊,就必須要自訂選單了,因為需要對接我們自己的後端伺服器。

而一旦你在後台配置了自己的伺服器,就無法使用公眾號內建的網頁後台來管理選單和自動回復了,如圖:

這種情況下,就只能完全自己在後端寫程式碼來實作這些功能。

2、開發實戰

接下來我們用 WxJava 提供的 SDK,透過程式碼來實作上述同樣的功能。

首先,我們需要在 maven 中引入 sdk:

<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>wx-java-mp-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>

然後在配置檔中添加公眾號的 appId 和 appSecret 配置:

按照 WxJava 的規則,編寫一個配置類,構建 WxMpService 的 Bean 例項,註入到 Spring 容器中。

上圖中的 WxMpService 就是 WxJava 提供的操作微信公眾號相關服務的工具類。

接下來,就可以直接建立選單啦!範例程式碼如下圖:

再次備註:對應 url 內容填寫僅為演示,實際 url 對應的網址必須是當前公眾號的內容

執行上述程式碼,其實就可以配置選單了,你甚至感受不到跟微信伺服器 「打交道」 的流程。

這裏再簡單介紹下選單二的點選事件,如上面演示,點選 點選事件 公眾號會自動回復:「您點選了選單」。

這個動作被定義為一個叫 CLICK_MENU_KEY 的 key,當使用者點選這個按鈕後,公眾號就會向我們部署的後端服務發送這個事件 key,根據 key 的內容可以執行不同的動作,例如上面說的回復一段文字。

我們僅需把這個 key 繫結到路由上,當觸發這個事件就呼叫對應的 handler 即可,典型的事件驅動設計~

EventHandler 的動作就是返回 「您點選了選單」 這段文字:

3、其他功能演示

再舉例個小功能,如果我們要刪除選單怎麽辦呢?

非常簡單,可以先呼叫獲取選單的方法:

WxMenu wxMenu = wxMpService.getMenuService().menuGet();

然後根據選單 ID 就可以呼叫刪除方法來刪除選單:

wxMpService.getMenuService().menuDelete(menuId);

如果要修改選單,可以再次呼叫 menuCreate 直接覆蓋即可。

最後

利用 WxJava 我們已經實作了選單的管理,可以看到介面定義非常清晰,使用起來也很方便。當然,以上只是個 Demo,實際企業中如果要操作公眾號選單,不可能每次都是手動執行程式碼,而是會有一個對應的公眾號管理前端,或者再省點事,直接用介面文件來呼叫操作選單的介面。感興趣的同學可以自己實作~

總之希望大家透過這篇教程能夠明白,微信相關的開發,並沒有那麽難,多去做一些調研、內送流量備援容錯機制動搜尋一些方案,你會發現很多路前人已經幫你打通了!
👇🏻 點選下方閱讀原文,獲取魚皮往期編程幹貨。

往期推薦