【开发日记】SpringBoot 实现支持多个微信小程序的登录

同一个服务器部署多个443项目,解决多个微信小程序后台部署到同一个服务器 遇到这个问题,主要因为公司开发了两个小程序,用户体量都不大,众所周知,微信小程序上线只能https Nginx反向代理实现两个小程序部署到同一台服务器 准备工作 安装Nginx 安装ssl证书 开始配置Nginx 配置文件nginx.conf 注释掉http,开启https,如下设置 #HTTPS server server { listen 443 ssl; server_name www.xxx.com; ssl_cert 阅读详情

在实际业务场景中,需要一个后台同时支持多个微信小程序的登录。例如,企业有多个不同业务的小程序,但希望统一在同一个后台系统里进行用户认证和数据处理。这时候,我们就需要一个灵活的方式来管理多个小程序的 appid 和 secret,并根据前端传递的 appid 与 code 获取对应的 openid 实现登录。

本文将基于 weixin-java-miniapp SDK 实现一个通用的多小程序登录模块。

一、依赖引入

在 pom.xml 中加入微信小程序 SDK 依赖:

<dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>weixin-java-miniapp</artifactId>
    <version>4.7.7-20250808.182223</version>
</dependency>

二、配置文件

通过 application.yml 配置多个小程序的 appid 与 secret,提供给后续动态获取。

wx:
  miniapp:
    configs:
      - appid: wxxxxxxxxxxxxxxxxxx
        secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      - appid: wyyyyyyyyyyyyyyyyyy
        secret: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

三、属性类

定义配置属性类,读取配置文件中多个小程序的信息:

@Data
@Component
@ConfigurationProperties(prefix = "wx.miniapp")
public class WxMiniAppProperties {
    private List<Config> configs;

    @Data
    public static class Config {
        private String appid;
        private String secret;
    }
}

这样就能自动绑定 application.yml 中的配置到 WxMiniAppProperties。

四、服务工厂类

编写一个工厂类 WxMiniAppServiceFactory,用来存储和获取 WxMaService 实例。
每个小程序对应一个 WxMaService,通过 appid 来区分。

后台可以根据传入的 appid 动态选择对应的 WxMaService。

@Component
public class WxMiniAppServiceFactory {
    private final Map<String, WxMaService> services = new HashMap<>();

    public WxMiniAppServiceFactory(WxMiniAppProperties properties) {
        for (WxMiniAppProperties.Config config : properties.getConfigs()) {
            WxMaDefaultConfigImpl wxConfig = new WxMaDefaultConfigImpl();
            wxConfig.setAppid(config.getAppid());
            wxConfig.setSecret(config.getSecret());

            WxMaService wxService = new WxMaServiceImpl();
            wxService.setWxMaConfig(wxConfig);

            services.put(config.getAppid(), wxService);
        }
    }

    public WxMaService getWxMaService(String appid) {
        WxMaService service = services.get(appid);
        if (service == null) {
            throw new IllegalArgumentException("未找到对应appid的配置: " + appid);
        }
        return service;
    }
}

五、登录逻辑

定义登录服务,根据前端传递的 appid 与 code 获取用户 openid:

@Service
public class WxMiniAppLoginService {
    private final WxMiniAppServiceFactory serviceFactory;

    public WxMiniAppLoginService(WxMiniAppServiceFactory serviceFactory) {
        this.serviceFactory = serviceFactory;
    }

    public String getOpenId(String appid, String code) throws Exception {
        WxMaService wxService = serviceFactory.getWxMaService(appid);
        WxMaJscode2SessionResult session = wxService.jsCode2SessionInfo(code);
        return session.getOpenid();
    }
}

调用时,只需要传入 appid 和前端 wx.login 获取的 code,就能拿到用户的唯一标识 openid。

微信小程序接口对接实现 本文介绍使用com.github.binarywang实现微信接口对接的方法,主要包括:1)引入4.7.0版本的weixin-java-miniapp和weixin-java-pay依赖包;2)通过配置文件自动加载微信参数;3)自动创建WxMaService和WxPayService的Bean对象;4)实现用户登录授权、获取用户信息和手机号等功能;5)完成微信支付创建、回调处理、发货信息上传和退款等支付流程。文章详细说明了各个功能的实现代码,涵盖从配置到业务逻辑的完整对接过程。 阅读详情

