微信公眾號快速開發(fā)(一)開發(fā)者與公眾號平臺接入

引入

由于微信的龐大基數(shù),微信公眾號成為我們更為輕量便捷綜合的平臺入口。我們可以與訂閱的公眾平臺查詢信息,訂購服務(wù),購買商品,掌握微信公眾號平臺的開發(fā),也是一個開發(fā)者的基本經(jīng)歷。寫下這篇文章希望能與感興趣的人一起探索。

公眾平臺的分類

進入平臺官方地址:微信公眾平臺

主要分為以下四類:

功能 舉例
服務(wù)號 為企業(yè)和組織提供更強大的業(yè)務(wù)服務(wù)與用戶管理能力,主要偏向服務(wù)類交互 12315,114,銀行,提供綁定信息,服務(wù)交互的
訂閱號 為媒體和個人提供一種新的信息傳播方式,主要功能是在微信側(cè)給用戶傳達資訊 報紙雜志,提供新聞信息或娛樂趣事
小程序 小程序可以在微信內(nèi)被便捷地獲取和傳播,同時具有出色的使用體驗。 微信聊天記錄頁下拉的小程序,如摩拜,騰訊乘車碼
企業(yè)微信 為企業(yè),政府,事業(yè)單位,實現(xiàn)生產(chǎn)管理和協(xié)作運營的移動化,主要用于公司內(nèi)部通訊使用,旨在為用戶提供移動辦公 如微信通訊錄中的“我的企業(yè)”

詳細介紹可產(chǎn)看對應(yīng)開發(fā)文檔

入手

訂閱號的注冊與配置

  1. 作為個人開發(fā),建議先從訂閱號入手,避免不必要的審核和認(rèn)證流程,因此:

    微信公眾平臺進入首頁后點擊立即注冊并選擇訂閱號即可

    image

  2. 首頁點擊登錄,隨后手機掃碼驗證

  3. 進入該模式后,通過側(cè)邊欄配置菜單,可以直接對公眾號賬戶進行管理設(shè)置。包括自動消息回復(fù),讀者可自行體驗。

image
  1. 對于開發(fā)人員,功能設(shè)置并不靈活。側(cè)邊欄點擊開發(fā),即可進入開發(fā)者工具,這里就是我們所需要的文檔和工具。
image

公眾號平臺測試賬號

微信的沙盒測試環(huán)境的url都帶有sandbox

開發(fā)工具中點擊進入,或者想快速體驗無需注冊,直接單擊鏈接公眾平臺測試賬號,掃碼登錄即可。

參數(shù)介紹

測試號信息

手機微信登錄后由微信自動分配,不可修改,建議保密

  • appId:當(dāng)前公眾號開發(fā)的唯一識別碼
  • appsecret:校驗該公眾號開發(fā)者身份的密鑰
image

接口配置信息修改

  • URL:即服務(wù)器地址,且必須為公網(wǎng)地址,該URL是開發(fā)者用來接收和響應(yīng)微信消息和事件的接口URL ,(必須以http://或https://開頭,分別支持80端口和443端口)
  • Token:用作生成簽名(必須為英文或數(shù)字,長度為3-32字符),用于后面連接時的校驗。

此項配置配置生效還要與后端運行校驗

image
補充說明

開發(fā)人員可以在阿里云注冊服務(wù)器地址,若為了快速實現(xiàn)開發(fā)或是體驗功能,可以使用內(nèi)網(wǎng)穿透工具,即將本地地址映射到公網(wǎng)。

我這里用的是natapp,快速配置可查看鏈接NATAPP1分鐘快速新手圖文教程,按照圖文教程即可申請到一個免費的隧道。但是建議開發(fā)者購買一個收費的隧道(只針對natapp),兩個原因:

  1. 避免每次重啟應(yīng)用生成隨機域名又要修改配置,
  2. 由于微信部分功能的安全考慮,需要對應(yīng)一個https的域名,需注冊一個二級域名,二級域名僅支持綁定付費隧道(購買的二級域名要可用于微信開發(fā),且有ssl證書)。
image

當(dāng)開發(fā)著配置url和token后,發(fā)現(xiàn)提交后依然提示配置失敗。這是微信處于安全考慮,保證微信接入的是當(dāng)前開發(fā)著,需要同時與后臺進行校驗,具體可參考接入指南。

image

其中關(guān)鍵信息:

  1. 直接原樣返回echostr參數(shù)內(nèi)容,就算不錯校驗,也算接入成功;
  2. GET請求方式,請求參數(shù)有signature,timestamp,nonce,echostr;
  3. 將token、timestamp、nonce三個參數(shù)進行字典序排序后進行sha1加密,然后與請求中的signature對比
公眾號接入流程

1運行natapp

image

2驗證簽名的方法(token與接口配置信息中的一致)

public static boolean checkSignature(String signature,String timestamp,String nonce){
    // 1 將token、timestamp、nonce三個參數(shù)進行字典序排序
    String[] arr = {"123qwe", timestamp, nonce};
    Arrays.sort(arr);
    // 2 將三個參數(shù)字符串拼接成一個字符串進行sha1加密
    StringBuilder sb = new StringBuilder();
    for (String s : arr) sb.append(s);
    // SHA1加密
    String mySignature = SecurityUtil.SHA1(sb.toString());
    // 3 開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信
    return mySignature.equals(signature);
}

3編寫驗證微信接入的控制器代碼

@Controller
@RequestMapping("/api/v1/wechat1")
public class WeChatController {

    private static Logger logger = LoggerFactory.getLogger(WeChatController.class);

    @GetMapping("/gzh")
    @ResponseBody
    public String validate(String signature,String timestamp,String nonce,String echostr){
        // 簽名校驗
        if (!WeChatUtil.checkSignature(signature, timestamp, nonce)) {
            logger.info("WeChatController.validate -- 公眾號接入失敗");
            return null;
        }
        logger.info("WeChatController.validate -- 公眾號接入成功,echostr:{}"+echostr);
        // 原樣返回
        return echostr;
    }
}    

4后端代碼運行run

5接口配置信息填寫對應(yīng)的URL和token后,點擊提交按鈕

image

6配置成功


至此,驗證URL有效性成功后即接入生效,成為開發(fā)者,你可以在公眾平臺網(wǎng)站中申請微信認(rèn)證,認(rèn)證成功后,將獲得更多接口權(quán)限,滿足更多業(yè)務(wù)需求。

成為開發(fā)者后,用戶每次向公眾號發(fā)送消息、或者產(chǎn)生自定義菜單、或產(chǎn)生微信支付訂單等情況時,開發(fā)者填寫的服務(wù)器配置URL將得到微信服務(wù)器推送過來的消息和事件,開發(fā)者可以依據(jù)自身業(yè)務(wù)邏輯進行響應(yīng),如回復(fù)消息。

注:測試號管理中的其他參數(shù)在后續(xù)功能開發(fā)中介紹


細過程,可參考源代碼(持續(xù)更新):https://github.com/chetwhy/cloud-flow

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容