Skip to content

SaaS 部署与计费(EE) ​

EE 集群版支持 SaaS 化运营:套餐订阅、租户自助开通、Stripe / 微信支付双通道计费(S-4)。

套餐模型 ​

套餐设备数消息量/月功能
Free5010 万CE 全功能
Pro5,0005,000 万+ 规则引擎 / 告警多通道
Enterprise不限不限+ 视频监控 / OTA / 专属支持
  • 套餐定义存于主库 ms_plan,订阅关系存 ms_subscription,订单存 ms_order。
  • 租户超配额时接入层自动限流并提示升级。

支付通道配置 ​

application.yml:

yaml
ms:
  pay:
    stripe:
      enabled: true
      api-key: ""                # sk_test_xxx / sk_live_xxx,走环境变量注入
      webhook-secret: "whsec_xxx"
      currency: cny
      success-url: "https://www.zbidc.com/billing/result?status=success"
      cancel-url: "https://www.zbidc.com/billing/result?status=cancel"
    wechat:
      enabled: true
      appid: ""
      mchid: ""
      api-v3-key: ""             # 32 字节 APIv3 密钥(回调 AES-GCM 解密)
      merchant-serial: ""
      private-key: ""            # 商户私钥(签名)
      notify-url: "https://api.zbidc.com/api/billing/webhook/wechat"
      platform-cert-path: ""     # 生产必填(回调验签);空=跳过验签仅开发

生产环境密钥必须走环境变量或密钥管理系统注入,禁止入库或提交到代码仓库。

下单与回调流程 ​

租户选套餐 → POST /api/billing/order/create(返回 Checkout 会话/支付参数)
  → 用户完成支付 → Stripe/微信 异步回调 webhook
  → 验签 + 校验金额 → 订单置为已支付 → 自动开通/续期订阅 → 租户配额生效
http
POST /api/billing/order/create          # 创建订单(planId + channel)
GET  /api/billing/order/{orderNo}       # 查询订单状态
POST /api/billing/webhook/stripe        # Stripe 回调(验签 stripe-signature)
POST /api/billing/webhook/wechat        # 微信支付回调(AES-GCM 解密 + 平台证书验签)
GET  /api/billing/subscription/current  # 当前租户订阅信息

幂等与对账 ​

  • 回调按 orderNo 幂等处理,重复通知直接返回成功,不重复开通。
  • 每日定时任务拉取 Stripe Balance Transactions 与微信账单,与本地订单对账,差异写入告警。

部署拓扑(EE) ​

用户 → Cloudflare CDN → 前端(Nginx)
                     → API 网关 → backend × N(无状态,可水平扩)
                                 → MySQL(主从)/ Redis / EMQX 集群 / TDengine 集群

后端无状态,会话存 Redis;EMQX 集群共享订阅;TDengine 多副本保证时序数据高可用。