相关推荐

wx-java-miniapp::rocket::rocket:基于WxJava实现的微信小程序登录项目,支持多个微信小程序登录和消息处理

wx-java-miniapp 前言 本项目使用 对接微信小程序后台开发,基于SpringBoot构建,实现微信小程序后端开发功能,支持多个小程序。 更多信息请查阅: 技术栈 SpringBoot -> 环境搭建 MySQL -> 存储wx-miniapp配置信息(appid,appsecret等) Druid -> 连接池 MyBatis-Plus -> 基本的CRUD Lombok -> 简化开发 Travis CI 持续集成 使用 0. 安装环境, 执行sql脚本 安装 mysql 安装 redis 执行sql/wx-java-miniapp.sql脚本文件(推荐使用 Navicat) 1. 克隆项目 git clone https://github.com/gongsir0630/wx-java-miniapp.git 2. 修改配置 修改src/main/resources/a

微信小程序环境共享,多个小程序共享一个云开发数据库

我们在做小程序开发时,有时候需要多个小程序公用一个数据库,比如我们做一个外卖小程序,要配套一个骑手小程序,这个时候就要两个小程序公用一个云开发环境,公用一个数据库了。所以今天来教下大家如何多个小程序共享一个云开发环境和数据库。 其实官方给的文档很详细了,但是一个细节官方没有讲到,所以就会导致好多同学做多个小程序共享一个云开发环境时,遇到各种各样的问题。 比如下面这样的问题 明明感觉自己按照官方要求,该配置的都配置了啊,但是为啥就是出错呢。所以我这里再带大家完整的配置一遍,把里面的一些注意事项也给大家好.

编程小石头 9946

本项目为微信小程序的后端Demo演示程序,基于Spring Boot构建,实现微信小程序后端开发功能,支持多个小程序

本项目为微信小程序的后端Demo演示程序,基于Spring Boot构建,实现微信小程序后端开发功能,支持多个小程序。

【Springboot】整合wxjava实现 微信小程序:授权登录

【Springboot】整合wxjava实现 微信小程序:授权登录

m0_49683806的博客 2万+

Calibre license失效的解决方法

Calibre license失效的解决方法

qq_45354630的博客 6478

零基础微信理财通基金实操指南(2026版)

先活下来:保证不亏大钱,再想赚钱慢慢变富:年化10%,7年翻倍,这已经很好了开始比完美重要:今天先存100元到零钱通,就是最好的开始现在打开微信,进入理财通,完成第一步风险测评吧!有任何问题可以随时问,我会用最通俗的方式解释。

老韩的Linux云计算架构师进阶之路 1683

基于Java的“心情日记簿”微信小程序开发

基于Java的“心情日记簿”微信小程序开发,实现了用户方便的心情记录、浏览和统计分析等功能。通过合理的数据库设计和系统实现,保证了系统的稳定性和安全性。该系统的开发,不仅提高了用户记录心情的便利性,也为情感分析等领域的研究提供了数据支持。未来,可以考虑加入更多功能,如智能推荐、情绪识别等,提高系统的用户体验和实用性。

毕业设计大牛哥 1089

【项目实战】小智AI MCP协议在IoT设备控制中的深度应用解析

本文深度解析小智AI MCP协议在IoT设备控制中的应用实践。通过MCP协议作为AI与物联网设备的翻译桥梁,实现大语言模型与ESP32等硬件的无缝通信。文章详细介绍了环境搭建、工具注册、消息路由机制,并以语音控制RGB灯光系统为例展示完整开发流程,为AIoT开发者提供实用指南。

oauth7security的博客 824

恋爱日记微信小程序的设计与实现--毕设附源码52764

本项目基于SpringBoot框架和MySQL数据库设计与实现了一款恋爱日记微信小程序。通过SpringBoot构建了稳定高效的后端服务,处理用户登录、数据存取、通知发布等操作,提供RESTful API与前端进行数据交互。MySQL数据库则用于存储用户信息、恋爱问答、游戏、新闻资讯等各类数据,并采用合理的数据库设计保证数据的高效存储与查询。项目开发过程中,首先进行需求分析与功能设计,然后搭建后端架构,完成数据库设计与接口开发,最后进行前后端联调与功能测试,确保平台运行的稳定性与安全性。

