欢迎光临
我们一直在努力

微信扫码登录-公众号带参数二维码整体架构设计

目录

一、扫码登录和微信公众号带参数二维码原理

1.1 什么是扫码登录?

1.2 微信公众号带参数二维码介绍

什么是带参数二维码?

为什么选择临时二维码

扫码登录整体流程

注意事项

二、微信公众号开发-订阅号和服务号介绍和申请

2.1 微信公众号类型介绍

什么是微信公众号?

2.2 订阅号 vs 服务号 详细对比

2.3 为什么扫码登录需要服务号

三、无企业资质怎么开发测试微信公众号全部功能

3.1 开发者测试号(推荐开发阶段使用)

什么是测试号?

3.2 测试号 vs 正式号对比

3.3 测试号配置要点

3.4 项目推荐方案

3.5 从测试号迁移到正式号注意事项

四、本地电脑如何全球访问-内网穿透工具

4.1 什么是内网穿透?

内网与公网的区别

什么是内网穿透

内网穿透的应用场景

4.2 为什么微信开发需要内网穿透?

微信回调机制要求

本地开发的问题

内网穿透的解决方案

4.3 内网穿透工具选择

五、服务号开发文档指南和access_token获取管理

5.1 微信公众平台开发文档概览

5.2 access_token核心概念

什么是access_token

access_token的重要性

​编辑

5.3 获取access_token接口详解

接口基本信息

请求示例

响应结果

参数说明

5.4 access_token缓存策略

为什么需要缓存

缓存方案设计

开发常见错误处理

定时刷新实现

六、微信服务号开发-接口配置签名验证详解

6.1 什么是微信服务器验证?

6.2 为什么需要签名验证?

6.3 签名验证原理

验证机制说明

签名计算流程

关键步骤说明

6.4 微信配置验证流程

验证时序图

验证流程说明

6.5 常见验证失败原因

6.6 注意事项

七、服务号带参数二维码开发文档和接口详解

7.1 带参数二维码应用场景

7.2 带参数二维码接口详解

7.3 创建二维码完整流程

步骤1:创建二维码ticket

步骤2:接收响应

步骤3:生成二维码图片

关键参数说明


简介:扫码登录和微信公众号带参数二维码原理

1.1 什么是扫码登录?

  • 扫码登录是一种免密登录方式,用户通过微信扫描网页二维码即可完成登录,无需输入账号密码

  • 简单说,扫码登录就像刷脸进门,用手机扫一下就能登录,既安全又方便

  • 优势:

    • 安全性高:基于微信认证,无需在第三方网站输入密码

    • 体验流畅:扫码即登录,3秒完成整个流程

    • 用户基础大:微信用户超12亿,覆盖面广

    • 自动注册:首次扫码自动创建账号,无需填写注册表单

1.2 微信公众号带参数二维码介绍

什么是带参数二维码?

  • 定义:微信公众平台提供的一种特殊二维码,可以携带自定义的场景参数

  • 类型:分为临时二维码(QR_STR_SCENE)和永久二维码(QR_LIMIT_STR_SCENE)

  • 场景值:每个二维码可以携带一个唯一的scene_str参数,用于标识不同的业务场景

  • 临时二维码 vs 永久二维码

    对比项临时二维码永久二维码
    有效期 最长30天 永久有效
    数量限制 无限制 最多10万个
    场景值 字符串或整数 字符串或整数
    适用场景 扫码登录、活动推广 渠道推广、员工名片

为什么选择临时二维码

  • 安全性:二维码有效期短,过期自动失效

  • 无限制:数量不限,每次登录生成新的二维码

  • 可追溯:通过scene_str关联登录会话,便于状态管理

扫码登录整体流程

注意事项

  • 公众号要求

    • 需要认证的服务号,个人订阅号不支持带参数二维码

    • 需要在公众平台配置服务器URL和Token

二、微信公众号开发-订阅号和服务号介绍和申请

简介:微信公众号开发-订阅号和服务号介绍和申请

2.1 微信公众号类型介绍

什么是微信公众号?

  • 访问微信公众平台:https://mp.weixin.qq.com

  • 定义:微信公众平台提供的一种账号类型,企业和个人可以通过它与用户进行消息互动

  • 入口:用户通过微信App的"发现-订阅号/服务号"查看公众号消息

  • 能力:消息推送、自定义菜单、网页授权、支付等

2.2 订阅号 vs 服务号 详细对比

对比项订阅号(公众号)服务号
注册主体 个人/企业均可 仅企业/组织
消息推送频率 每天1条 每月4条
消息展示位置 折叠在订阅号文件夹 直接显示在聊天列表
微信支付 不支持 支持
自定义菜单 支持 支持
带参数二维码 不支持 支持(认证后)
网页授权获取用户信息 不支持 支持(认证后)
模板消息 不支持 支持(认证后)
适用场景 内容媒体、自媒体 企业服务、电商、工具类

2.3 为什么扫码登录需要服务号

  • 带参数二维码:只有认证的服务号才能生成带参数的二维码

  • 用户信息获取:服务号可以通过网页授权获取用户的openid和基本信息

  • 接口权限丰富:服务号认证后开放更多高级接口

  • 服务号申请流程

    • 准备材料

      • 企业资质:营业执照(个体工商户也可以)

      • 对公账户:用于认证打款验证

      • 运营者身份证:需要实名认证

      • 认证费用:300元/年(审核费)

    • 申请步骤

      1. 访问微信公众平台:https://mp.weixin.qq.com
      2. 点击"立即注册" → 选择"服务号"
      3. 填写邮箱、密码,完成邮箱激活
      4. 选择"企业"类型,填写企业信息
      5. 上传营业执照,填写运营者信息
      6. 完成注册,进入公众号后台

    • 认证流程

      1. 进入公众号后台 → "设置与开发" → "微信认证"
      2. 选择认证类型:企业法人/非法人
      3. 填写企业信息,上传资质文件
      4. 支付300元认证费
      5. 等待审核(1-5个工作日)
      6. 认证成功后获得高级接口权限

三、无企业资质怎么开发测试微信公众号全部功能

简介:无企业资质怎么开发测试微信公众号全部功能

3.1 开发者测试号(推荐开发阶段使用)

什么是测试号?

  • 免认证:无需企业资质,个人即可申请

  • 接口齐全:拥有大部分高级接口权限,包括带参数二维码

  • 限制:仅限开发测试,不能用于生产环境

  • 有效期:长期有效,无需年审

  • 申请测试号【服务号】

    1. 访问:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
    2. 使用微信扫码登录
    3. 自动获得测试号的appID和appsecret
    4. 可直接用于开发调试

  • 测试号权限

    • ✅ 带参数二维码生成

    • ✅ 网页授权获取用户信息

    • ✅ 模板消息

    • ✅ 自定义菜单

    • ✅ 消息接收与回复

    • ✅ 素材管理

    • ✅ 用户管理

    • ❌ 微信支付(需正式服务号)

    • ❌ 卡券功能

    • ❌ 摇一摇周边

3.2 测试号 vs 正式号对比

对比项测试号正式认证服务号
申请门槛 个人微信扫码即可 企业资质 + 300元/年
接口权限 大部分高级接口 全部接口
微信支付 ❌ 不支持 ✅ 支持
粉丝上限 100人 无限制
消息群发 不支持 支持
自定义菜单 ✅ 支持 ✅ 支持
网页授权 ✅ 支持 ✅ 支持
带参二维码 ✅ 支持 ✅ 支持
适用场景 开发测试 生产环境

3.3 测试号配置要点

  • 接口配置信息

    URL:填写你的服务器地址(需公网可访问)
    Token:自定义字符串,用于验证消息来源
    ​
    配置流程:
    1. 先部署好服务器验证接口
    2. 填写URL和Token
    3. 点击提交,微信会发送验证请求
    4. 服务器正确响应echostr即配置成功

  • JS接口安全域名【暂时不需要】

    用于:网页开发时调用微信JS-SDK
    格式:只填域名,不带http://或https://
    示例:your-domain.com
    注意:测试号可填写任意域名,正式号需验证域名所有权

  • 网页授权域名【暂时不需要】

    用于:获取用户openid和基本信息
    配置:与JS安全域名类似,填写回调域名
    测试号优势:无需上传验证文件

3.4 项目推荐方案

