hello各位好,這里是X,今天來(lái)玩玩微信公眾號(hào),我最近看過(guò)很多關(guān)于公眾號(hào)的資料和視頻,感覺(jué)講的比較亂,也可能是我個(gè)人的問(wèn)題,而且微信公眾號(hào)的開(kāi)發(fā)者文檔講的也比較模糊一點(diǎn),畢竟上面很多例子都講的不是很全面的
這篇博客作為開(kāi)篇吧,希望喜歡的朋友多多點(diǎn)贊收藏??
基本配置
公眾號(hào)基本配置傳送門(mén)
完成的效果
服務(wù)器篇
這里很多博主或者視頻教程用的可能是express或者XXapp之類(lèi)的,我覺(jué)得還是直接弄真實(shí)的就好,不然還需要配置服務(wù)器、監(jiān)聽(tīng)服務(wù)器之類(lèi)的,比較麻煩
??????(可參考)本項(xiàng)目用到的同款服務(wù)器輕量通用型2核4G
準(zhǔn)備好服務(wù)器后,開(kāi)通好對(duì)應(yīng)的端口號(hào),不過(guò)這里默認(rèn)應(yīng)該是開(kāi)啟的,因?yàn)槲⑿殴娞?hào)只接受80或者443端口,這兩個(gè)端口主要是服務(wù)器一般都是開(kāi)啟狀態(tài)的???♀????♀?
后臺(tái)開(kāi)通
微信公眾號(hào)開(kāi)發(fā)文檔傳送門(mén)??
以下是開(kāi)發(fā)文檔截圖
驗(yàn)證邏輯
大致的驗(yàn)證流程:就是你自己定義一個(gè)Token,然后寫(xiě)好一個(gè)接口(get請(qǐng)求),在這里微信怎么和你進(jìn)行驗(yàn)證,也就是你怎么知道這個(gè)請(qǐng)求是微信發(fā)過(guò)來(lái)的呢?這里的關(guān)鍵就是signature(加密簽名),微信會(huì)將上面的4個(gè)參數(shù)傳給你,經(jīng)過(guò)你的加密校驗(yàn)后,如果得到的簽名和微信傳過(guò)來(lái)的那個(gè)簽名是一致的,那么就驗(yàn)證成功
主要用到的依賴
<!-- https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.13</version>
</dependency>
<dependency>
驗(yàn)證的工具類(lèi)
package com.xmonster.util;
/**
* @program: official-account
* @description: CheckUtil工具類(lèi)
* @author: xmonster_大魔王
* @create: 2022-09-13 22:06
**/
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Component;
import java.util.Arrays;
/**
* 校驗(yàn)的工具類(lèi) 微信使用
*/
@Component
public class CheckUtil {
private static final String token = "xmonster"; //這個(gè)token值要和服務(wù)器配置一致
public static boolean checkSignature(String signature, String timestamp, String nonce) {
String[] arr = new String[]{token, timestamp, nonce};
// 排序
Arrays.sort(arr);
// 生成字符串
StringBuilder content = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
content.append(arr[i]);
}
// sha1加密
String temp = getSHA1String(content.toString());
return temp.equals(signature); // 與微信傳遞過(guò)來(lái)的簽名進(jìn)行比較
}
private static String getSHA1String(String data) {
// 使用commons codec生成sha1字符串
return DigestUtils.shaHex(data);
}
}
接口
package com.xmonster.controller;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.xmonster.entity.AlarmParamsDTO;
import com.xmonster.service.PushMessageService;
import com.xmonster.util.CheckUtil;
import com.xmonster.util.HttpClientUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
/**
* @program: official-account
* @description: 微信服務(wù)接口
* @author: xmonster_大魔王
* @create: 2022-09-13 22:05
**/
@RestController
@RequestMapping("/weixin")
public class WeixinServlet extends HttpServlet {
/**
* 微信用戶token認(rèn)證
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@Override
@RequestMapping(value = "/index", method = {RequestMethod.GET})
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 接收微信服務(wù)器以Get請(qǐng)求發(fā)送的4個(gè)參數(shù)
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
PrintWriter out = response.getWriter();
if (CheckUtil.checkSignature(signature, timestamp, nonce)) {
out.print(echostr); // 校驗(yàn)通過(guò),原樣返回echostr參數(shù)內(nèi)容
} else {
System.out.println("不是微信發(fā)來(lái)的請(qǐng)求!");
}
}
}
到這里我們將這個(gè)項(xiàng)目的端口號(hào)改為80,然后打成jar包,丟到服務(wù)器/home路徑
通過(guò)XShell,將這個(gè)java項(xiàng)目啟動(dòng)起來(lái)就好
啟動(dòng)好了之后我們?nèi)ノ⑿殴娞?hào)配置
這個(gè)接口用的也是上面的(一一對(duì)應(yīng)哈),token你隨便定義就好文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-453272.html
好啦,這里的配置就到這里結(jié)束了,保存好之后,退到基本設(shè)置,啟用它即可~
后續(xù)會(huì)帶來(lái)關(guān)于微信公眾號(hào)更多的功能,下期見(jiàn)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-453272.html
到了這里,關(guān)于微信公眾號(hào)基本配置之服務(wù)器配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!