CXKF10088的博客 1131

保姆级教程:用CameraX API快速搞定Android多摄像头切换与预览(附避坑指南)

本文提供了一份详细的CameraX API教程,帮助开发者快速实现Android多摄像头切换与预览功能。通过简化API设计和生命周期感知能力,CameraX大幅降低了开发复杂度,同时解决了多摄像头兼容性、预览优化等常见问题。文章包含完整代码示例和实战避坑指南,特别适合需要高效集成相机功能的Android开发者。

weixin_42699679的博客 165

Cadence Virtuoso Layout 版图绘制

画好原理图,打好pin脚(pin最好以全大写的形式书写,以防后续操作中可能出现Bug) 查看所使用工艺库的design rule文件,确定栅格单位设置大小 在准备绘制的原理图界面启动layout XL/GXL 在layout界面按e,设置网格大小与design rule匹配 直接根据原理图生成版图 根据原理图连接关系显示版图中未连接的飞线 查看和更改原理图与版图中器件对应的链接关系 shift + f:显示器件版图细节 版图的构成:元器件(工艺厂商提供)、器件连接、阱连接、IO和PAD模拟电路

bobo_supper的博客 2万+

【计算机毕业设计】基于SpringBoot+Vue网络云端日记本系统的设计与实现

本设计主要实现集人性化、高效率、便捷等优点于一身的网络云端日记本系统,完成系统用户、分类管理、日记信息、备忘录信息、提醒信息、公告信息等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。

分享技术热点,看天下大事 901

VIIRS-NPP夜间灯光遥感数据下载和预处理

右侧搜索框搜索“按掩膜提取”,提取出夜光影像中国区域。将其转换为Albers积投影和重采样到400m。点击右上角Export,选择shp格式。最后点export导出就行。点击复制按钮,来到这个。,ctrl + v粘贴。将小于0.3的值置为0。下载好月合成产品后,

热爱分享,热爱记录 1万+

基于SpringBoot网络云端日记本系统的设计与实现

本设计主要实现集人性化、高效率、便捷等优点于一身的网络云端日记本系统,完成系统用户、分类管理、日记信息、备忘录信息、提醒信息、公告信息等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。

qq_61827376的博客 806

SAP FICO CBS接口-银企直连付款平台功能开发说明书(包括测试样例、FS)

SAP FICO CBS接口-银企直连付款平台功能开发说明书(包括测试样例、FS)

我好像病了的博客 2447

防护装备穿戴检查:基于YOLOv8与UI界面的深度学习应用

通过结合YOLOv8模型与UI界面,本系统实现了防护装备穿戴检查的自动化。该系统能够快速识别工作人员是否正确佩戴了所需的防护装备,帮助提高安全管理水平。未来,随着技术的发展,防护装备穿戴检查系统将在更多领域得到应用,如工业现场、建筑工地等,实现更加精确和高效的实时监控。

YOLO 353

基于Android的日记本系统的设计与实现(需求文档)

曾经我们习惯随身携带笔和纸完成灵感的记录,由于灵感繁多、户外写字不便等因素,灵感的即时管理变得难上加难,迫使人们寻找新的方式记录和管理灵感。科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。通过安装日记本软件,人们可以轻松的在手机上完成灵感的录入和管理,从传统的笔和纸中解放出来,提高效率,减少不必要的麻烦[4]。个人日记本系统是一种在互联网上写网络日记的工具,随着计算机技术和网络技术的发展,逐步取代了传统的手写日记方式[5]。

2401_86779185的博客 946

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

(附源码)恋爱日记微信小程序的设计与实现-计算机毕设 52764

普通用户功能 1.注册登录:用户可以通过微信授权直接登录,也可以使用手机号或邮箱进行注册登录,确保平台的身份验证和安全性,提供多种登录方式以适应不同需求。 2.首页:首页展示了平台的核心内容和最新活动,用户可以方便地查看到最新的通知、推荐的游戏和资讯,首页设计简洁而直观,提供良好的用户体验。 3.通知公告:用户在平台中能够看到管理员发布的通知和公告,及时了解最新活动、平台更新或重要事项,确保信息传达的高效性和透明性。 4.恋爱问答:提供了一个互动式的问答平台,用户可以就恋爱相关问题进行提问,并从其他用户那里

