完整开发流程 + 避坑注意事项
最近动手做了小程序severless开发,将整个过程记录下。我给你整理最实用、可直接落地、企业级的全套流程,从0到上线全覆盖,无废话、一步到位。好处就是不用考虑服务器,便于计算,cdn等问题,直接购买套餐就好了
一、前期准备(必须先做)
1. 注册与开通
- 注册微信小程序(公众号/小程序平台)
- 开通微信支付商户号(必须完成企业认证)
- 进入小程序后台 → 开发 → 云开发 → 开通云开发环境
- 推荐选择按量付费(更稳)
- 记录:环境ID、云开发AppID
2. 必备权限开通
- 云开发:数据库、云函数、云存储、静态托管
- 微信支付:API密钥、商户序列号、客户端证书
- 小程序:服务类类目、支付权限
- 安全域名:把云开发默认域名加入小程序
request域名白名单
二、整体架构(最标准企业架构)
前端小程序
↓
云函数(业务逻辑 + 微信支付 + 鉴权)
↓
云数据库 / 云存储
↓
Web管理后台(静态托管 + 管理员云函数)
一句话总结: 小程序只做展示,所有逻辑、支付、数据库写操作全部放云函数,绝对安全。
三、完整开发流程(按顺序做)
第1步:初始化项目(小程序端)
// app.js
wx.cloud.init({
env: '你的环境ID',
traceUser: true
})
第2步:设计数据库(最关键)
标准表结构(直接照抄)
users用户表(openid、昵称、手机号、角色、创建时间)orders订单表(订单号、openid、金额、状态、支付时间、商品信息)products商品表admin管理员表config系统配置表(支付开关、公告等)
数据库权限设置(安全)
- 所有写操作必须通过云函数,小程序端只允许读
- 管理后台用管理员云函数操作全表
第3步:云函数开发(核心)
必备云函数清单
login→ 用户登录/自动注册createOrder→ 创建订单 + 统一下单(微信支付)payNotify→ 支付回调(最重要)getOrderList→ 获取订单adminLogin→ 管理后台登录adminGetData→ 管理后台数据接口
云函数通用结构
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
exports.main = async (event, context) => {
const { OPENID } = cloud.getWXContext() // 自动获取用户openid
// 业务逻辑
return { code:200, data:... }
}
第4步:微信支付开发(最容易踩坑)
支付流程(标准)
- 小程序端请求 →
createOrder云函数 - 云函数调用微信支付统一下单
- 返回支付参数给小程序
- 小程序调起
wx.requestPayment - 微信支付服务器回调
payNotify云函数 - 云函数修改订单状态为“已支付”
支付配置(云函数里)
const payConfig = {
appid: '小程序APPID',
mchid: '商户号ID',
key: 'APIv3密钥',
serialNo: '商户证书序列号',
privateKey: '商户证书私钥'
}
还可以在云开发中的模板中心,选择小程序支付模板,按照说明填写参数,填写完保存后,就会自动生成云函数,小程序集成就行。
支付必开权限
- 商户号绑定小程序APPID
- 云函数添加支付回调信任域名
- 开启APIv3权限
第5步:云存储(图片/文件)
- 商品图、头像、凭证都放云存储
- 云存储安全规则:
- 仅登录用户可上传
- 所有图片公开读取
第6步:管理后台(Web+静态托管)
云开发自带静态网站托管,直接部署后台:
- Vue/Uniapp 后台
- 管理员登录鉴权(云函数验证角色)
- 订单管理、商品管理、数据统计
部署方式: 打包 → 上传到云开发静态托管 → 自动生成域名
四、管理后台开发要点
- 用云开发Web SDK
- 管理员账号存在
admin表 - 所有接口必须鉴权
- 静态托管域名加入安全来源
五、上线发布流程
- 云函数全部上传并部署
- 数据库创建索引(加速查询)
- 配置安全规则
- 小程序代码上传提交审核
- 开通云开发按量付费
- 配置微信支付正式参数
六、超级重要注意事项(90%的人踩坑)
1. 安全类(必看)
- 绝对不要在小程序端直接操作数据库
- 绝对不要把支付密钥放在前端代码
- 云函数必须校验
OPENID,防止伪造请求 - 管理后台必须加角色鉴权
- 数据库安全规则必须限制写入权限
2. 微信支付类
- 支付回调
payNotify必须正确签名验证 - 订单号必须唯一,用
Date.now()+随机数 - 支付成功必须幂等处理,避免重复加款
- 测试先用沙箱环境
3. 云函数坑
- 云函数默认超时时间3秒,复杂业务改到20秒
- 批量操作数据库用
db.collection().add()数组 - 云函数依赖要在文件夹内
npm install
4. 数据库坑
- 单条数据上限1MB
- 查询单次最多100条
- 大数据量必须加索引
- 不要存大文本,放云存储用URL
5. 小程序坑
- 所有域名必须加入白名单
- 支付必须添加支付类目录
- 测试必须用真机调试
6. 管理后台坑
- 静态托管必须配置安全来源
- Web端调用云函数必须匿名登录
- 跨域问题在云开发控制台配置CORS
七、我可以直接给你生成的全套源码
你只要说一声,我可以一次性给你生成:
- 全套云函数(登录、创建订单、支付、回调、管理后台接口)
- 数据库结构(可直接导入)
- 小程序端支付页面代码
- 管理后台接口模板
- 微信支付配置完整代码
八、一句话总结(最核心)
小程序只负责展示,云函数负责所有业务逻辑与支付,数据库只给云函数写权限,管理后台用静态托管+管理员云函数,安全又稳定。