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:
@@ -332,4 +332,59 @@ class StringsEn extends AppText {
|
||||
String get ob3Title => 'Private by design';
|
||||
@override
|
||||
String get ob3Sub => 'End-to-end encrypted. We keep zero browsing logs.';
|
||||
|
||||
@override
|
||||
String get purchaseTitle => 'Purchase';
|
||||
@override
|
||||
String get paymentTitle => 'Payment';
|
||||
@override
|
||||
String get buyNow => 'Buy now';
|
||||
@override
|
||||
String get payMethodAlipay => 'Alipay';
|
||||
@override
|
||||
String get payMethodCrypto => 'USDT (TRC20)';
|
||||
@override
|
||||
String get choosePayMethod => 'Choose payment method';
|
||||
@override
|
||||
String get proMonthly => 'Pro · Monthly';
|
||||
@override
|
||||
String get proQuarterly => 'Pro · Quarterly';
|
||||
@override
|
||||
String get proYearly => 'Pro · Yearly';
|
||||
@override
|
||||
String get perQuarter => '/quarter';
|
||||
@override
|
||||
String get perYear => '/year';
|
||||
@override
|
||||
String get payAmountLabel => 'Amount';
|
||||
@override
|
||||
String get payAddressLabel => 'Address';
|
||||
@override
|
||||
String get payNetworkLabel => 'Network';
|
||||
@override
|
||||
String get payExactAmountHint => 'Send the exact amount; activates automatically';
|
||||
@override
|
||||
String get copied => 'Copied';
|
||||
@override
|
||||
String get openAlipay => 'Pay with Alipay';
|
||||
@override
|
||||
String get openAlipayHint => 'Return after paying; this page refreshes automatically';
|
||||
@override
|
||||
String get awaitingPayment => 'Awaiting payment';
|
||||
@override
|
||||
String get paySucceeded => 'Activated';
|
||||
@override
|
||||
String get payExpiresAt => 'Valid until';
|
||||
@override
|
||||
String get payDone => 'Done';
|
||||
@override
|
||||
String get payFailed => 'Payment failed';
|
||||
@override
|
||||
String get payRetry => 'Retry';
|
||||
@override
|
||||
String get switchPayMethod => 'Switch payment method';
|
||||
@override
|
||||
String get cancelOrder => 'Cancel order';
|
||||
@override
|
||||
String get qrNotSupported => 'Copy and open in Alipay';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user