ID3461074420的博客 214

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SpringBoot+微信小程序 大学生心理健康服务微信端平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

开源免费分享SpringBoot+微信小程序 大学生心理健康服务微信端平台完整项目源码+SQL脚本+接口文档【Java Web毕设】可提供说明文档 可以通过*AIGC**技术包括:MySQL、VueJS、ElementUI、(Python或者Java或者.NET)等等*功能如图所示。可以滴我获取详细的视频介绍

2301_78326417的博客 609

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

儿童成长日记与教育小程序--毕设附源码56186

平台还特别设计了管理员后台管理系统,以支持高效的内容管理和运营维护。管理员可对系统用户、孩子信息、资源类型、学习资源、成长建议、学习记录、成长记录以及提醒消息进行增删改查操作,确保平台内容的及时更新和精准推送。此外,通知公告管理、轮播图管理和资源分类管理等功能模块进一步增强了平台的交互性和用户体验。本平台结合智能化技术和微信小程序的优势,致力于打造一个集成长记录、教育资源分享与家庭教育指导于一体的综合性服务平台,助力儿童健康成长与全面发展。

VX_DZbishe的博客 2086

springboot基于微信小程序的任务打卡系统uniapp 任务积分兑换奖品

收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我项目编号:041本系统共有管理员,用户2个角色,具体功能如下: 1.管理员角色的功能主要包括管理员登录,用户管理,任务分类管理,任务信息管理,积分商品管理,任务进度管理,任务提醒管理,日记周报管理,积分兑换管理,奖惩信息管理,留言反馈,交流论坛,系统管理等功能。2.用户角色的功能主要包括用户登录,积分商品管理,任务进度管理,任务提醒管理,日记周报管理,积分兑换管理,奖惩信息管理,我的收藏管理,我的关注管理等功能。 小程序框

z459382737的博客 1114

基于SpringBoot和微信小程序的任务打卡系统设计与实现

任务打卡系统是目标管理与行为记录的数字工具,常用于个人自律、团队协作与教学实践。其典型实现方案由SpringBoot提供后端接口与业务逻辑,微信小程序承担前端交互,二者通过HTTP接口完成数据联通。设计重点包括:用户静默登录与JWT鉴权、打卡记录的联合唯一约束以防止重复提交、日记与周报的自动聚合生成,这些机制共同保障了系统的一致性与扩展性。该方案不仅适合毕业设计或课程项目,也能快速落地为日常任务管理工具。围绕这套基于SpringBoot和微信小程序的任务打卡系统,从需求拆解、表结构设计、接口实现到联调部署的

weixin_30225755的博客 302

2026毕设选题-基于springboot 便民医疗服务小程序的设计与实现

本文介绍了一个基于SpringBoot和Vue的便民医疗服务小程序开发项目,旨在解决传统医疗服务管理效率低下、安全性不足等问题。该系统采用Uni-weixin框架,包含预约挂号、健康管理、疫苗预约等功能模块,支持用户、医生和管理员三种角色。项目技术栈包括Java、MySQL、微信小程序等,提供了从开题到答辩的全流程毕设指导服务,涵盖系统设计、代码实现、论文撰写等环节。该解决方案具有操作简便、响应快速等特点,适用于高校计算机专业毕业设计参考,相关源码可通过指定渠道获取。

qq_44993286的博客 931

SpringBoot+微信小程序开发智慧心理健康平台

心理健康数字化解决方案正成为技术赋能公共健康的重要方向。基于SpringBoot后端和微信小程序前端的技术架构,可以实现高效、安全的心理自助服务平台开发。SpringBoot作为主流Java框架,提供了完善的RESTful API开发支持,结合JWT认证机制保障用户数据安全。微信小程序则凭借其免安装、易传播的特性,成为心理健康服务的理想入口。该技术组合特别适合处理敏感数据场景,通过匿名化ID映射和字段加密等技术,在保证功能完整性的同时满足隐私保护要求。这类平台通常包含心理测评、情绪日记、数据分析等核心模块,

weixin_32247165的博客 232
上一篇: 【极客日记】利用DDNS通过域名访问家里的网络设备,保姆级教程
下一篇: 告别重复劳动:腾讯云Lighthouse+AI自动化Word报告保姆级全攻略
二饭
博客等级 码龄7年 1806粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值