Java微信公衆平臺開發之接入

接入微信公衆平臺開發,開發者需要按照如下步驟完成:
1、填寫服務器配置
2、驗證服務器地址的有效性

3、依據接口文檔實現業務邏輯

 

第一步:填寫服務器配置

登錄微信公衆平臺官網後,在公衆平臺官網的開發-基本設置頁面,勾選協議成爲開發者,點擊“修改配置”按鈕,填寫服務器地址(URL)、Token和EncodingAESKey,其中URL是開發者用來接收微信消息和事件的接口URL。Token可由開發者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)。EncodingAESKey由開發者手動填寫或隨機生成,將用作消息體加解密密鑰,推薦使用兼容模式。

第二步:驗證消息的確來自微信服務器

開發者提交信息後,微信服務器將發送GET請求到填寫的服務器地址URL上,開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成爲開發者成功,否則接入失敗。

/**
     * 處理微信服務器發來的get請求,進行簽名的驗證
     * <p>
     * signature 微信端發來的簽名
     * timestamp 微信端發來的時間戳
     * nonce     微信端發來的隨機字符串
     * echostr   微信端發來的驗證字符串
     */
    @GetMapping(value = "wechat")
    public void validate(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String signature = request.getParameter("signature");
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String echostr = request.getParameter("echostr");
        IOUtils.write(SignatureUtil.checkSignature(signature, wechatAccountConfig.getToken(), timestamp, nonce) ? echostr : null, response.getOutputStream());
    }

    /**
     * 此處是處理微信服務器的消息轉發的
     */
    @PostMapping(value = "wechat")
    public void processMsg(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //調用核心服務類接收處理請求
        defaultMsgDispose(request.getInputStream(), response.getOutputStream());
    }

加密/校驗流程如下:

1)將token、timestamp、nonce三個參數進行字典序排序
2)將三個參數字符串拼接成一個字符串進行sha1加密
3)開發者獲得加密後的字符串可與signature對比,標識該請求來源於微信

/**
     * SHA1加密 驗證簽名
     *
     * @param signature 微信簽名
     * @param params    token,timestamp,nonce
     * @return 是否符合
     */
    public static boolean checkSignature(String signature, String... params) {
        Arrays.sort(params);
        String str = StringUtils.join(params);
        String sign = DigestUtils.sha1Hex(str);
        return Objects.equals(signature, sign);
    }

第三步:依據接口文檔實現業務邏輯

驗證URL有效性成功後即接入生效,成爲開發者。你可以在公衆平臺網站中申請微信認證,認證成功後,將獲得更多接口權限,滿足更多業務需求。

我沒做過相關開發,只是根本自己理解寫的邏輯

比如Java微信公衆平臺開發之消息管理

具體源碼:https://github.com/philjing/my_wechat/blob/master/src/main/java/com/phil/wechat/CoreController.java

掃一掃加羣

 

發佈了44 篇原創文章 · 獲贊 86 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章