| 方案 | 工具 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|---|
| 內網穿透隧道 | Ngrok, FRP, Cpolar, NPS | 免費額度、配置簡單、支持 HTTPS、固定子域名 | 免費版流量/連接數限制、不穩定 | 個人開發、臨時測試 |
| 動態域名解析 + 路由器映射 | 花生殼、No-IP、DDNS + 路由器 DMZ/端口映射 | 自有域名、長期穩定 | 需公網 IP、路由器配置複雜、運營商可能封 443/80 | 家庭/小型公司有公網 IP |
| 雲服務器直接部署 | 阿里云/騰訊云/華為云 ECS + 域名備案 + Nginx 反向代理 + Certbot SSL | 生產級穩定、無流量限制、完整控制權 | 需購買服務器、域名備案(~10-20天) | 正式項目、企業級開發 |
./ngrok authtoken YOUR_TOKEN。./ngrok http 8080@GetMapping("/wechat")
public void verify(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String signature = req.getParameter("signature");
String timestamp = req.getParameter("timestamp");
String nonce = req.getParameter("nonce");
String echostr = req.getParameter("echostr");
String token = "YOUR_TOKEN"; // 與公眾平台配置一致
String[] arr = {token, timestamp, nonce};
Arrays.sort(arr);
String sortedStr = String.join("", arr);
String sha1 = DigestUtils.sha1Hex(sortedStr); // Apache Commons Codec
if (sha1.equals(signature)) {
resp.getWriter().write(echostr); // **原樣返回 echostr,不要加任何字符/換行**
} else {
resp.getWriter().write("fail");
}
}
「公網 HTTPS + 域名備案 + Token 邏輯正確 + echostr 原樣返回」四要素缺一不可,逐項核對即可解決 99% 接入失敗。