
先说个前提后台总有朋友私信问我类似“怎么创建自己的小程序”这种问题而且问的人里很多并不是程序员只是有个实体店或者想给学校、社团做个展示页甚至想做个答题工具自己玩。这个问题我回答过几十次了最近刚把手头一个小程序商城从注册账号到审核上线完整走了一遍所以干脆写下这篇实操记录把从0到1会遇到的事都梳理了一遍。如果你也想顺手做一个微信小程序不管是工具类、内容展示还是小程序商城这篇应该能帮你少走不少弯路。小程序开发这东西最劝退新手的并不是代码本身而是你一开始根本不知道该点哪里、该注册什么、该用什么工具。我当年第一次打开微信公众平台后台的时候光看那些菜单就懵了半天。所以这篇文章我不讲那些花哨的高阶技巧就按真实做项目的顺序来从账号注册、工具选型、页面结构到请求数据、真机调试、审核发布一层层往下聊。1. 动手前先想清楚小程序不是“写代码”那么简单很多人一上来就搜教程、装开发工具结果弄了两天还在原地打转。原因很简单没想明白自己要做什么类型的小程序。1.1 你的应用场景决定了绝大部分选择先别急着敲代码先问自己一个问题这个小程序是给谁用的解决什么问题举几个我实际遇到过的情况实体店主想做线上下单那多半要涉及商品展示、购物车、订单、微信支付这是典型的小程序商城玩法。高校社团要做校园新闻展示那其实不需要支付做好文章列表、详情页、订阅消息就够了。个人开发者想做个壁纸合集、工具箱、答题打卡类的小工具这种最轻松甚至不需要服务器用云开发就行。有人想做微信小程序游戏那要注意小游戏和小程序虽然都在微信里跑但是技术栈完全是另一套用的是游戏引擎Cocos这类和普通小程序的组件、API差异很大不能混为一谈。还有人问过AI小程序能不能做。能做本质上就是小程序前端界面加上大模型API调用如果你有后端能力套一层转发请求效果就会好很多也不容易被平台拦截。这些不同方向决定了你后面要学的技术栈完全不同。如果你只是想做内容展示却去研究购物车和支付那纯粹是给自己挖坑。反过来你想做商城却连微信支付商户号都没了解过等开发完再补就麻烦了。所以第一步不是选工具而是把需求压缩成一句话比如“我想做一个支持商品展示、联系人下单的小程序商城”。然后拿着这句话去决定后续所有技术选型。1.2 账号主体怎么选个人和企业差别真的很大注册小程序账号的时候微信会要求你选主体类型。主要分个人、个体工商户、企业、政府/媒体/其他组织等。这个选择比你想象中更重要因为它直接卡住你的功能范围。个人主体注册最方便只需要一个没绑定过公众号/小程序的邮箱和身份证信息。但限制也多不能开通微信支付部分类目比如电商、医疗、金融基本没戏。适合做工具类、内容展示类的应用。个体工商户/企业主体需要营业执照和对公账户个体工商户可以不用对公账户用法人银行卡验证也可以。企业主体才能开通微信支付做小程序商城基本绕不开这条路。我当时做小程序商城的时候就是因为主体问题差点翻车。一开始图省事用个人主体注册开发完才发现没法开通支付只能去工商办了个体户执照再把小程序主体迁移过去。这个过程虽然不算太复杂但来回折腾了小半个月真的很影响节奏。除此之外还要了解一个常识每个邮箱只能注册一个小程序身份证/营业执照能注册的小程序数量也有限制。如果你预料到自己后面会做多个小程序最好提前规划一下邮箱资源。1.3 原生开发、uni-app、SaaS源码到底怎么选确定好场景后就该选开发方式了。现在市面上做小程序主流的路径有三条各有各的适用人群。方案优点缺点适合谁微信原生开发WXML WXSS JS JSON官方文档齐全调试直接性能最好只能跑微信以后想做支付宝/抖音小程序得重写只瞄准微信生态、想深入学习小程序原理的人uni-app用 HBuilderX 开发一套代码可编译到微信/支付宝/H5/App前端Vue语法部分组件和原生有差异遇到问题要查框架文档有Vue基础、想多端复用的人SaaS平台/源码二开上线速度快后台现成不用写太多代码灵活性差长期付费数据不完全在自己手里没有技术基础单纯想做“小程序商城”的店主如果是完全没写过代码的纯小白我建议你先去看看SaaS方案比如餐饮外卖、电商小程序这类很多平台几百块一年就能搞定后台直接传商品图片、填价格就能用没必要从代码开始。如果你想长期做而且有一定学习能力那我还是推荐原生开发或者uni-app因为它们能让你真正理解小程序内部是怎么工作的。我个人是推荐用uni-app的。原因有两点第一Vue的语法生态大遇到问题网上随便一搜都是解决方案第二HBuilderX本身就是Vue项目的开发工具配合微信开发者工具跑起来很顺手。但你也别指望完全绕过微信开发者工具因为最终编译预览、上传审核都要回到微信开发者工具里操作。2. 环境搭建与第一个小程序项目选好方向下一步就是把开发环境搭起来。这部分看起来简单但里面有不少小坑有些人卡在第一步就能卡一整天。2.1 注册小程序账号并拿到AppID打开微信公众平台点“立即注册”选择“小程序”然后按流程填写邮箱、密码、激活邮件、选择主体类型并做验证。这里我提醒几点邮箱必须是没注册过公众号、小程序、开放平台的邮箱否则会提示被占用。个人主体注册时需要管理员扫码验证建议直接用自己常用的微信号做管理员后面很多操作都要管理员扫码。注册完成后在“设置 - 账号信息”里能看到AppID和AppSecret。AppID是后面开发工具里要填的AppSecret是调用后台接口用的千万别泄漏到前端代码里。很多人刚开始会用“测试号”这个是在开发工具里点“测试号”自动生成的省去注册步骤。但测试号和正式AppID不一样它不能真机预览也不能上传发布。所以我建议只要你是打算认真做就老老实实先注册一个正式小程序账号哪怕内容是自用呢。2.2 安装开发者工具并创建第一个项目去微信官网下载微信开发者工具选择稳定版就行别去下 nightly 这种开发版稳定性不够很影响心情。安装启动后登录方式用微信扫码。第一次打开会让你选择项目类型这里有“小程序”和“小游戏”选小程序。然后选择目录填上你的AppID前端模板可以选“JavaScript - 基础模板”。如果你想看看带云开发的模板也可以选 “JavaScript - 云开发模板”。创建完之后你会看到左侧模拟器已经显示出一个默认的“Hello World”页面这就说明环境没问题了。这里有个很多人踩过的坑在 HBuilderX 里写了uni-app项目然后在 “运行 - 运行到小程序模拟器 - 微信开发者工具” 时提示“不是开发者”或者“小程序ID还是原来的”。这种情况基本就是两个原因微信开发者工具没有登录或者登录的微信号不是你小程序的开发者/管理员。你的uni-app项目里 manifest.json 中的“微信小程序配置”还是之前别人项目的AppID需要改成你自己的。处理方式很简单打开 manifest.json找到“微信小程序配置”一栏把AppID换成你自己的然后在微信开发者工具里点右上角“详情”确认“本地设置”里的AppID已经同步。如果还是不生效清一下 HBuilderX 的缓存项目重新编译一次。千万不要在微信开发者工具里手动改 project.config.json 的AppID因为编译一次就会被HBuilderX覆盖必须从 manifest.json 源头改。2.3 一次性搞懂小程序的目录结构和四件套创建完原生小程序项目后你会看到目录下有几个文件app.js、app.json、app.wxss以及 pages/index/index.wxml、index.wxss、index.js、index.json。新手最容易懵的就是为什么一个页面要搞出4个同名文件我一般这样给别人解释把一个小程序页面当作一个人来看待。WXML 是骨架相当于人的骨骼结构决定这个页面上有哪些元素按钮、图片、文字都在这里写。WXSS 是皮肤和衣服负责样式颜色的深浅、字体大小、边距、宽度高度都是它说了算。JS 是大脑和肌肉负责逻辑和交互比如用户点了按钮之后执行什么操作、请求什么数据都在这里做。JSON 是身份证和配置单用来配置窗口标题、页面路径等也可以理解为告诉小程序这个页面该用什么姿势展示。一个功能再多的小程序本质上就是一堆这样的“四个人”组合在一起。app.json 是全局配置里面定义了所有页面路径、窗口外观、底部导航等等。每次新增页面都要在 app.json 的“pages”数组里注册路径这个很关键很多人页面写好了但总报“page not found”几乎都是因为忘了注册。页面与交互开发的几个核心点把页面数量扩充起来之前我建议先把两个问题搞明白底部导航怎么配置、顶部导航栏怎么处理。这两个问题几乎每个新手都会遇到而且直接决定了小程序看起来像不像样。3.1 底部导航 tabBar小程序的门面几乎所有小程序商城、资讯类小程序底部都有一排导航首页、分类、购物车、我的。这个在原生开发里是通过 app.json 的 tabBar 字段配置的。下面是一个我常用的 tabBar 配置示例{ pages: [ pages/index/index, pages/category/category, pages/cart/cart, pages/user/user ], tabBar: { color: #999999, selectedColor: #ff5000, list: [ { pagePath: pages/index/index, text: 首页 }, { pagePath: pages/category/category, text: 分类 }, { pagePath: pages/cart/cart, text: 购物车 }, { pagePath: pages/user/user, text: 我的 } ] } }需要注意tabBar 里每个图标官方推荐使用81px * 81px的PNG图片图片大小不要超过40KB否则在部分安卓机上会出现图标显示不出来的奇怪问题。我之前就遇到过图标在开发者工具里显示正常真机上有一个怎么都不出来最后发现是那张图超了1KB压缩之后就正常了。setTabBar 也支持动态修改但新手阶段尽量在 app.json 里一次配置好别在代码里反复改 tabBar容易引发状态不同步。3.2 页面跳转小程序内跳转、跳H5、跳另一个小程序的差别页面的跳转大概有三种情况普通页面向下钻、跳出小程序到 H5、跳到别的小程序。第一种最常用用的是 wx.navigateTo。比如从首页跳商品详情页wx.navigateTo({ url: /pages/detail/detail?id10001 });注意这个跳转有层级限制最多只能跳十层。超过十层之后 navigateTo 会没反应。如果你用 wx.redirectTo 进行页面重定向会在跳转后关掉当前页面避免栈溢出。还有个小细节tabBar 里配置过的页面不能用 navigateTo 跳必须用 wx.switchTab否则会报错。跳H5则是通过 web-view 组件。web-view 就是一个小程序里直接嵌套网页的组件但使用它有一个硬性条件要在小程序后台配置业务域名而且域名必须备案还得下载校验文件放到服务器根目录。如果你只是开发阶段临时测试可以勾选开发者工具的“不校验合法域名”这时 web-view 也能打开HTTP的链接。但真机预览和正式上线时不校验域名是不生效的这点别偷懒。还有一种是跳另一个小程序。网上经常有人问“小程序A跳小程序B需要在微信公众平台上做什么操作吗”。答案是需要的而且不止一步在小程序A的代码里用 wx.navigateToMiniProgram 跳转并在 app.json 中通过 “navigateToMiniProgramAppIdList” 配置目标小程序的AppID最多只能配置10个。在小程序B的后台需要把小程序A的AppID加入“关联小程序”列表里。如果希望从A页面跳转后直接打开B的某个具体分包页面需要把路径写完整比如/packageA/pages/detail/detail。有些同学会遇到“配置分包路径不行”的报错多数是因为目标页面所在分包没有配置 “preloadRule” 或者路径写错尤其是分包路径必须以分包根目录开头不能只写到分包名就结束。很多人说“我明明后台关联了为什么跳过去还是首页”这种情况多半是B那边改了AppID但A没有更新或者A用了测试版二维码去唤起正式版。像这种跨小程序跳转的问题建议一次性把后台和代码同步测别一边改一边怀疑人生。3.3 顶部导航栏自定义标题、动态标题和状态栏高度那些事每次有人问“小程序头部标题怎么变”其实有两种改法。第一不修改原生导航栏只在页面详情页的 onLoad 里调用wx.setNavigationBarTitle({ title: 新的标题 });这会动态设置当前页面顶部的标题文字。适合新闻详情、商品标题这种需要随时变的场景。第二彻底隐藏原生导航栏自己写一个自定义顶栏。做法是在需要自定义的页面JSON里设置{ navigationStyle: custom }这时页面内容会延伸到屏幕最顶部全屏展示。但随之而来的问题是状态栏显示时间、电量的那一条的高度怎么算胶囊按钮右上角那三个点离顶部多远我常用这样的代码拿到状态栏高度和菜单按钮位置const windowInfo wx.getWindowInfo(); const menuButtonInfo wx.getMenuButtonBoundingClientRect(); // 状态栏高度 const statusBarHeight windowInfo.statusBarHeight; // 导航栏内容区的推荐高度状态栏底部到胶囊按钮底部的距离 const navBarHeight (menuButtonInfo.top - statusBarHeight) * 2 menuButtonInfo.height;简单解释一下胶囊按钮在微信里是固定的你拿它的位置做一个对称就能算出“自定义导航栏”该占多高。这个方法在 iPhone 刘海屏和安卓挖孔屏上都能适配比硬编码一个 64px 或者 88px 要稳得多。有人问“微信小程序顶部导航栏高度、上边距怎么弄”十有八九是没有查胶囊按钮位置而是自己去猜高度结果换一台手机就错位。数据、支付与后端个人开发者怎样解决“没有服务器”的问题小程序开发到一定阶段总绕不开一个核心问题数据存哪里、从哪里来。这个问题是新手最容易懵的地方所以我单独拎出来重点说。4.1 个人开发者首选微信云开发如果你没有自己的服务器和域名也不想学Linux运维那云开发几乎是最佳选择。它相当于微信帮你托管了一套“后端环境”你只需要在开发者工具里点击“云开发”按钮按提示开通环境就能得到一个JSON数据库、云函数、云存储和云托管。云开发的数据库和普通数据库差别不大人也是集合-文档-字段结构。但它的操作方式更适合前端思维直接在小程序端调用API就能增删改查。比如获取一篇文章列表const db wx.cloud.database(); db.collection(articles).where({ category: news }).get().then(res { console.log(res.data); });如果你的业务逻辑比较复杂比如需要做批量更新、处理支付回调等这类操作不能直接在小程序端调用数据库需要写云函数。云函数就是跑在微信服务器上的Node.js函数你只需要写好逻辑然后在开发者工具里右键“上传并部署”再用 wx.cloud.callFunction 调用它。云函数还有个好处天然支持微信支付服务端。个人主体虽然不能开通微信支付但如果你是用企业主体开通了商户号在云函数中接入微信支付v3代码写起来会清爽很多因为unifiedOrder、回调验签这些都需要服务端处理只靠小程序前端是搞不定的。如果你选择自己买服务器、写后端接口那小程序端主要用 wx.request 发请求。要记住一个老生常谈但无比重要的规矩正式环境下wx.request 的域名必须是HTTPS而且要在小程序后台“开发管理 - 开发设置 - 服务器域名”里配置 request 合法域名否则接口全被拦截。开发者工具调试阶段可以点“详情 - 本地设置 - 不校验合法域名、web-view业务域名、TLS版本以及HTTPS证书”这样你在本地跑HTTP接口也能通过。但你要清楚这只是开发期给自己开后门真机预览的时候如果没关这个选项安卓手机还能勉强打开iPhone上请求基本会被拦死。所以看见“真机上request失败开发者工具正常”这种经典问题第一步先检查后台配置的合法域名和HTTPS证书是否有效别一上来就怀疑代码。4.2 微信支付和虚拟支付最容易被坑的环节网上搜“小程序商城”相关关键词时经常能看到“微信支付v3对接”这几个字。如果你真打算做商城那我建议你在开发前就把支付资质搞清楚。微信支付的开通条件目前是企业主体/个体工商户主体需要注册微信支付商户号然后用商户号和AppID做关联。个人主体没法直接申请。在接口层面新商户现在基本都要用微信支付v3接口相比旧版v2v3的签名机制改了回调报文是AES-256-GCM加密服务端解密时要注意密钥和证书区分。做云函数方案对接v3时我自己的经验是直接用微信官方提供的“云开发微信支付”能力会比裸写v3接口简单很多因为微信已经封装了大部分流程。还有个容易让人误入歧途的地方“虚拟支付”。我们常说的虚拟支付指的是在小程序里销售会员、课程、充值、解锁通关道具这类没有实体物流的商品。微信对“虚拟支付”的管理非常严格尤其iOS端小程序里根本不允许做虚拟支付也就是不能展示“购买”按钮、不能引导用户去公众号充值更不能用H5页面套一层跳转来绕过一旦被查到轻则功能下架重则封禁支付权限。所以你会发现很多知识付费、会员服务的小程序在iOS上只能做“阅读/学习”想付费得跳到微信内置浏览器里完成。这也是为什么我推荐一开始就明确自己到底做什么。你是卖实体商品的微信支付没问题你是做虚拟内容的那得提前规划好“iOS用户怎么支付”这个生死攸关的问题。别等代码全写完了再回头改那基本等于重做。4.3 页面跳转、scheme、带参启动的补充细节在上线运营阶段很多团队会生成小程序的“URL Scheme”或者“URL Link”用来在短信、邮件、外部App中拉起小程序。如果你也遇到 “明文scheme拉起此小程序配置分包路径不行” 这种问题通常是因为生成 scheme 时填写的 path 不对。比如你的分包路径是 /packageShop/pages/goods/goods那你在后台生成 scheme 填写路径时要写完整pages/xxx?xxx 但注意 scheme 的 path 里一般不填“分包根目录”的名称就结束而是必须写到页面文件路径并且路径要去掉 .vue 或 .wxml 后缀。如果目标页面在分包里后台要求填写的 path 格式常常是/packageShop/pages/goods/goods有些开发者只填了分包名/packageShop/pages/index/index当然不行。页面路径写错导致拉起后一片空白这种问题排查起来很费时间建议先拿真机扫码测试再上线。5. 核心组件踩坑与真机调试实录接下来这部分是我最想告诉你的。因为官方文档不会告诉你这些只有实际动手和真机测试才会暴露出来。5.1 iOS上 swiper 嵌套 video 导致全屏错位我做内容类小程序时遇到过iOS端一个非常奇葩的问题swiper 里放了 video 组件手指滑动到某一页视频时点击全屏按钮视频居然不是全屏而是出现在一个偏移的位置或者全屏后返回整个swiper布局乱了。这其实是微信小程序 iOS 端视频组件的原生层级问题。video是一个原生组件历史上有很长一段时间它的层级最高普通view盖不住它就会导致弹窗、自定义导航都被它穿透。后来微信改用了同层渲染大多数问题都解决了但 swiper 加 video 的组合在 iOS 上偶尔仍会触发全屏错位。我的解决思路是尽量不要把 video 直接放在 swiper-item 里。如果非要轮播多个视频可以改成只显示视频封面图点击图片后用 wx.navigateTo 跳到一个独立的视频播放页再用一个全屏的 video 来播放。这既符合用户习惯又绕开了全屏错位问题。如果确实需要在同一个页面展示多个视频建议监听视频的 fullscreenchange 事件在全屏时用 wx.setNavigationBarHidden 隐藏导航栏、手动设置页面为横屏退出全屏后再恢复。真机测试一定要在iOS上做开发者工具里永远看不出来。5.2 手机软键盘遮挡输入框这个问题在uni-app开发微信小程序时特别常见页面上有输入框手机弹软键盘后输入框被键盘盖住你想输入内容根本看不到自己在打什么。搜索框、表单页、聊天输入框都会遇到。原因在于小程序页面默认高度是可视区高度弹键盘时微信会把页面上推或者改变视口高度但如果你用了 fixed 定位的输入框它仍会贴在屏幕底部于是被键盘盖住。原生小程序里有属性 adjust-position为 true 时键盘弹起会自动上推页面。但如果你页面中有很多绝对定位元素还是会出现遮挡。我常用的方案是监听键盘高度变化onKeyboardHeightChange然后把输入框所在容器的 bottom 值设置为键盘高度。或者更简单的方法在提交/搜索按钮点击时先调用 wx.hideKeyboard() 收起键盘再进行查询。比如电商搜索页点“搜索”按钮后立刻收起键盘页面底部就能看到结果了。uni-app 里如果发现软键盘遮挡查询内容也可以在配置中把 “adjustPosition” 设为 true同时配合 ScrollView 的 scroll-into-view 把当前聚焦的输入项滚动到可视区域。核心原则是不要相信所有手机行为一致只要涉及键盘就要用真机验证。5.3 视频不播放、音频缓存、蓝牙打印这类外设坑视频不能播放最可能的原因有四个视频源不是HTTPS微信正式环境不允许HTTP资源的视频。视频格式兼容性不够iOS不支持某些安卓常见的编码格式建议用H.264编码的MP4。域名没有加白名单虽然video组件不强制校验业务域名但如果是自定义的服务器资源可能被网络策略拦掉。WebView 里播放视频时某些情况需要用户主动触摸屏幕触发播放不能直接自动播放带声音的视频。音频方面有同学问过“微信小程序音频缓存路径”是什么。实际上小程序里用 wx.getBackgroundAudioManager 或 InnerAudioContext 播放在线音频默认会走网络流并不会帮你把音频文件存到本地。如果你有大量音频需要离线播放可以用 wx.downloadFile 把音频文件下载下来然后保存到wx.env.USER_DATA_PATH目录下wx.downloadFile({ url: https://example.com/audio.mp3, success(res) { const fs wx.getFileSystemManager(); const targetPath ${wx.env.USER_DATA_PATH}/audio_001.mp3; fs.saveFile({ tempFilePath: res.tempFilePath, filePath: targetPath, success() { console.log(音频已缓存到本地); } }); } });但要注意本地缓存空间有限每个小程序的本地缓存总容量是200MB别一股脑把整个音频库都塞进去最好做成“边下边存 LRU淘汰”的策略。至于蓝牙打印这些硬件功能在小程序里主要走 wx.openBluetoothAdapter 这一系列API做之前一定先拿真实打印机测试。别指望模拟器能帮你验证蓝牙模拟器没有蓝牙能力。5.4 真机预览、调试面板与“卡在debugger”的怪问题开发完成之后需要验证真机效果。点击开发者工具顶部的“预览”按钮会生成一个二维码用小程序管理员或开发者的微信扫码就能在手机上打开。如果你发现自己扫码后打开一个空白页但开发者工具模拟器正常优先看“真机调试”而不是“预览”。真机调试就是点“真机调试”按钮它会生成一个调试二维码手机扫码后代码会在手机上运行但开发者工具里能看到 console 日志、网络请求。经常有人遇到小程序运行时停在 “paused in debugger” 这个状态页面像卡住一样。这个通常是因为你打开了调试面板在 Source 里无意加了断点或者是因为某些第三方库自带 debugger 语句。解决办法是在调试面板里点击“Resume”按钮继续执行或者把断点全部移除重新编译。如果是真机调试模式下老是自己暂停检查一下是否开了“自动暂停未捕获异常”把它关掉就好。网络问题排查方面开发者工具自带的 Network 面板已经够用。有人会因为要检查特定的请求数据去网上找各种抓包工具这里我不建议在手机上折腾代理抓包很容易被微信安全机制限制登录。请你优先用小程序官方的真机调试和 vConsole 把问题范围缩小。真机调试连不上时检查手机和电脑是否同一Wi-Fi部分企业网络配置了AP隔离也会导致真机调试失败。6. 审核上线与后续迭代从“能跑”到“能发布”写完了代码跑通了功能还真不算完。小程序要上线还要经过微信审核这个过程非常考验耐心而且有很多规则是你在开发时根本不会注意到的。6.1 发布前对着检查清单自查一遍我自己的经验是在点“上传”按钮之前先花半小时过一遍下面这个清单能省下至少一周的审核等待时间小程序名称、头像、简介、服务类目是否都已完善类目必须和实际功能一致比如你做的类似新闻资讯就不能选“工具”类目。页面中是否有测试数据、占位图片、开发者的假数据审核人员看到页面里有明显的测试内容会直接打回。如果你用了定位、授权、摄像头等敏感接口是否有对应的用途说明有些类目授权还需要额外提供资质文件。是否有明显的“引导用户到外部App/网页下单”的内容尤其是涉及虚拟支付的审核时这是高危项。正式环境服务器域名是否已经配置成HTTPS且证书有效有没有内置一个“客服”入口很多人忽略了设置客服但微信要求不少类目提供客服能力。6.2 常见审核退回原因与补救方法我见过大量审核被驳回的朋友问题基本都出在这几类类目不对、功能不完整、小程序里面有“测试”字样、iOS端有虚拟支付按钮、没有隐私保护指引。其中隐私保护指引是个近年的高频问题。登录、获取微信头像和昵称、获取手机号这些行为都必须在后台“设置 - 服务内容声明”里填写用户隐私保护指引如果你的代码里调用了某些API但没声明或者声明了但代码里并不使用审核也会被拒。如果收到“由于你的小程序涉及XX支付功能暂时无法使用”之类的提示先停止在代码层面找原因这通常不是接口问题而是账号权限层面的处罚或限制。你需要先查看站内信和类目资质判断是否因为主体资质不符、类目没有相关权限、还是存在诱导支付等违规记录再按平台指引进行申诉。这里只提醒一句不要试图用马甲包、换壳App、跳转外部链接去规避平台审核微信在这方面的检测能力比大多数人想象中强查出来的代价是功能下架甚至封号。6.3 上线只是开始推送消息与用户触达小程序上线后有一个常常被忽略但极其重要的运营工具订阅消息。订阅消息是微信规定的用来向用户发送服务通知的一种消息形式比如订单发货提醒、预约成功通知、日报周报推送。它跟公众号的模板消息类似但区别很大订阅消息必须让用户主动授权一次而且大部分模板只能发一次。如果你想让用户每周都能收到推送那就需要引导用户每周授权一次。订阅消息的触发时机也很关键。不要在用户刚进入小程序时直接弹窗让授权那基本都会被拒绝。更好的做法是等用户完成某个重要动作后在“正需要被通知”的瞬间弹出授权比如下单成功后、预约完成后。这样授权率会高很多。技术实现也不复杂在小程序后台找“订阅消息”选好模板然后调用 wx.requestSubscribeMessage 引导用户订阅再用云函数或后端调用 subscribeMessage.send 发送即可。另外一种常见触达是公众号关联通知。如果你同时有公众号可以把小程序嵌入公众号菜单、文章卡片里形成“公众号引流、小程序做服务”的组合。这种配合对内容型小程序特别有效。6.4 从MVP开始后续可以扩展的玩法如果你把上面这些流程走完了说明你已经具备独立开发小程序的基本能力了。这时候我自己建议的下一个方向是扩展AI相关的小程序。现在搜“AI小程序”已经能搜到不少项目。实现一个AI助手小程序其实不复杂前端就是聊天界面后端接大模型接口并把对话记录存到云数据库中。要注意的是大模型请求最好放在服务端或云函数里不能直接在小程序前端用API Key请求否则API Key会暴露。如果你想做更细分的应用比如AI简历优化、AI商品描述生成、AI绘画提示词库这类小程序只要有一个简洁的输入框接上大模型API就能快速做出第一版。个人开发者值得试试这条路因为内容是差异化的关键你越懂某个垂直行业就越容易做出好用的AI工具。另外也可以关注uni-app生态里的各种插件市场有人已经把mqtt、蓝牙、图表、音视频播放等比较麻烦的封装成组件。比如在uniapp里集成mqtt时注意得用wss协议不能只传ip地址小程序端对ws/wss的限制比H5严格编译前最好在官方文档里查看对应社区的坑。不过和uniapp默认组件不同这些第三方组件有时更新不及时别盲选优先看下载量和issues数量。个人的一点经验总结你看完了这么长一篇估计已经发现创建自己的小程序最难的其实不是写代码而是每一步都充满隐形的规则限制。从注册主体到类目选择从开发工具到支付权限从审核到隐私合规每一个环节都能卡住人。我自己第一次做商城类小程序光踩坑就花了两周后来二次开发另一个工具类小程序时因为熟悉了整个流程从创建项目到提交审核只用了三天。所以如果你想做自己的小程序我的建议是先别追求大而全做一个只解决一个核心问题的MVP版本然后赶紧走一遍“注册 - 开发 - 真机 - 审核 - 发布”的完整流程。你只有完整跑通一次才会真正理解这个生态里哪些是自己能控制的哪些是平台说了算的。等流程熟练之后再去扩展商城、音视频、AI等功能心里就有底了。