阶段推荐方案原因
开发测试 微信测试号 免费、接口齐全、申请简单
生产上线 认证服务号 正式环境必须使用认证服务号

3.5 从测试号迁移到正式号注意事项

1. 配置迁移
  – 重新配置服务器URL和Token
  – 配置JS安全域名(需上传验证文件)
  – 配置网页授权域名
​
2. 代码调整
  – 替换appID和appSecret
  – 注意正式号的接口频率限制更严格
​
3. 用户数据
  – 测试号和正式号的openid不同
  – 用户需要重新关注正式号
  – 无法迁移测试号的用户数据
​
4. 功能验证
  – 正式号上线前做完整功能测试
  – 特别注意支付等敏感功能

四、本地电脑如何全球访问-内网穿透工具

简介:为什么要用内网穿透-如何选择工具

4.1 什么是内网穿透?

内网与公网的区别

  • 公网IP:能够被互联网上任何设备直接访问的IP地址

  • 内网IP:只能在局域网内访问的私有IP(如192.168.x.x、10.x.x.x)

  • NAT转换:路由器将多个内网设备映射到一个公网IP

什么是内网穿透

  • 定义:将内网服务暴露到公网,使其可以被外部访问的技术

  • 原理:通过第三方服务器作为中转,建立内网到公网的隧道

  • 别名:也叫反向代理、端口映射、NAT穿透

内网穿透的应用场景

1. 微信公众号开发:微信服务器需要回调开发者本地服务
2. 远程调试:在外网访问家里或公司的内网设备
3. 临时分享:向客户展示本地开发的网站
4. 物联网设备:远程控制家中的智能设备
5. 游戏联机:搭建本地游戏服务器供朋友访问

4.2 为什么微信开发需要内网穿透?

微信回调机制要求

  • 公网可访问:微信服务器在接收到扫码事件后,需要回调开发者的服务器

  • HTTPS协议:微信要求回调地址必须是HTTPS(测试号可以用HTTP)

  • 域名验证:需要在微信公众平台配置服务器URL

本地开发的问题

  • 本地服务通常运行在localhost:8080,外网无法访问

  • 家用宽带一般是动态IP,且运营商封禁了80/443端口

  • 即使有公网IP,配置防火墙和SSL证书也很麻烦

内网穿透的解决方案

本地服务(localhost:8080)
    ↓
内网穿透客户端
    ↓ 建立隧道
穿透服务器(云端)
    ↓ 分配公网域名
https://abc123.ngrok.io
    ↓
微信服务器可以访问

