微信公眾號開發 (1) 微信接入認證成為開發者

一、前言

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

本文將實現

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


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

個人用戶建議註冊訂閱號

微信公眾號開發 (1) 微信接入認證成為開發者

最後註冊成功如下:

微信公眾號開發 (1) 微信接入認證成為開發者

三、接入認證成為開發者


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

微信公眾號開發 (1) 微信接入認證成為開發者

1、填寫服務器配置


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

why?

測試賬號的權限多點,如果已經認證了的賬號可不需要利用測試賬號開發

微信公眾號開發 (1) 微信接入認證成為開發者

微信公眾號開發 (1) 微信接入認證成為開發者

登錄進去

微信公眾號開發 (1) 微信接入認證成為開發者

填寫服務器 URL 和自定義的校驗Token

微信公眾號開發 (1) 微信接入認證成為開發者

溫馨小提示:

1. 微信公眾號接口必須以http://或https://開頭,分別支持80端口和443端口!

2. 這裡的url可以選擇自己買的服務器地址,記得必須開放80端口去使用!
或者使用內網映射外網工具生成一個域名地址供給你開發使用,此方法自行百度,如下就是其中一種使用~

2、提交驗證URL有效性

微信公眾號開發 (1) 微信接入認證成為開發者

配置好後,點擊提交,微信服務器會發送一個GET請求到我們配置的地址上,在後臺通過get請求的方式獲取,請求的時候會傳入幾個參數

微信公眾號開發 (1) 微信接入認證成為開發者

回到項目中,處理微信認證,然後啟動項目測試

溫馨小提示:這裡小編將自己的內網映射到外網了,方便本地測試~

<code>@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);
}
}

}/<code>

其中sha1加密工具類

<code>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;
}
}/<code>

注意端口必須為80端口哦!!!

微信公眾號開發 (1) 微信接入認證成為開發者

3、測試接入認證

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

微信公眾號開發 (1) 微信接入認證成為開發者

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

本文案例demo源碼

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


分享到:


相關文章: