微信公衆號開發 (1) 微信接入認證成爲開發者

1、前言

本系列教程將基於springboot2.1.8.RELEASE完成java

本文將實現git

  1. 註冊帳號
  2. 接入微信
  3. 認證成爲開發者

2、進入微信公衆平臺註冊帳號

https://mp.weixin.qq.com/

我的用戶建議註冊訂閱號在這裏插入圖片描述最後註冊成功以下:在這裏插入圖片描述spring

3、接入認證成爲開發者

可參考微信官方開發文檔: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319

在這裏插入圖片描述

一、填寫服務器配置

選擇左下方的開發者工具,進入測試帳號開發api

why?
測試帳號的權限多點,若是已經認證了的帳號可不須要利用測試帳號開發

在這裏插入圖片描述在這裏插入圖片描述登陸進去在這裏插入圖片描述springboot

填寫服務器URL和自定義的校驗Token在這裏插入圖片描述服務器

舒適小提示:微信

  1. 微信公衆號接口必須以http://或https://開頭,分別支持80端口和443端口!
  2. 這裏的url能夠選擇本身買的服務器地址,記得必須開放80端口去使用! 或者使用內網映射外網工具生成一個域名地址供給你開發使用,此方法自行百度,以下就是其中一種使用~在這裏插入圖片描述

二、提交驗證URL有效性

在這裏插入圖片描述

配置好後,點擊提交,微信服務器會發送一個GET請求到咱們配置的地址上,在後臺經過get請求的方式獲取,請求的時候會傳入幾個參數在這裏插入圖片描述回到項目中,處理微信認證,而後啓動項目測試app

舒適小提示:這裏小編將本身的內網映射到外網了,方便本地測試~
@Slf4j
@RestController
@RequestMapping("/api/weixin/index")
@Api(tags = "微信 - 接口")
public class IndexController extends BaseController {

    // TODO 這裏的token是微信公衆平臺上本身所配的!
    private static final String token = "zhengqing";

    /**
     * 處理微信認證:驗證服務器地址的有效性,get提交
     * signature: 微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。
     * timestamp 時間戳
     * nonce: 隨機數
     * echostr: 隨機字符串
     */
    @GetMapping
    public void checkSignature(HttpServletRequest request, HttpServletResponse response) throws IOException {
        System.out.println("============= 處理微信認證 ===============");
        // 拿到微信的請求參數
        String signature = request.getParameter("signature");
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String echostr = request.getParameter("echostr");

        // ① 將token、timestamp、nonce三個參數進行字典序排序 b a d c h ==>a b c d h
        String[] strArr = {token, timestamp, nonce};
        // 字典排序
        Arrays.sort(strArr);
        // ② 將三個參數字符串拼接成一個字符串進行sha1加密
        StringBuffer sb = new StringBuffer();
        // 字符串拼接
        for (String str : strArr) {
            sb.append(str);
        }
        // 加密
        String sha1Str = SecurityUtil.sha1(sb.toString());
        // ③ 開發者得到加密後的字符串可與signature對比,標識該請求來源於微信
        if (sha1Str.equals(signature)) {
            // 若是相等,就是來自微信請求
            // 若確認這次GET請求來自微信服務器,原樣返回echostr參數內容,則接入生效
            response.getWriter().println(echostr);
        }
    }

}

其中sha1加密工具類微信公衆平臺

public class SecurityUtil {
    public static String sha1(String str) {
        try {
            StringBuilder sb = new StringBuilder();
            MessageDigest digest = MessageDigest.getInstance("sha1");
            // 放入加密字符串
            digest.update(str.getBytes());
            // 進行加密
            byte[] digestMsg = digest.digest();
            // byte轉換16進制
            for (byte b : digestMsg) {
                sb.append(String.format("%02x", b));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return str;
    }
}

注意端口必須爲80端口哦!!!在這裏插入圖片描述工具

三、測試接入認證

啓動項目後,回到微信公衆平臺,提交發送接入認證請求,若是配置正確,會提示配置成功,並保存配置信息

在這裏插入圖片描述

就這樣,咱們簡單的完成了微信認證成爲開發者 ~

本文案例demo源碼

https://gitee.com/zhengqingya/java-workspace

相關文章
相關標籤/搜索