JAVA折騰微信公眾平台(Token驗證)[轉]


JAVA折騰微信公眾平台(Token驗證)

BAE的JAVA還在內測的時候,抱着好奇的態度發郵件申請了內測權限,當時折騰了一天,然后就沒折騰了。現在BAE的JAVA都已經正式開放使用了,我又蛋疼的想寫點什么,否則每天僅僅只是工作上的使用,是得不到多大的進步的。

最近微信的公眾平台比較火,於是我也想弄個微信來玩玩。如何注冊微信公眾號?點擊之后就可以看到官方的答案了(額,比較坑爹)。

注冊之后,可以選擇編輯模式和開發模式,這里要說的是開發模式。

首先要開啟開發模式必須要進行Token的一個驗證,你給出一個地址,微信發送請求,然后你給出相應,就這么簡單。雖然說是簡單,但是這是事后才說的,官方只有PHP的DEMO,我用JAVA開發的時候各種蛋疼不會弄,不過好在還是弄出來了。

上傳代碼

以下代碼是校驗Token的關鍵代碼,其中還有一個SHA1加密的類在附件中,這里就不貼出來了。需要注意的是,這里的類我是繼承的HttpServlet,也就是說要進行web.xml的配置,這個就不多說了。

無問題后上傳到你的空間,我用的是BAE,大家也可以試試。

package net.binjoo.wechat;

import java.io.IOException;
import java.util.Arrays;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.binjoo.utils.SHA1;

@SuppressWarnings("serial")
public class WechatCallbackApi extends HttpServlet {
    // 自定義 token
    private String TOKEN = "這個地方由你自己定義";

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 微信加密簽名
        String signature = request.getParameter("signature");
        // 隨機字符串
        String echostr = request.getParameter("echostr");
        // 時間戳
        String timestamp = request.getParameter("timestamp");
        // 隨機數
        String nonce = request.getParameter("nonce");

        String[] str = { TOKEN, timestamp, nonce };
        Arrays.sort(str); // 字典序排序
        String bigStr = str[0] + str[1] + str[2];
        // SHA1加密
        String digest = new SHA1().getDigestOfString(bigStr.getBytes()).toLowerCase();

        // 確認請求來至微信
        if (digest.equals(signature)) {
            response.getWriter().print(echostr);
        }
    }
}

開啟消息接口

進入微信公眾平台,選擇導航菜單欄中的【高級設置 - 開發模式 - 成為開發者】或者點擊這里進入,進入后填寫網址URL和Token,其中Token可由可以任意填寫,用作生成簽名,但必須與WechatCallbackApi類中的常量TOKEN一致,否則不能通過校驗,成不了開發者。

一切填寫無問題之后,點擊提交就可以了。是否通過的結果馬上就可以得到響應,希望大家都能夠看到【提交成功】的提示。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM