feat(server/pay): catalog 加全员优惠月付 pro_month_promo(¥6/$1)+ Promo 标记
优惠档全员可见,客户端用特殊卡片展示;pay 侧需种同 biz_code 商品后方可真下单 (未种前 product_not_found→404,UI 先就绪)。catalog 测试更新为 4 档 + promo 断言。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
This commit is contained in:
@@ -14,11 +14,15 @@ type CatalogItem struct {
|
||||
PriceMinor int64 `json:"price_minor"` // CNY 分(展示)
|
||||
Currency string `json:"currency"` // CNY
|
||||
PriceUsdtMicro int64 `json:"price_usdt_micro"` // USDT 微元(展示;各币种一口价、非汇率换算)
|
||||
Promo bool `json:"promo,omitempty"` // true=优惠档,客户端用特殊卡片展示(全员可见)
|
||||
}
|
||||
|
||||
// Catalog 三档单源。时长取宽松口径(31/92/366 覆盖大月与最长季)。
|
||||
// USDT 展示价与 pay 侧 products 一口价对齐($4.99/$12.99/$34.99),不做实时汇率换算。
|
||||
// Catalog 单源。时长取宽松口径(31/92/366 覆盖大月与最长季)。
|
||||
// USDT 展示价与 pay 侧 products 一口价对齐,不做实时汇率换算。
|
||||
// pro_month_promo 是全员优惠月付(¥6/$1);**pay 侧需种同 biz_code 商品后方可真下单**,
|
||||
// 未种前下单 pay 回 product_not_found → 404(UI 先就绪)。
|
||||
var Catalog = []CatalogItem{
|
||||
{SKU: "pro_month_promo", Plan: string(codes.PlanPro), Days: 31, PriceMinor: 600, Currency: "CNY", PriceUsdtMicro: 1000000, Promo: true},
|
||||
{SKU: "pro_month", Plan: string(codes.PlanPro), Days: 31, PriceMinor: 2999, Currency: "CNY", PriceUsdtMicro: 4990000},
|
||||
{SKU: "pro_quarter", Plan: string(codes.PlanPro), Days: 92, PriceMinor: 6888, Currency: "CNY", PriceUsdtMicro: 12990000},
|
||||
{SKU: "pro_year", Plan: string(codes.PlanPro), Days: 366, PriceMinor: 19999, Currency: "CNY", PriceUsdtMicro: 34990000},
|
||||
|
||||
@@ -286,9 +286,14 @@ func TestCatalog(t *testing.T) {
|
||||
Items []CatalogItem `json:"items"`
|
||||
}
|
||||
_ = json.Unmarshal(w.Body.Bytes(), &resp)
|
||||
if len(resp.Items) != 3 || resp.Items[0].SKU != "pro_month" {
|
||||
if len(resp.Items) != 4 || resp.Items[0].SKU != "pro_month_promo" {
|
||||
t.Fatalf("catalog = %+v", resp.Items)
|
||||
}
|
||||
// 优惠档:全员可见,promo 标记 + ¥6/$1 展示价。
|
||||
promo := resp.Items[0]
|
||||
if !promo.Promo || promo.PriceMinor != 600 || promo.PriceUsdtMicro != 1000000 {
|
||||
t.Fatalf("promo item 不符: %+v", promo)
|
||||
}
|
||||
}
|
||||
|
||||
// 老 created 单超 TTL → 列表视图显 expired;近期 created → 仍 created。
|
||||
|
||||
Reference in New Issue
Block a user