From 858f24f74b4afd47d70767ef3f8bf4af0e8299e8 Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Tue, 14 Jul 2026 23:58:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(backend):=20license=5Fpurchases.pay=5Furl?= =?UTF-8?q?=20512=E2=86=92TEXT=E2=80=94=E2=80=94=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=AE=9D=E7=BD=91=E5=85=B3=20URL=20=E8=B6=85=E5=88=97=E5=AE=BD?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E4=B8=8B=E5=8D=95=201406=20=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 真单联调发现:pay v2 redirect payload.url 是支付宝网关完整签名 URL(2KB+), 回填 pay_url 报 Data too long,且残留 out_trade_no='' 行使重试撞唯一索引。 model + schema.sql + db-schema.html 三处同步,AutoMigrate 自动 ALTER。 Co-Authored-By: Claude Fable 5 --- backend/internal/model/license_purchase.go | 2 +- backend/schema/schema.sql | 2 +- docs/db-schema.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/internal/model/license_purchase.go b/backend/internal/model/license_purchase.go index 1bd47d0..3556920 100644 --- a/backend/internal/model/license_purchase.go +++ b/backend/internal/model/license_purchase.go @@ -12,7 +12,7 @@ type LicensePurchase struct { ProductBizCode string `gorm:"size:64;not null" json:"product_biz_code"` AmountMinor int64 `gorm:"not null;default:0" json:"amount_minor"` // v2 口径:最小单位(CNY=分) Currency string `gorm:"size:8;not null;default:''" json:"currency"` - PayURL string `gorm:"size:512" json:"pay_url,omitempty"` // v2 session payload.url,订单管理「继续支付」复用 + PayURL string `gorm:"type:text" json:"pay_url,omitempty"` // v2 session payload.url(支付宝网关 URL 带签名参数可超 2KB),订单管理「继续支付」复用 RenewedTo *time.Time `json:"renewed_to,omitempty"` // settle 续期后的授权到期日(订单流水「授权续期至」展示) Amount string `gorm:"size:16" json:"amount"` // Deprecated: v1 元字符串,只读兜底输出,观察一版后 DROP OutTradeNo string `gorm:"size:64;uniqueIndex:uk_out_trade_no" json:"out_trade_no"` diff --git a/backend/schema/schema.sql b/backend/schema/schema.sql index f73cdb9..352048b 100644 --- a/backend/schema/schema.sql +++ b/backend/schema/schema.sql @@ -169,7 +169,7 @@ CREATE TABLE IF NOT EXISTS `license_purchases` ( `product_biz_code` VARCHAR(64) NOT NULL COMMENT '套餐稳定码(monthly_standard/annual_standard/monthly_pro/annual_pro)', `amount_minor` BIGINT NOT NULL DEFAULT 0 COMMENT 'v2 口径:最小单位金额(CNY=分)', `currency` VARCHAR(8) NOT NULL DEFAULT '' COMMENT 'v2 口径:币种,如 CNY', - `pay_url` VARCHAR(512) DEFAULT NULL COMMENT 'v2 下单 session payload.url,订单管理「继续支付」复用', + `pay_url` TEXT DEFAULT NULL COMMENT 'v2 下单 session payload.url(支付宝网关 URL 带签名参数可超 2KB),订单管理「继续支付」复用', `renewed_to` DATETIME DEFAULT NULL COMMENT 'settle 续期后的授权到期日(订单流水「授权续期至」展示)', `amount` VARCHAR(16) DEFAULT NULL COMMENT 'Deprecated: v1 元字符串,如 2999.00,观察一版后 DROP', `out_trade_no` VARCHAR(64) DEFAULT NULL COMMENT 'pay 订单号', diff --git a/docs/db-schema.html b/docs/db-schema.html index 8b61c78..13979f8 100644 --- a/docs/db-schema.html +++ b/docs/db-schema.html @@ -223,7 +223,7 @@ product_biz_codeVARCHAR(64)否—套餐稳定码:monthly_standard / annual_standard / monthly_pro / annual_pro amount_minorBIGINT否0v2 口径:最小单位金额(CNY=分),如 299900=¥2999.00;下单 best-effort 查单回填,webhook 结算前核对 currencyVARCHAR(8)否''v2 口径:币种码,如 CNY -pay_urlVARCHAR(512)是NULLv2 下单 session payload.url(render_type=redirect 时),订单管理「继续支付」复用 +pay_urlTEXT是NULLv2 下单 session payload.url(render_type=redirect 时,支付宝网关 URL 带签名参数可超 2KB),订单管理「继续支付」复用 renewed_toDATETIME是NULLsettle 续期成功后的授权到期日,订单流水「授权续期至」展示 amountVARCHAR(16)是NULLDeprecated:v1 元字符串(如 2999.00),只读兼容输出,观察一版后 DROP out_trade_noVARCHAR(64)是NULLpay 订单号(对账+幂等键)