package model import "time" // LicensePurchase 在线购买/续费记录(走 pay 收款中枢,契约见 ~/code/pay-contract)。 // out_trade_no = pay 订单号,兼作对账键与幂等键(同一单只续期一次)。 // Amount 存 pay 下单响应回传的权威金额(如 "2999.00"),webhook 回调时逐分核对。 type LicensePurchase struct { Base ShopID uint64 `gorm:"not null;index" json:"shop_id"` UserID uint64 `gorm:"not null" json:"user_id"` ProductBizCode string `gorm:"size:64;not null" json:"product_biz_code"` Amount string `gorm:"size:16" json:"amount"` OutTradeNo string `gorm:"size:64;uniqueIndex:uk_out_trade_no" json:"out_trade_no"` Status string `gorm:"type:enum('pending','paid','failed');default:'pending';index" json:"status"` TradeNo string `gorm:"size:64" json:"trade_no,omitempty"` // 渠道交易号(支付宝/微信) Channel string `gorm:"size:16" json:"channel,omitempty"` PaidAt *time.Time `json:"paid_at,omitempty"` }