微信小程序发布教程
本文介绍微信小程序从本地开发到正式发布的完整流程,涵盖账号注册、HTTPS 后端部署、服务器域名配置、生产环境切换、代码上传、提交审核与全量发布等环节,并说明主体类型差异、域名白名单要求及常见注意事项,适合自建后端的小程序项目参考。
一、发布流程概览
flowchart LR
A[注册小程序] --> B[部署 HTTPS 后端]
B --> C[配置服务器域名]
C --> D[切换生产环境配置]
D --> E[开发者工具上传]
E --> F[提交审核]
F --> G[全量发布]
| 阶段 | 常见负责角色 | 产出 |
|---|---|---|
| 账号与资质 | 运营 / 法人 | AppID、管理员权限 |
| 后端上线 | 后端 / 运维 | HTTPS 域名、API 可用 |
| 平台配置 | 前端 / 运营 | 域名白名单、隐私协议 |
| 代码上传 | 前端 | 开发版 / 体验版 |
| 审核发布 | 运营 | 正式版上线 |
二、发布前准备
2.1 必备账号与工具
2.2 主体类型差异
| 主体 | 常见能力 | 说明 |
|---|---|---|
| 企业 | 微信支付、更多类目、客服等 | 需营业执照,推荐商用 |
| 个人 | 基础功能 | 无法使用微信支付等能力,部分类目受限 |
| 政府 / 媒体 / 其他组织 | 按平台规则 | 需对应资质 |
2.3 服务器与域名要求
正式版小程序不能像开发工具那样随意请求 http://127.0.0.1 或未备案域名。生产环境通常需满足:
| 要求 | 说明 |
|---|---|
| HTTPS | wx.request、wx.uploadFile、wx.downloadFile 等必须使用 HTTPS |
| ICP 备案 | 服务器在中国大陆时,域名需完成备案 |
| 合法域名 | 在微信公众平台配置「服务器域名」白名单 |
| 有效证书 | TLS 证书未过期,建议 TLS 1.2 及以上 |
配置规则: 公众平台填写的是域名(如
https://api.example.com),不含路径、不含端口(默认 443)。子域名需单独添加。
2.4 梳理小程序用到的网络能力
发布前在代码里搜索以下 API,列出所有会访问的域名:
| API | 需配置的域名类型 |
|---|---|
wx.request |
request 合法域名 |
wx.uploadFile |
uploadFile 合法域名 |
wx.downloadFile |
downloadFile 合法域名 |
wx.connectSocket |
socket 合法域名 |
<web-view> 内嵌 H5 |
业务域名(另需下载校验文件) |
若静态资源(图片、音视频、文件)与 API 不在同一域名,每个域名都要分别配置。
三、注册与创建小程序
3.1 注册
- 打开 微信公众平台
- 选择「小程序」→ 按指引完成注册(邮箱、主体信息、管理员微信扫码)
- 按需完成微信认证(部分能力、类目需要)
3.2 获取 AppID
登录公众平台 → 开发管理 → 开发设置 → AppID(小程序 ID)
在项目根目录的 project.config.json(或 project.private.config.json)中配置:
{
"appid": "wxXXXXXXXXXXXXXXXX",
"projectname": "your-miniapp"
}
AppID 必须与公众平台一致,否则无法上传正式代码。
3.3 成员与权限
管理 → 成员管理 中可添加:
- 管理员:最高权限
- 开发者:可上传代码、使用开发者工具
- 体验者:可扫码体验体验版(最多若干人,以平台限制为准)
四、配置服务器域名
路径:开发管理 → 开发设置 → 服务器域名
点击「修改」后填写(示例):
| 类型 | 示例 | 用途 |
|---|---|---|
| request 合法域名 | https://api.example.com |
接口请求 |
| uploadFile 合法域名 | https://api.example.com |
文件上传 |
| downloadFile 合法域名 | https://cdn.example.com |
文件下载 |
| socket 合法域名 | wss://ws.example.com |
WebSocket(如有) |
注意:
- 每月修改次数有限,提交前请核对完整
- 不支持 IP 地址、不支持 HTTP
- 域名需已备案且 HTTPS 可正常访问
开发阶段跳过域名校验
开发者工具 → 详情 → 本地设置 → 不校验合法域名、web-view……
此选项仅本地生效。提审前务必关闭该项,用真机 + 生产域名完整测一遍。
五、生产环境配置
5.1 切换 API 地址
将代码中的开发地址改为生产 HTTPS 地址,例如:
// 开发
const BASE_URL = 'http://127.0.0.1:8080/api';
// 生产
const BASE_URL = 'https://api.example.com/api';
常见做法:按运行环境自动切换,避免每次发布手动改代码:
const accountInfo = wx.getAccountInfoSync();
const env = accountInfo.miniProgram.envVersion; // develop | trial | release
const BASE_URL = env === 'release'
? 'https://api.example.com/api'
: 'http://127.0.0.1:8080/api';
| envVersion | 含义 |
|---|---|
develop |
开发版(开发者工具、开发版二维码) |
trial |
体验版 |
release |
正式版 |
5.2 资源 URL
接口返回的图片、音视频地址若为相对路径(如 /static/a.mp3),真机无法播放。应:
- 推荐:后端直接返回完整 HTTPS URL
- 或:前端统一拼接 CDN / API 域名
5.3 关闭调试开关
发布前检查:
- 移除或关闭
console.log等调试输出(或使用构建工具 strip) - 关闭 mock 数据
-
project.config.json中生产构建开启压缩(minified: true等) - 敏感信息(密钥)不要写在前端代码中
5.4 隐私与用户协议
设置 → 服务内容声明 / 用户隐私保护指引
按实际采集的用户信息勾选(如手机号、位置、相册、麦克风等),并在小程序内提供《用户协议》《隐私政策》入口(常见位置:登录页、设置页、关于页)。
未配置隐私指引可能导致审核不通过。
六、后端上线检查(通用)
若小程序依赖自建后端,发布前建议确认:
- 生产数据库、缓存、消息队列已部署
- 环境变量 / 配置文件指向生产环境
- HTTPS 与反向代理(Nginx、Caddy 等)已配置
- 日志、监控、进程守护(systemd、Docker、K8s 等)已就绪
- 第三方服务(支付、短信、对象存储)使用生产 Key
- 接口在公网可访问,且与小程序配置的域名一致
七、微信开发者工具:导入与上传
7.1 导入项目
- 打开微信开发者工具
- + → 导入项目
- 选择小程序项目目录
- 填写 AppID(测试号仅用于本地预览,不能走完整发布流程)
- 后端服务选「不使用云服务」(除非使用微信云开发)
7.2 发布前自测
建议在真机调试下验证核心路径:
- 首页与主要 Tab 可正常打开
- 登录 / 注册(如有)
- 核心业务流程可走通
- 上传、下载、支付等涉及域名白名单的功能
- 分享、扫码进入指定页面(如有)
- 弱网、无网时的提示是否友好
7.3 上传代码
- 开发者工具右上角 → 上传
- 填写版本号(建议语义化,如
1.0.0)和项目备注 - 上传成功后,登录公众平台 → 管理 → 版本管理 → 开发版本 可见该版本
八、体验版与提交审核
8.1 体验版(推荐)
版本管理 → 开发版本 → 选为体验版
生成体验版二维码,供产品、测试、运营在真机验证,减少审核驳回概率。
8.2 提交审核
在开发版本上点击 提交审核,按页面填写:
| 项 | 说明 |
|---|---|
| 配置功能页面 | 选择审核人员会看到的核心页面路径 |
| 测试账号 | 若需登录,提供可用账号密码(及验证码说明) |
| 服务类目 | 选择与实际功能匹配的类目,需相应资质 |
| 功能描述 | 简要说明小程序做什么、怎么用 |
| 补充材料 | 特殊行业、UGC、AI 生成等可能需额外资质或说明 |
政策随平台更新而变化,以提交审核页当前要求为准。
8.3 常见驳回原因
| 原因 | 处理建议 |
|---|---|
| 域名未配置 / 非 HTTPS | 检查服务器域名与证书 |
| 页面无法打开或接口报错 | 真机连生产环境复现并修复 |
| 缺少隐私协议 | 补全隐私指引与小程序内链接 |
| 测试账号不可用 | 提供有效账号,确保审核期间不过期 |
| 类目与功能不符 | 调整类目或补充资质 |
| 内容违规 | 加强审核机制、举报入口、用户协议 |
可在 版本管理 → 审核版本 查看驳回原因,修改后重新上传、再提审。
九、发布上线
审核通过后:
- 版本管理 → 审核版本 → 全量发布(或灰度发布,若已开通)
- 用户通过搜索小程序名称、扫码、分享卡片等方式访问正式版
- 后续迭代:改代码 → 上传 → 提审 → 发布(旧用户逐步更新到新版本)
版本号建议
- 上传版本号:每次上传递增,便于回溯
- 用户可见版本:可在
app.json或关于页展示,与上传版本保持一致或映射
十、发布检查清单
可直接复制使用:
账号与平台
- AppID 已正确配置
- 开发者 / 体验者已添加
- request / uploadFile / downloadFile(及 socket)域名已配置
- 隐私保护指引、用户协议已填写并在小程序内可访问
- 服务类目与资质齐全
后端(如有)
- 生产环境部署完成,HTTPS 正常
- 数据库与第三方服务为生产配置
- 接口与静态资源域名均在白名单内
小程序代码
- API 地址已切换为生产 HTTPS
- 真机核心流程验证通过
- 关闭「不校验合法域名」后仍正常
- 无硬编码密钥、无遗留 mock
审核材料
- 测试账号与操作说明已准备
- 功能页面路径已配置
- 特殊行业补充材料已上传(如需要)
十一、常见问题
Q1:提示「不在以下 request 合法域名列表中」
- 确认公众平台已配置对应域名
- 确认请求 URL 为
https://且主机名与配置完全一致(子域名不通用) - 关闭开发者工具「不校验合法域名」后重试
Q2:uploadFile / downloadFile 失败
分别检查 uploadFile、downloadFile 合法域名是否配置,以及服务端是否返回正确状态码与 CORS(小程序侧主要受域名白名单限制)。
Q3:开发工具正常,真机异常
真机走正式域名校验和网络环境。优先用真机调试 + 体验版排查,排除仅本地生效的设置。
Q4:<web-view> 打不开 H5
需在 业务域名 中配置 H5 域名,并在域名根路径放置微信提供的校验文件。
Q5:审核通过但用户看不到新版本
确认已点击「全量发布」;用户端可能存在缓存,或尚未打开小程序触发更新。
Q6:使用微信云开发还需要自建服务器吗?
若全部使用云开发(云函数、云数据库、云存储),则配置方式不同,需在云开发控制台绑定环境,而非传统 request 域名。本文主要针对自建后端场景。
十二、相关官方文档
文档版本:2026-09 · 通用微信小程序发布流程