SpringCloud Alibaba 开发微信公众号(配置地址到微信公众平台

简介: SpringCloud Alibaba 开发微信公众号(配置地址到微信公众平台

gitee项目地址:gitee.com/qlglg123/sp…

上节写了新建公众号流程以及内网穿透工具的使用,以上准备工作整完就可以开始对微信公众平台的接口进行测试了。

1.新建web项目

引入web依赖

网络异常,图片无法展示
|
WeCharController测试

@RestController
@RequestMapping("/v1/weChart")
public class WeCharController {
    private String token = "lizzuabc123123";
    @Resource
    AccessTokenService accessTokenService;
    //接口测试
    @PostMapping("/info")
    public String getInfo(){
        return "hello word ! ";
    }
 }
复制代码

启动服务测试

网络异常,图片无法展示
|

接入微信平台

网络异常,图片无法展示
|

接入指南的步骤说明

接入概述
接入微信公众平台开发,开发者需要按照如下步骤完成:
1、填写服务器配置
2、验证服务器地址的有效性
3、依据接口文档实现业务逻辑
复制代码

第一步:填写服务器配置

网络异常,图片无法展示
|
第二步:验证消息的确来自微信服务器

网络异常,图片无法展示
|
以上说明当你第一步配置了URL、token点击提交后,他会发送GET请求到你的服务器,携带signature、timestamp、nonce、echostr。 测试:

@GetMapping
public String getWeChar(@RequestParam String signature,
                        @RequestParam String timestamp,
                        @RequestParam String nonce,
                        @RequestParam String echostr) {
    System.out.println("signature :" + signature);
    System.out.println("timestamp :" + timestamp);
    System.out.println("nonce :" + nonce);
    System.out.println("echostr :" + echostr);
    return echostr;
}
复制代码

数据正常返回,

网络异常,图片无法展示
|

若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数内容,则接入生效,成为开发者成功,否则接入失败。
复制代码

现在是没有增加校验直接返回了echostr。可以看到微信平台显示绑定成功

网络异常,图片无法展示
|
增加加密/校验流程

1)将token、timestamp、nonce三个参数进行字典序排序 
2)将三个参数字符串拼接成一个字符串进行sha1加密 
3)开发者获得加密后的字符串可与 signature 对比,标识该请求来源于微信
复制代码

给的文档是用PHP实现的代码,我们需要用java代码实现 sha1加密实现工具类

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
</dependency>
复制代码

创建访问认证工具类AccessAuthentication

import org.apache.commons.codec.digest.DigestUtils;
import java.io.Serializable;
import java.util.Arrays;
/**
 * @author lizzu
 * @date 2022/9/20 14:20
 * @description
 * 接入认证
 **/
public class AccessAuthentication implements Serializable {
    /**
     * 将token、timestamp、nonce三个参数进行字典序排序
     * 2)将三个参数字符串拼接成一个字符串进行sha1加密
     * 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
     */
    private String token;
    private String timestamp;
    private String nonce;
    private String signature;
    private AccessAuthentication(String token, String timestamp, String nonce, String signature) {
        this.token = token;
        this.timestamp = timestamp;
        this.nonce = nonce;
        this.signature = signature;
    }
    public static AccessAuthentication of(String token, String timestamp, String nonce, String signature) {
        return new AccessAuthentication(token, timestamp, nonce, signature);
    }
    /**
     * 接入验证
     *
     * @return 是否验证通过
     */
    public boolean checkSignature() {
        // 1、将token、timestamp、nonce三个参数进行字典序排序
        String[] strs = new String[]{this.token, this.timestamp, this.nonce};
        Arrays.sort(strs);
        // 将三个参数字符串拼接成一个字符串进行sha1加密
        StringBuilder sb =new StringBuilder();
        for (String str : strs) {
            sb.append(str);
        }
//        String str = strs[0] + strs[1] + strs[2];
        String str = sb.toString();
        // sha1加密 计算 SHA-1 摘要并将值作为十六进制字符串返回。
        String sha1Hex = DigestUtils.sha1Hex(str);
        // 比较签名值是否一致
        return sha1Hex.equals(this.signature);
    }
}
复制代码

增加校验功能

@GetMapping
public String getWeChar(@RequestParam String signature,
                        @RequestParam String timestamp,
                        @RequestParam String nonce,
                        @RequestParam String echostr) {
    System.out.println("signature :" + signature);
    System.out.println("timestamp :" + timestamp);
    System.out.println("nonce :" + nonce);
    System.out.println("echostr :" + echostr);
    //增加校验功能
    if (AccessAuthentication.of(token, timestamp, nonce, signature).checkSignature()) {
        return echostr;
    }
    return null;
}
复制代码

至此配置地址到微信公众平台完毕

下一篇 : 获取Access token


相关文章
|
11月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
2668 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
625 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
|
人工智能 自然语言处理 小程序
技术小白如何利用DeepSeek半小时开发微信小程序?
通过通义灵码的“AI程序员”功能,即使没有编程基础也能轻松创建小程序或网页。借助DeepSeek V3和R1满血版模型,用户只需用自然语言描述需求,就能自动生成代码并优化程序。例如,一个文科生仅通过描述需求就成功开发了一款记录日常活动的微信小程序。此外,通义灵码还提供智能问答模式,帮助用户解决开发中的各种问题,极大简化了开发流程,让普通人的开发体验更加顺畅。
4144 11
技术小白如何利用DeepSeek半小时开发微信小程序?
|
小程序 Java 关系型数据库
weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
24823 14
|
小程序 关系型数据库 Java
weixin168“返家乡”高校暑期社会实践微信小程序设计与开发ssm(文档+源码)_kaic
本文探讨高校暑期社会实践微信小程序的开发与应用,旨在通过信息化手段提升活动管理效率。借助微信小程序技术、SSM框架及MySQL数据库,实现信息共享、流程规范和操作便捷。系统涵盖需求分析、可行性研究、设计实现等环节,确保技术可行、操作简便且经济合理。最终,该小程序可优化活动发布、学生信息管理和心得交流等功能,降低管理成本并提高工作效率。
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
5140 14
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
人工智能 SpringCloudAlibaba 自然语言处理
SpringCloud Alibaba AI整合DeepSeek落地AI项目实战
在现代软件开发领域,微服务架构因其灵活性、可扩展性和模块化特性而受到广泛欢迎。微服务架构通过将大型应用程序拆分为多个小型、独立的服务,每个服务运行在其独立的进程中,服务与服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式有助于提升系统的可维护性、可扩展性和开发效率。
5737 2

热门文章

最新文章