大家好,欢迎来到IT知识分享网。
1. 登录微信公众平台——开发管理——启用消息推送

2. 微信扫码确认开启
3. 可查看消息推送配置指南,并获取测试工具(或直接跳过,直接操作下列操作)
4. 编写接口(微信消息推送需要验证请求的合法性)
① 项目中yml中配置微信配置,如下
appId和appSecret都可以从公众平台上获取,在开发管理-开发者ID里面
token自己随便定义(必须为英文或数字,长度为3-32字符),待会要配置到消息推送的配置中
②编写微信工具类
@Service public class WxService { private static final Logger log = LoggerFactory.getLogger(WxService2.class); @Autowired private RedisService redisService; @Value("${wx.appId}") private String appId; @Value("${wx.appSecret}") private String appSecret; @Value("${wx.token}") private String token; private static RestTemplate restTemplate = new RestTemplate(); / * 获取access_token,每个公众账号一天请求2000次Access_Token * @return */ public String getAccessToken() { String accessToken = (String) redisService.getKey("wxAccessToken"); if (StringUtils.isBlank(accessToken)) { String interfaceUrl = "https://api.weixin..com/cgi-bin/token"; String url = interfaceUrl + "?grant_type=client_credential" + "&appid=" + appId + "&secret=" + appSecret; String result = restTemplate.getForObject(url, String.class); JSONObject entries = JSONUtil.parseObj(result); log.info("access_token:{}", entries); accessToken = entries.getStr("access_token"); if (StringUtils.isNotBlank(accessToken)) { redisService.setKey("wxAccessToken", accessToken, 1L, TimeUnit.HOURS); } } log.info("accessToken:{}", accessToken); return accessToken; } / * 消息推送配置 验证请求的合法性 * @param signature * @param timestamp * @param nonce * @return */ public boolean checkSignature( String signature, String timestamp, String nonce) { // 小程序消息推送自己配置的token log.info("验证token:{}" + token); String[] arr = new String[]{token, timestamp, nonce}; // 将token、timestamp、nonce三个参数进行字典序排序 Arrays.sort(arr); // 将排序后的结果拼接成一个字符串 String content = String.join("", arr); try { //获取加密工具 MessageDigest sha1 = MessageDigest.getInstance("SHA-1"); // 使用SHA-1加密 byte[] hashBytes = sha1.digest(content.getBytes()); //将字节数组转换为十六进制字符串 StringBuilder hexString = new StringBuilder(); for (byte b : hashBytes) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) hexString.append('0'); hexString.append(hex); } log.info("加密后signature:{}", hexString); // 将加密后的字符串与微信服务器提供的签名进行对比 return hexString.toString().equals(signature); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // 如果签名不匹配,则返回false return false; } }
③编写controller
@Api(tags = "微信相关接口") @RequestMapping("/wx") @RestController @Validated public class WxController { @Autowired private WxService wxService; @ApiOperation("微信消息配置验证") @GetMapping("/mesRecive") public String mesRecive(String signature, String timestamp, String nonce, String echostr) { //消息合法 if (wxService.checkSignature(signature, timestamp, nonce)) { return echostr; } return null; } }
5. 部署到服务器,使用官方工具测试接口
URL(服务器地址):必须以http://或https://开头,分别支持80端口和443端口,填写接口路径
Token:就刚刚项目中配置的token
6. 测试工具验证结果成功后,填写消息推送配置(如果超时,回到启用页面重新开启然后填写配置)
若是URL和Token填写不正确,会提交不了
7. 开通成功
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/149771.html