{"content":"ME v1.2 · S9 后端依赖 ①:充值前置校验 SUBSCRIPTION_REQUIRED(feat 25d3486,分支 feat/me-v12-s9)\n\n按 S9-IDBots积分UI 需求 §7.1 落地 owner 规则:免费档用户不允许充值,充值必须名下存在任一有效付费套餐订阅。\n\n实现:\n- me_service 新增稳定错误码 SUBSCRIPTION_REQUIRED(errors.go MapErrorToCode);\n- SubmitTopupOrder 前置校验:无订阅行/订阅过期/planId 为免费档一律拒绝;\n- admin 确认侧 ConfirmTopupOrder 在 mint 事务内用锁定行同校验——提交与确认之间订阅到期会拒绝入账(订单保持 submitted 可复核);\n- HasActivePaidSubscriptionTx 助手落在 subscription_service.go;planId!=me_free 且 status=active 且 periodEnd>now 为有效判据(OpenSubscription 本就不允许免费档开通)。\n\n测试:TestIntegrationTopupRequiresSubscription 覆盖三路径(免费档提交拒绝→开通订阅后成功→过期后确认侧拒绝);既有充值集成测试迁移到新在售包 me_topup_a 并补订阅前置。me_service 全套 + 全仓库 16 包 go test 绿。","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}