开发阶段可以使用临时公网地址验证链路,但真机小程序和长期运营必须使用固定 HTTPS 域名。规划的生产 API 域名为 print-api.munvor.com

一、为什么真机会提示域名不合法

微信开发者工具可以临时关闭合法域名校验,但手机真机仍受小程序后台配置限制。当请求地址不在合法域名列表时,会出现:

request:fail url not in domain list

生产环境需要在微信公众平台分别配置:

  • request 合法域名
  • uploadFile 合法域名
  • downloadFile 合法域名

如果 API、对象存储上传和下载使用不同主机名,每个主机名都要进入对应列表。所有地址使用有效 HTTPS 证书。

二、固定域名方案

推荐:

小程序 API:       https://print-api.munvor.com
对象上传:          私有对象存储短期签名地址
对象下载:          私有对象存储短期签名地址
支付回调:          https://print-api.munvor.com/v1/payments/wechat/notify
管理后台:          使用独立子域名并限制管理员访问

路径只是工程建议,正式接口以实现版本为准。

三、当前 DNS 变更原则

munvor.com 已经承载网站和企业邮箱,根域 DNS 使用阿里云/万网。print-api 子域可以独立新增解析,因此不需要为了部署 API 迁移整个根域名的 NS。

最稳妥流程:

  1. 在云平台部署中心 API,获得稳定负载均衡地址或固定入口。
  2. 完成预发环境健康检查和 HTTPS。
  3. 在现有阿里云 DNS 只新增 print-api 的 A 或 CNAME 记录。
  4. 等待解析生效,验证证书、API、上传和支付回调。
  5. 在微信公众平台加入合法域名。
  6. 通过手机 4G/5G 和不同 Wi-Fi 完成真机测试。

四、不要盲目迁移整个 DNS

如果未来确实需要把权威 DNS 迁移到 Cloudflare,必须先:

  • 从阿里云导出完整区域记录。
  • 核对根域、www、所有业务子域。
  • 核对企业邮箱 MX、SPF、DKIM、DMARC、mail、smtp、imap 和验证 TXT。
  • 在 Cloudflare 中逐条复制并先保持邮件相关记录为 DNS-only。
  • 直接向新权威 NS 查询并逐条比对。
  • 再去注册商修改 NS。
  • 观察至少一个完整 DNS TTL 周期,并测试网站、收信、发信和 SPF/DKIM。

不要在同一次变更中同时迁移 DNS、修改邮箱策略和上线支付接口。每个高风险变更应独立回滚。

五、推荐云端组件

推荐形态 关键要求
入口 HTTPS 负载均衡或边缘代理 健康检查、WAF、限速、证书自动续期
API 无状态容器或云服务 至少两个实例、滚动发布、自动扩缩
数据库 托管 PostgreSQL 主备、连接池、自动备份、时间点恢复
文件 私有对象存储 服务端加密、短期签名、生命周期删除
队列 可靠托管队列 至少一次、重试上限、死信队列、幂等消费
缓存 Redis 或等价服务 限流、短租约和缓存,不保存最终业务真相
监控 指标、日志、追踪和告警 trace ID 贯穿小程序、API、支付和代理

六、数据库和文件迁移

SQLite 到 PostgreSQL

  1. 为当前表建立 PostgreSQL 迁移脚本。
  2. 增加租户、门店、打印机和版本字段。
  3. 建立订单、支付和任务唯一约束。
  4. 导入受控测试数据或仅从空生产库开始。
  5. 同时运行集成测试和状态机测试。
  6. 完成备份恢复演练。

本地上传目录到对象存储

  1. 建立私有 Bucket。
  2. API 只生成短期上传凭证。
  3. 上传完成后服务端验证对象。
  4. 代理只获得单任务短期下载凭证。
  5. 配置完成后 24 小时内删除的生命周期策略。
  6. 监控删除失败和异常存储增长。

七、发布环境

至少保留:

  • 开发环境:本地或个人云资源,不接真实资金。
  • 预发环境:与生产同结构,使用独立数据库、Bucket、支付配置和设备。
  • 生产环境:真实用户和资金,最小权限、审计和备份完整。

环境之间不得共享 AppSecret、支付私钥、数据库或对象存储。配置通过环境变量或密钥管理注入,不写进代码仓库。

八、上线与回滚

  1. 数据库向后兼容迁移。
  2. 部署新 API 实例但不接流量。
  3. 健康检查、合成上传和模拟代理检查。
  4. 灰度少量请求。
  5. 观察错误率、延迟、队列年龄和支付回调。
  6. 扩到全量。
  7. 保留上一版本和数据库回滚方案。

支付状态和已创建订单不能通过简单回滚代码“倒回去”。回滚时仍需保证旧版本能够理解新状态,或使用前向修复。

微信小程序网络规则和 Cloudflare 产品行为可能更新,实施时以微信小程序网络能力官方文档Cloudflare 官方文档为准。

上一篇:门店代理与设备部署下一篇:运维与故障处理