wangjia
|
18b97d5d35
|
refactor(backend): 清理 settle 残单预查死代码块——入参金额直接回填,fail-closed 语义不变
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-11 01:31:39 +08:00 |
|
wangjia
|
45a43c20a4
|
fix(backend): 订单列表 user_name 在 real_name 为空时回退 username
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 23:27:24 +08:00 |
|
wangjia
|
7e99a7a7ee
|
feat(backend): 授权订单列表接口——分页/筛选/汇总,支撑订单管理 tab
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 23:21:24 +08:00 |
|
wangjia
|
7e5a697f28
|
feat(backend): 购买单取消透传 pay v2 cancel
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 22:40:44 +08:00 |
|
wangjia
|
f00f453d6f
|
feat(backend): pay 查单兜底适配 v2 订单八态 + 残单补查移出行锁事务
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 22:34:34 +08:00 |
|
wangjia
|
7f713c4c96
|
feat(backend): pay webhook 升 v2 事件模型——event_type 分发、amount_minor 核对、nonce 防重放
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 20:47:55 +08:00 |
|
wangjia
|
a5d7a1dc00
|
feat(backend): pay 下单/查单切 v2 契约——sku 直用 biz_code、session 多态响应、金额 int64 分
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 20:33:51 +08:00 |
|
wangjia
|
bc183ab7df
|
feat(backend): license_purchases 增 amount_minor/currency/pay_url/renewed_to 列 + 存量回填(pay v2 金额口径)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 20:26:59 +08:00 |
|
wangjia
|
f3cfdcadca
|
feat: 购买下单透传终端类型,手机端收银台拉起支付宝 App(契约 v1.1.0)
根因:pay 判手机/PC 用下单请求 UA,而下单由 jiu 后端 Go client 发出,
恒被判 PC 扫码页——手机用户拿不到 wap 拉起页。
- backend:/license/purchase 请求体加可选 client_type(oneof=pc mobile),
缺省按本请求 UA 兜底(官网浏览器购买自动受益);CreatePurchase 透传给 pay;
单测断言透传 + 既有用例补参
- client:createPurchase 支持 clientType;PurchaseCard 按平台声明
(iOS/Android=mobile,桌面=pc,Web 不传走 UA),kIsWeb 先于 dart:io;
launchUrl 外部浏览器不变,wap 收银台自动拉起支付宝
- 配套:pay-contract v1.1.0(744725b)+ pay 侧 resolveIsMobile(dbdadd1)已各自提交
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
|
2026-07-04 10:31:49 +08:00 |
|
wangjia
|
a996593b1c
|
fix(backend): 特惠限次 webhook 兜底——第二笔已支付特惠单只标 paid 不叠加时长
按 pay-contract 看板要求:续期入账前事务内再查本店是否已有另一笔 paid 的
promo_first_month(防绕过前端/并发双买);命中则跳过 entitle、记 ALERT 告警,
回调仍回 SUCCESS(钱已收,退款人工处理)。补对应测试(双买不叠加/正常套餐不受影响)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
|
2026-07-03 22:28:21 +08:00 |
|
wangjia
|
b3c9d98eae
|
feat: ¥1 首月特惠套餐(新店专享,每店限购一次,官网+App 同步上线)
- 后端:payPlans 新增 promo_first_month(¥1/30 天/标准版权益);下单强校验每店限购一次(仅 paid 计数,弃单可重下),已享用返回 409;新增 GET /license/promo-status 供前端置灰
- 官网:checkout 套餐段第二位插「🔥 首月特惠 ¥1」+ 推广横幅 + 划线原价 ¥299;首页价格区第二位插特惠卡(5 列);已享用自动置灰
- App:购买弹窗套餐段改三档(标准/特惠/高级),特惠选中显示推广横幅与划线价,已享用置灰并禁用提交
- 实付金额以 pay 侧为准,pay 需 seed promo_first_month 产品后生效
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
|
2026-07-03 22:25:07 +08:00 |
|
wangjia
|
18925d7d15
|
feat(backend): 在线购买/续费对接 pay 收款中枢——下单/webhook 验签入账/续期叠加/查单兜底
- POST /license/purchase(仅管理员)建单并调 pay 下单,返回收银台 pay_url
- POST /pay/callback 公开接收器:HMAC 验签+时间戳窗口+按 out_trade_no 幂等+金额逐分核对,同事务续期
- 续期与兑换券同口径:未过期从到期日叠加、已过期从现在起算,写入 tier/max_devices/features
- 后台每 60s 查单兜底防 webhook 丢失;closed 标 failed
- 新表 license_purchases(schema.sql/AutoMigrate/testutil 同步);配置 PAY_SECRET/PAY_BASE_URL/PAY_RETURN_URL
- 契约真相源 ~/code/pay-contract openapi.yaml v1.0.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
|
2026-07-03 20:40:06 +08:00 |
|