微信公众号java开发沉淀(一)接入开发

xiaoxiao2025-08-17  22

1. 申请一个微信公众号,或者微信测试公众号

​ 不说了

2. 接入开发

​ 我tomcat本地跑起来,用ngrok代理生成一个外网可以访问的url, 代理我的localhost:80, 所以接入的接口 https://182d99e2.ngrok.io/wx/api/joinDev 会来访问我本机启动的tomcat 的 http://localhost:80/wx/api/joinDev

​ 为了方便开发,我使用明文模式或者兼容模式接入,代码如下。就不需要做加解密的工作了。安全性不高的项目也可以不用。

​ 接入的时候,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数访问我们填写的URL,我们验证成功的时候,原样返回echostr 就接入成功了。当然,不校验直接返回也能接入成功。看怎么玩了。

package com.tsing.wechat.controller; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Hex; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; /** * 微信接入开发 * * @author susq * @since 2018-10-13 */ @Slf4j @RestController @RequestMapping(value = "/api/joinDev") public class JoinDevController { private static final String TOKEN = "alwaysBrother"; @RequestMapping(method = RequestMethod.GET) public String join(HttpServletRequest request) { // 微信加密签名 String signature = request.getParameter("signature"); // 时间戳 String timestamp = request.getParameter("timestamp"); // 随机数 String nonce = request.getParameter("nonce"); // 随机字符串 String echostr = request.getParameter("echostr"); //如果验证消息是来自微信,返回echostr boolean check = checkSignature(signature, timestamp, nonce); if (check) { return echostr; } return null; } /** * 验证签名 */ private boolean checkSignature(String signature, String timestamp, String nonce) { // 1.将token、timestamp、nonce三个参数进行字典序排序 String[] arr = new String[]{TOKEN, timestamp, nonce}; Arrays.sort(arr); // 2. 将三个参数字符串拼接成一个字符串进行sha1加密 StringBuilder content = new StringBuilder(); for (final String anArr : arr) { content.append(anArr); } String tmpStr = null; try { MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] digest = md.digest(content.toString().getBytes()); tmpStr = Hex.encodeHexString(digest); log.info("原signature:{},加密后的signature:{}", signature, tmpStr); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // 3.将sha1加密后的字符串可与signature对比,标识该请求来源于微信 return signature.equals(tmpStr); } }

3. 配置服务器

​ 登录微信公众平台页面,到最下面开发

填写服务器配置,URL是自己的服务提供的一个接口,token是自己随便编的,EncodingAESKey 是使用安全模式的时候,加解密消息的key.

填写完后,点提交,微信就会发送GET请求到填写的服务器地址URL上,验证成功后提示接入成功。

如果是测试号,填写完 URL 和 Token后点提交的时会进项接入。成功的时候会有提示。

转载请注明原文地址: https://www.6miu.com/read-5034947.html

最新回复(0)