Files
邹进 08a7a00cd9
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m25s
fix: 微信授权配置公众号必填、小程序选填
商户池变更把授权完整性实现为公众号与小程序四项凭证都必填,
生产只用公众号 H5、未配置小程序,迁移后授权表为空会导致
C 端微信登录与支付全部失败,后台也无法补建。

- SaveAuthorization 启用时只校验公众号 AppID/AppSecret;
  小程序选填,但 AppID 与 AppSecret 须同时填写或同时留空
- 新增迁移 000240:无授权配置且唯一生效综合配置公众号凭证
  完整时补建启用授权配置;down 不删除数据
- 新增 OpenSpec Change allow-wechat-authorization-without-miniapp

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 23:29:55 +09:00

27 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Why
商户池变更(`add-payment-merchant-pools`)把公众号与小程序参数拆入独立的微信授权配置,并把“授权字段完整”实现为公众号与小程序四项凭证都必填:迁移 `000210` 只在四项齐全时复制授权,后台保存也要求四项齐全。8 月之前小程序一直是选填项。生产只使用公众号 H5、从未配置小程序(2026-10-19 只读核查),迁移后授权表为空,C 端微信登录、OpenID、JSSDK 与微信支付 AppID 会全部返回“微信授权未配置”,后台也无法补建。
## What Changes
- 后台保存微信授权配置:启用时只要求公众号 AppID 与 AppSecret;小程序 AppID 与 AppSecret 选填,但必须同时填写或同时留空。
- 新增成对迁移 `000240`:尚无未删除的授权配置、存在唯一当前生效综合支付配置且其公众号凭证完整时,补建一条启用的授权配置(小程序字段按原值复制,可以为空);down 不删除数据。
- 未配置小程序时,小程序登录与小程序支付沿用现有判定,明确返回配置不可用;公众号相关功能不受影响。
## Capabilities
### New Capabilities
无。
### Modified Capabilities
- `merchant-payment-routing`:微信授权配置启用条件改为公众号必填、小程序选填;上线迁移按公众号凭证完整性创建授权配置。
## Impact
- 代码:`internal/application/merchantpayment/management.go`(`SaveAuthorization` 校验)。
- 数据库:新增 `migrations/000240_backfill_wechat_authorization_oa_only.{up,down}.sql`,只插入数据,不改 Schema;测试环境已有授权配置,执行后无变化;生产执行 `000210` 后补建一条只含公众号的授权配置。
- 接口:请求与响应结构不变,仅保存校验与错误文案变化。
- 回滚:覆盖二进制安全;补建的授权配置保留,可在后台停用或编辑。