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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 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


相关文章
|
1月前
|
iOS开发 开发者
iOS微信分享配置universal links步骤
iOS微信分享配置universal links步骤
563 58
|
2月前
|
小程序 JavaScript Java
微信小程序的后端开发需要使用什么语言?
【8月更文挑战第22天】微信小程序的后端开发需要使用什么语言?
448 65
|
10天前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
48 7
ly~
|
21天前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
60 6
|
5天前
|
小程序 前端开发 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【10月更文挑战第3天】随着移动互联网的发展,微信小程序凭借便捷的用户体验和强大的社交传播能力,成为企业拓展业务的新渠道。本文探讨了小程序全栈开发中的身份认证与授权机制,包括手机号码验证、微信登录、第三方登录及角色权限控制等方法,并强调了安全性、用户体验和合规性的重要性,帮助开发者更好地理解和应用这一关键技术。
26 5
|
5天前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【10月更文挑战第3天】微信小程序作为新兴应用形态,凭借便捷体验与社交传播能力,成为企业拓展业务的新渠道。本文探讨了微信小程序全栈开发中的PWA技术应用,包括离线访问、后台运行、桌面图标及原生体验等方面,助力开发者提升小程序性能与用户体验。PWA技术在不同平台的兼容性、性能优化及用户体验是实践中需注意的关键点。
22 5
|
1天前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
21天前
|
小程序 JavaScript API
微信小程序开发学习之页面导航(声明式导航和编程式导航)
这篇文章介绍了微信小程序中页面导航的两种方式:声明式导航和编程式导航,包括如何导航到tabBar页面、非tabBar页面、后退导航,以及如何在导航过程中传递参数和获取传递的参数。
微信小程序开发学习之页面导航(声明式导航和编程式导航)
|
2月前
|
小程序 JavaScript
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
本文介绍了使用 Taro 和 Vue 创建轮播组件的两种方法:一是通过 `&lt;swiper&gt;` 实现,二是利用 Nut UI 的 `&lt;nut-swiper&gt;` 组件实现。
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
|
1月前
|
存储 移动开发 监控
微信支付开发避坑指南
【9月更文挑战第11天】在进行微信支付开发时,需遵循官方文档,确保权限和参数配置正确。开发中应注重安全,验证用户输入,合理安排接口调用顺序,并处理异常。上线后需实时监控支付状态,定期检查配置,关注安全更新,确保系统稳定运行。

热门文章

最新文章