微信公众号开发|接入

服务器地址配置

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

在这里插入图片描述

接入

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();
    }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值