1. 程式人生 > >springmvc開發微信公眾號介面 微信公眾號測試賬號配置介面Token驗證

springmvc開發微信公眾號介面 微信公眾號測試賬號配置介面Token驗證

綜合筆者多年的微信公眾號以及微信產品開發經驗,本篇內容把微信公眾號測試賬戶的介面配置過程分享給廣大開發者朋友,開發語言是Java,採用目前流行的springmvc框架開發。

開發前必讀以及準備工作:

1、微信公眾平臺開發是指為微信公眾號進行業務開發,為移動應用、PC端網站、公眾號第三方平臺(為各行各業公眾號運營者提供服務)的開發,請開發者前往微信開放平臺接入。

2、在申請到認證公眾號之前,開發者可以先通過測試號申請系統,快速申請一個介面測試賬號,立即開始介面測試開發。

微信公眾號測試賬號官方申請連結:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

微信掃描關注後登入

登入進來後即可看到申請的微信公眾號測試賬號資訊以及appID和appsecret

一、介面開發

請求方式:http get請求(只能用get方式)

@Controller
@RequestMapping(value = "msg")
public class WeChatActionController {
    /**
     * 微信訊息接收和token驗證
     * @param request
     * @param response
     * @throws IOException
     */
    @RequestMapping("/weChatToken")
    public void weChat(HttpServletRequest request, HttpServletResponse response) throws IOException {
        boolean isGet = request.getMethod().toLowerCase().equals("get");
        if (isGet) {
            // 微信加密簽名
            String signature = request.getParameter("signature");
            // 時間戳
            String timestamp = request.getParameter("timestamp");
            // 隨機數
            String nonce = request.getParameter("nonce");
            // 隨機字串
            String echostr = request.getParameter("echostr");
            // 通過檢驗signature對請求進行校驗,若校驗成功則原樣返回echostr,表示接入成功,否則接入失敗
            if (signature != null && CheckoutUtil.checkSignature(signature, timestamp, nonce)) {
                try {
                    PrintWriter print = response.getWriter();
                    print.write(echostr);
                    print.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 檢驗微信加密簽名信息的工具類

public class CheckoutUtil {

    // 與測試賬號介面配置資訊中的Token要一致
    private static String token = "999";

    /**
     * 驗證簽名
     * @param signature
     * @param timestamp
     * @param nonce
     * @return
     */
    public static boolean checkSignature(String signature, String timestamp, String nonce) {
        String[] arr = new String[] { token, timestamp, nonce };
         Arrays.sort(arr);// 將token、timestamp、nonce三個引數進行字典序排序
        StringBuilder content = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr[i]);
        }
        MessageDigest md = null;
        String tmpStr = null;

        try {
            md = MessageDigest.getInstance("SHA-1");
            // 將三個引數字串拼接成一個字串進行sha1加密
            byte[] digest = md.digest(content.toString().getBytes());
            tmpStr = byteToStr(digest);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        // 將sha1加密後的字串可與signature對比,標識該請求來源於微信
        return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
    }

    /**
     * 將位元組陣列轉換為十六進位制字串
     *
     * @param byteArray
     * @return
     */
    private static String byteToStr(byte[] byteArray) {
        String strDigest = "";
        for (int i = 0; i < byteArray.length; i++) {
            strDigest += byteToHexStr(byteArray[i]);
        }
        return strDigest;
    }
}

二、配置介面資訊

點選介面配置資訊右側的修改,填寫介面的url和Token(任意填寫都可以)提交。這個url用於服務端驗證此處配置的Token

點選提交,顯示Token驗證成功,至此微信公眾號測試賬號介面配置以及Token驗證已經完成,接著為了擁有微信更多的JS介面呼叫許可權,繼續按照下面過程配置JS安全介面域名。

三、配置JS介面安全域名

JS介面安全域名右側的修改,填入上面配置的域名資訊(注意是域名,不帶http,不帶www,例如:baidu.com)

四、配置網頁授權

填寫安全域名(跟上面的一樣,填寫域名資訊,不帶http,不帶www)

下次內容給大家分享Jfinal框架實現微信公眾號測試賬戶的介面資訊配置過程以及測試選單配置過程。歡迎開發者朋友交流,筆者電話(微信):18629374628