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


相关文章
|
3月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
4月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
204 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
|
7月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1546 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
6月前
|
监控 数据可视化 数据处理
微信养号脚本,全自动插件,AUTOJS开发版
这是一套自动化微信养号工具,包含主脚本`wechat_auto.js`与配置文件`config.json`。主脚本实现自动浏览朋友圈、随机阅读订阅号文章及搜索指定公众号三大功能,支持自定义滚动次数、阅读时长等参数。代码通过随机化操作间隔模拟真实用户行为,具备完善的错误处理和日志记录功能。配套UI模块提供可视化操作界面,可实时监控任务状态与运行日志,便于调整参数设置。控制器部分扩展了批量数据处理能力,如学生信息的增删改查操作,适用于多场景应用。下载地址:https://www.pan38.com/share.php?code=n6cPZ 提取码:8888(仅供学习参考)。
|
8月前
|
小程序 Java 关系型数据库
weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。
|
9月前
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
651 1
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
|
8月前
|
小程序 关系型数据库 Java
weixin168“返家乡”高校暑期社会实践微信小程序设计与开发ssm(文档+源码)_kaic
本文探讨高校暑期社会实践微信小程序的开发与应用,旨在通过信息化手段提升活动管理效率。借助微信小程序技术、SSM框架及MySQL数据库,实现信息共享、流程规范和操作便捷。系统涵盖需求分析、可行性研究、设计实现等环节,确保技术可行、操作简便且经济合理。最终,该小程序可优化活动发布、学生信息管理和心得交流等功能,降低管理成本并提高工作效率。
|
9月前
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
6057 11
|
9月前
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
10月前
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。