4.3 内网穿透工具选择

  • 主流工具对比

    工具名称费用速度稳定性协议支持适用场景
    ngrok 免费版+付费版 较慢(国外服务器) 高 HTTP/HTTPS/TCP 国际项目,追求稳定
    花生壳 免费版+付费版 快(国内服务器) 高 HTTP/HTTPS/TCP 国内项目,长期使用
    natapp 免费版+付费版 快(国内服务器) 中 HTTP/HTTPS/TCP 国内项目,性价比高
  • 推荐方案:花生壳

    • 花生壳安装与使用:跟着官方文档认证和步骤【经常更新,也可以选择其他】

    • 地址:贝锐花生壳内网穿透|ddns动态域名解析|端口映射工具-贝锐花生壳官网

    • 验证:启动微服务项目,通过域名可以访问接口即可

  • 高频问题:网络变化导致访问不了

    • 内网IP变动,删除旧的域名映射,重新配置即可

  • 生产环境部署建议

    • 内网穿透仅限开发测试

      ⚠️ 重要提醒:
      – 内网穿透不适合生产环境使用
      – 存在安全风险和稳定性问题
      – 免费服务可能随时停止

    • 生产环境部署方案

      1. 购买云服务器(阿里云/腾讯云/AWS)
      2. 申请域名并备案
      3. 配置SSL证书(Let's Encrypt免费证书)
      4. 使用Nginx做反向代理
      5. 在微信公众平台配置正式域名

  • 其他内网穿透工具快速上手

    • ngrok(国际版)地址:https://ngrok.com

    • natapp(国内版)地址:https://natapp.cn

五、服务号开发文档指南和access_token获取管理

简介: 服务号开发文档指南和access_token获取管理

5.1 微信公众平台开发文档概览

  • 官方文档地址 微信开放文档 / 服务号-指南 / 开发指南 / 概述

5.2 access_token核心概念

什么是access_token

  • 定义:调用微信API的全局唯一接口调用凭据

  • 有效期:7200秒(2小时)

  • 获取限制:每日2000次调用上限

  • 作用范围:几乎所有微信接口都需要access_token

access_token的重要性

5.3 获取access_token接口详解

接口基本信息

请求方式:GET 请求地址:https://api.weixin.qq.com/cgi-bin/token

请求参数: – grant_type:固定值 client_credential – appid:公众号的唯一标识 – secret:公众号的appsecret

请求示例

curl "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx1b61XXXXXXX8421&secret=5c0d5a646b4fXXXXXXXXXe9676"

响应结果

// 成功响应 {   "access_token": "68_D6vP8zFxGXXXXXXXXXXXXXXXXXXXXXXXX",   "expires_in": 7200 }

// 失败响应 {   "errcode": 40013,   "errmsg": "invalid appid" }

参数说明

参数类型必填说明
grant_type string 是 固定值client_credential
appid string 是 第三方用户唯一凭证
secret string 是 第三方用户唯一凭证密钥
access_token string – 返回的接口调用凭证
expires_in int – 凭证有效时间,单位:秒

5.4 access_token缓存策略

为什么需要缓存

⚠️  不缓存的严重后果: 1. 每次调用接口都获取access_token,会快速达到每日2000次上限 2. 频繁请求会导致接口响应变慢 3. 同时存在多个有效access_token可能导致API调用失败 4. 浪费服务器资源和网络带宽

缓存方案设计

开发常见错误处理

错误码说明处理方式
40001 access_token无效或已过期 刷新access_token后重试
40013 不合法的AppID 检查配置的appid是否正确
40164 调用接口的IP地址不在白名单中【非沙箱环境】 请在接口IP白名单中进行设置
40125 不合法的 secret 请检查 secret 的正确性,避免异常字符,注意大小写

定时刷新实现

@Component
public class AccessTokenRefreshTask {

@Autowired
private WechatAccessTokenService accessTokenService;

/**
* 定时刷新access_token
* 每小时执行一次(7200秒有效期,提前刷新很安全)
*/
@Scheduled(cron = "0 0 * * * ?")
public void refreshAccessToken() {
try {
log.info("开始定时刷新access_token");
String accessToken = accessTokenService.getAccessToken();
log.info("定时刷新access_token成功: {}",
accessToken.substring(0, 10) + "…");
} catch (Exception e) {
log.error("定时刷新access_token失败", e);
// 发送告警通知
}
}
}

六、微信服务号开发-接口配置签名验证详解

简介:微信服务号开发-接口配置签名验证详解

6.1 什么是微信服务器验证?

  • 核心定义:微信服务器验证是微信公众号在配置服务器URL时的安全验证机制

  • 简单说,就像一个"暗号"验证过程,确保接收消息的服务器是你本人配置的,而不是别人冒充的

  • 验证过程:

    • 微信服务器:我要验证你的服务器,给你发送几个参数(signature、timestamp、nonce、echostr)

    • 你的服务器:收到参数后,用Token按规则计算签名,如果和给你发的signature一致,就返回echostr

    • 微信服务器:收到echostr后,确认验证通过,配置成功

6.2 为什么需要签名验证?

  • 需求背景

    • 微信公众号需要接收用户消息和事件推送(如关注、扫码、点击菜单等)

    • 如果不验证服务器身份,任何人都可以伪造服务器地址接收消息

    • 可能导致用户信息泄露、消息被劫持等安全问题

6.3 签名验证原理

验证机制说明

  • 微信服务器和你的服务器共享一个密钥(Token)

  • 微信服务器用Token和其他参数生成签名发给你

  • 你的服务器用相同算法计算签名,如果一致则验证通过

  • 打个比方:就像两个人约定了一个加密算法,只有双方都知道密钥和算法,才能互相验证身份

签名计算流程

关键步骤说明

  • 参数排序:将Token、timestamp、nonce三个参数按字典序排序

  • 字符串拼接:将排序后的三个参数拼接成一个字符串

  • SHA1加密:对拼接后的字符串进行SHA1加密

  • 签名对比:将加密后的结果与微信发送的signature对比

  • 返回结果:一致则返回echostr,否则返回error

  • 6.4 微信配置验证流程

    验证时序图

    验证流程说明

    • 步骤1:管理员在微信公众平台填写服务器配置(URL、Token)

    • 步骤2:点击提交后,微信服务器立即发送GET请求验证

    • 步骤3:请求包含4个参数:signature(签名)、timestamp(时间戳)、nonce(随机数)、echostr(随机字符串)

    • 步骤4:你的服务器收到请求后,读取配置中的Token

    • 步骤5:将Token、timestamp、nonce按字典序排序

    • 步骤6:拼接成字符串后进行SHA1加密

    • 步骤7:将计算出的签名与微信发送的signature对比

    • 步骤8:一致则返回echostr,微信显示"配置成功";否则返回error,显示"验证失败"

    6.5 常见验证失败原因

    • URL不可访问

      • 问题表现:微信提示"请求URL超时"

      • 原因分析:服务器未启动、防火墙拦截、内网穿透未配置

      • 解决方案:确保服务器运行正常,检查端口开放,配置内网穿透

    • Token不匹配

      • 问题表现:签名验证失败,微信提示"配置失败"

      • 原因分析:代码中的Token与微信后台配置的Token不一致

      • 解决方案:确保application.yml中的Token与微信后台一致

    • 签名算法错误

      • 问题表现:签名验证失败

      • 原因分析:排序逻辑错误、拼接方式错误、加密算法错误

      • 解决方案:严格按照微信文档实现:排序→拼接→SHA1加密

    6.6 注意事项

    • Token保管:Token是验证密钥,不要泄露,建议使用复杂字符串

    • 大小写敏感:SHA1加密后的结果是小写,对比时注意大小写

    • 编码问题:拼接字符串时使用UTF-8编码

    七、服务号带参数二维码开发文档和接口详解

    简介: 服务号带参数二维码开发文档和接口详解

    7.1 带参数二维码应用场景

    1. 用户登录验证    – PC网页展示二维码    – 用户微信扫码确认登录    – 服务端接收扫码事件,完成登录

    2. 账号绑定    – 业务系统生成绑定二维码    – 用户扫码关联微信账号    – 实现微信快捷登录

    3. 线下活动签到    – 生成活动签到二维码    – 用户扫码签到    – 自动记录签到信息

    4. 推广统计    – 不同渠道生成不同二维码    – 扫码时记录来源渠道    – 统计推广效果

    7.2 带参数二维码接口详解

    • 接口文档: 微信开放文档 / 服务号-服务端 / 服务号二维码 / 带参二维码 / 生成带参数的二维码

    • 核心接口说明

      接口名称请求方式地址用途
      创建二维码ticket POST /cgi-bin/qrcode/create 生成二维码凭证
      换取二维码 GET /cgi-bin/showqrcode 通过ticket获取图片
    • 详细交互时序图

    7.3 创建二维码完整流程

    步骤1:创建二维码ticket

    POST https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=ACCESS_TOKEN

    // 临时二维码请求体 {   "expire_seconds": 120,   "action_name": "QR_STR_SCENE",   "action_info": {     "scene": {       "scene_str": "uuid_scene_1234567890"     }   } }

    // 永久二维码请求体 {   "action_name": "QR_LIMIT_STR_SCENE",   "action_info": {     "scene": {       "scene_str": "user_bind_12345"     }   } }

    步骤2:接收响应

    {   "ticket": "gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyX0c4V…",   "expire_seconds": 120,   "url": "http://weixin.qq.com/q/02_G8W-…" }

    步骤3:生成二维码图片

    GET https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET

    关键参数说明

    参数类型说明
    expire_seconds int 有效时间,最长30天(2592000秒),仅临时二维码需要
    action_name string QR_STR_SCENE(临时)或QR_LIMIT_STR_SCENE(永久)
    scene_str string 场景值字符串,长度限制1-64字符
    ticket string 二维码ticket,凭此换取图片
    url string 二维码图片解析后的地址,可直接生成二维码
    赞(0)
    未经允许不得转载:171主机测评 » 微信扫码登录-公众号带参数二维码整体架构设计
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址