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
This commit is contained in:
@@ -157,6 +157,31 @@ CREATE TABLE IF NOT EXISTS `license_codes` (
|
||||
KEY `idx_redeemed_shop` (`redeemed_shop_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='兑换券码池';
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 在线购买/续费记录(pay 收款中枢,契约 pay-contract v1.0.0)
|
||||
-- out_trade_no = pay 订单号,对账键 + 幂等键;amount 为 pay 回传权威金额
|
||||
-- ------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `license_purchases` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`shop_id` BIGINT UNSIGNED NOT NULL,
|
||||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '下单管理员',
|
||||
`product_biz_code` VARCHAR(64) NOT NULL COMMENT '套餐稳定码(monthly_standard/annual_standard/monthly_pro/annual_pro)',
|
||||
`amount` VARCHAR(16) DEFAULT NULL COMMENT 'pay 下单回传金额,如 2999.00',
|
||||
`out_trade_no` VARCHAR(64) DEFAULT NULL COMMENT 'pay 订单号',
|
||||
`status` ENUM('pending','paid','failed') NOT NULL DEFAULT 'pending',
|
||||
`trade_no` VARCHAR(64) DEFAULT NULL COMMENT '渠道交易号(支付宝/微信)',
|
||||
`channel` VARCHAR(16) DEFAULT NULL,
|
||||
`paid_at` DATETIME DEFAULT NULL,
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`deleted_at` DATETIME DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_out_trade_no` (`out_trade_no`),
|
||||
KEY `idx_shop` (`shop_id`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_deleted_at` (`deleted_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='在线购买/续费记录';
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 商品分类
|
||||
-- ------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user