feat(client): 购买页三档 + 支付页 render_type 多态(crypto/redirect/qr 预留)+ 导航接线

购买页三档 pro(月/季/年,金额来自 GET /v1/pay/catalog)选档 → 选支付方式 → 下单;
支付页按 session.render_type 多态渲染(crypto_address 地址+精确金额+复制、redirect
外链拉起、qr 预留复制兜底),轮询用 Task 6 的 paymentFlowProvider,409
CURRENCY_MISMATCH 走「换方式开新单」。同时收口 paymentFlowProvider 非 autoDispose
带来的轮询生命周期缺口——支付页 dispose 时停轮询(cancel() 延后到微任务执行,避免
在自身 unmount 期间同步改 state 炸 Riverpod 断言)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u
This commit is contained in:
wangjia
2026-07-10 23:50:35 +08:00
parent e66f79fdf6
commit a5fff28134
15 changed files with 783 additions and 14 deletions
+29
View File
@@ -199,4 +199,33 @@ abstract class AppText {
String get ob2Sub;
String get ob3Title;
String get ob3Sub;
// ── 购买 / 支付 ──
String get purchaseTitle; // 购买套餐 / Purchase
String get paymentTitle; // 支付 / Payment
String get buyNow; // 立即购买 / Buy now
String get payMethodAlipay; // 支付宝 / Alipay
String get payMethodCrypto; // USDT (TRC20)
String get choosePayMethod; // 选择支付方式 / Choose payment method
String get proMonthly; // 专业版·月付 / Pro · Monthly
String get proQuarterly; // 专业版·季付 / Pro · Quarterly
String get proYearly; // 专业版·年付 / Pro · Yearly
String get perQuarter; // /季 / /quarter
String get perYear; // /年 / /year
String get payAmountLabel; // 转账金额 / Amount
String get payAddressLabel; // 收款地址 / Address
String get payNetworkLabel; // 网络 / Network
String get payExactAmountHint; // 金额须精确一致,到账后自动开通 / Send the exact amount; activates automatically
String get copied; // 已复制 / Copied
String get openAlipay; // 打开支付宝支付 / Pay with Alipay
String get openAlipayHint; // 完成支付后返回,本页会自动刷新 / Return after paying; this page refreshes automatically
String get awaitingPayment; // 等待付款 / Awaiting payment
String get paySucceeded; // 已开通 / Activated
String get payExpiresAt; // 有效期至 / Valid until
String get payDone; // 完成 / Done
String get payFailed; // 支付失败 / Payment failed
String get payRetry; // 重试 / Retry
String get switchPayMethod; // 换一种支付方式 / Switch payment method
String get cancelOrder; // 取消订单 / Cancel order
String get qrNotSupported; // 请复制内容后在支付宝内打开 / Copy and open in Alipay
}