首页 > 其他分享 >微信公众号开发|接入

微信公众号开发|接入

时间:2024-08-24 15:25:28浏览次数:14  
标签:nonce java String RequestParam 接入 微信 公众 hexString import

服务器地址配置

服务器可以使用内网穿透(教程在上一篇文章)或者买一个

在这里插入图片描述

接入

https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html

package com.example.springboot.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Comparator;

@RestController
public class WeChatController {

    private static final String TOKEN = "配置的TOKEN

    @GetMapping("/")
    public String weixin(HttpServletRequest request,
                         @RequestParam(name = "signature", required = false) String signature,
                         @RequestParam(name = "timestamp", required = false) String timestamp,
                         @RequestParam(name = "nonce", required = false) String nonce,
                         @RequestParam(name = "echostr", required = false) String echostr) {
        try {
            // 将token, timestamp, nonce按字典序排序
            String[] arr = {TOKEN, timestamp, nonce};
            Arrays.sort(arr);

            // 将排序后的字符串拼接成一个字符串
            String content = String.join("", arr);

            // 使用SHA-1算法进行加密
            MessageDigest md = MessageDigest.getInstance("SHA-1");
            byte[] digest = md.digest(content.getBytes());

            // 转换为十六进制字符串
            String hexString = bytesToHex(digest);

            if (hexString.equals(signature)){
                return echostr;
            }else {
                return "error";
            }
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("SHA-1 algorithm not found", e);
        }

    }


    private String bytesToHex(byte[] bytes) {
        StringBuilder hexString = new StringBuilder();
        for (byte b : bytes) {
            String hex = Integer.toHexString(0xff & b);
            if (hex.length() == 1) {
                hexString.append('0');
            }
            hexString.append(hex);
        }
        return hexString.toString();
    }

    // 其他处理消息的方法
}

标签:nonce,java,String,RequestParam,接入,微信,公众,hexString,import
From: https://blog.csdn.net/weixin_41562028/article/details/141485983

相关文章

  • 【苹果手机微信分身,解锁你的社交超能力!】
    Hey小伙伴们,是不是经常觉得一个微信账号不够用?工作、生活、学习、兴趣...各种消息混杂,让人应接不暇?别担心,今天就给大家安利一个苹果手机用户的超级福利——微信分身功能,让你的社交生活瞬间升级,成为真正的社交达人!✨......
  • 微信小程序根据本地缓存图片路径,生成缩略图的方法
    公共方法js文件/***生成缩略图*@paramcanvasIdcanvas容器的id*@paramfileUrl缓存在本地图片的路径*@paramthumbnailRange期待生成的缩略图尺寸范围,默认150,即宽或高不会超过150px*/functiongenerateThumbnail(canvasId,fileUrl,thumbnailRange=150){......
  • 将洛谷私信接入Windows
    首先下载一个私信Github:https://github.com/GCSG01/LG_Show_Massger/archive/refs/heads/main.zip然后解压,找到src/settings.json,把你的洛谷cookie和UID填进去,点击Start.cmd运行。(其余的不要改)之后不出意外就会有两个窗口:AI功能:下载仓库:https://github.com/OI-liyi......
  • 微信小程序如何存储值
    微信小程序存储值的方法主要包括本地存储和云存储两种方式。以下是这两种方式的详细介绍:一、本地存储本地存储是在用户的设备上保存数据的技术,使得数据在小程序关闭后仍能保留。微信小程序提供了多种API来实现本地存储功能。1.缓存数据方式:以键值对(key,data)的形式存储数......
  • js根据精、维度获取当前位置与目标位置距离方法微信小程序代码
    js根据精、维度获取当前位置与目标位置距离方法//将角度转换为弧度的函数functionrad(d){returnd*Math.PI/180.0;}//计算两点之间距离的函数functiongetDistance(lat1,lng1,lat2,lng2){varradLat1=rad(lat1);varradLat2=rad(lat2);va......
  • 基于java+ssm+vue的外卖微信小程序
    ......
  • 批量检测微信小程序封禁状态的示例代码以及接口
    以下是一个PHP脚本示例,演示了如何批量检查多个微信小程序的封禁状态。您只需要将示例中的`appid1`,`appid2`,`appid3`替换为您实际的小程序应用ID,即可获取各个小程序的状态信息。```php<?php//需要检查的小程序AppID列表$appIds=array('appid1','appid2','a......
  • 微信群发软件安全稳定不封号,微信一键群发2000人的工具,微信一键群发工具官方下载
     今天给大家推荐一款我们目前在使用的电脑群发工具掘金小蜜,不仅可以静默清粉,而且还可以无限多开,方便你同时管理多个账号,群发功能更是十分强大,轻松释放你的双手。掘金小蜜(只支持Win7及以上操作系统,没有推Mac版和手机客户端。)软件下载地址>>点击此处群发功能下载打开登录,这......
  • 博客园-awescnb插件-geek皮肤优化--公众号卡片
    简介博客园-awescnb插件-geek皮肤暂不支持配置展示公众号二维码,此文章目的使用手动注入方式自定义实现公众号卡片效果效果展示公众号卡片动态效果鼠标移入前为公众号指引页鼠标移入后显示公众号二维码切换动画为动态反转首页展示实现在博客日历元素blog-......
  • java+vue计算机毕设基于微信小程序英语在线考试系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展,智能手机已成为人们日常生活中不可或缺的一部分,尤其在教育领域,移动学习因其便捷性、灵活性和高效性正逐步成为学习的新......