feat(client): pay v2 支付渠道 switch + 订单列表/详情端到端
购买/支付(Phase B): - 新 SegSwitch 段控 widget(镜像 .segswitch 原子) - 购买页重构:顶部支付渠道 switch(默认 USDT→加密货币 / 人民币→支付宝),套餐价随渠道分币种显示,删底部弹窗选方式;点购买直达支付页 - 支付页加订单信息卡(套餐/渠道/金额按币种) - models:PayChannel + PayCatalogItem.priceUsdtMicro/priceLabel(ch)/perMonthLabel(ch) 订单(P0,全新): - payment_api.listOrders() + orders_provider(列表 + 详情 family) - OrdersScreen 列表→详情(状态 pill / 可复制订单号 / 继续支付·重新购买) - 导航:NavView.orders + desktop_shell 分支 + account 入口 配套: - l10n +19 getter(支付渠道 4 + 订单 15)×6 语言,l10n 闸绿 - 图标单源迁移 lucide_icons_flutter + pangolin_icons.dart(codegen) - 联系渠道订正(Telegram/邮件 support@yanmeiai.com/官网) + 前端去广告&时长 - 测试:购买 switch 分币种 + 订单列表/空态/详情 + 假 API listOrders;golden 重录 - flutter analyze 0 error,flutter test 226 全绿 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:
@@ -1,6 +1,6 @@
|
||||
// strings_ko.dart — 한국어 문구 리소스 (단일 언어 표시)
|
||||
//
|
||||
// 금지어: VPN / 翻墙 / 科学上网 / 突破封锁 / 自由穿越 / Go anywhere.
|
||||
// 금지어: 검열 우회·민감 표현. 목록은 design/CLAUDE.md §1 규칙 13 참조.
|
||||
// 포지셔닝: 네트워크 가속 / 경험 최적화 + 프라이버시.
|
||||
// 요금제 번호는 design/CLAUDE.md §7 을 따름.
|
||||
import 'app_text.dart';
|
||||
@@ -65,7 +65,7 @@ class StringsKo extends AppText {
|
||||
@override
|
||||
String get watchAdMore => '광고 시청으로 시간 추가';
|
||||
@override
|
||||
String get quotaExhaustedNotice => '오늘 무료 시간을 모두 사용했습니다. 광고를 시청해 시간을 추가하거나 업그레이드하세요.';
|
||||
String get quotaExhaustedNotice => '오늘 무료 시간을 모두 사용했습니다. 업그레이드하면 계속 연결할 수 있습니다.';
|
||||
@override
|
||||
String get adPlaying => '광고 재생 중…';
|
||||
@override
|
||||
@@ -311,6 +311,8 @@ class StringsKo extends AppText {
|
||||
@override
|
||||
String get contactStore => '셀프 스토어';
|
||||
@override
|
||||
String get contactWebsite => '공식 웹사이트';
|
||||
@override
|
||||
String get contactHoursTitle => '지원 시간';
|
||||
@override
|
||||
String get contactHours => '매일 9:00 – 24:00 (GMT+8)';
|
||||
@@ -370,4 +372,102 @@ class StringsKo extends AppText {
|
||||
String get ob3Title => '설계부터 프라이버시';
|
||||
@override
|
||||
String get ob3Sub => '종단 간 암호화. 브라우징 기록을 전혀 저장하지 않습니다.';
|
||||
|
||||
// ── 购买 / 支付 ──
|
||||
@override
|
||||
String get purchaseTitle => '요금제 구매';
|
||||
@override
|
||||
String get paymentTitle => '결제';
|
||||
@override
|
||||
String get buyNow => '지금 구매';
|
||||
@override
|
||||
String get payMethodAlipay => 'Alipay';
|
||||
@override
|
||||
String get payMethodCrypto => 'USDT (TRC20)';
|
||||
@override
|
||||
String get choosePayMethod => '결제 수단 선택';
|
||||
@override
|
||||
String get proMonthly => 'Pro · 월간';
|
||||
@override
|
||||
String get proQuarterly => 'Pro · 분기';
|
||||
@override
|
||||
String get proYearly => 'Pro · 연간';
|
||||
@override
|
||||
String get perQuarter => '/분기';
|
||||
@override
|
||||
String get perYear => '/년';
|
||||
@override
|
||||
String get payAmountLabel => '송금액';
|
||||
@override
|
||||
String get payAddressLabel => '입금 주소';
|
||||
@override
|
||||
String get payNetworkLabel => '네트워크';
|
||||
@override
|
||||
String get payExactAmountHint => '정확한 금액을 보내주세요. 입금 확인 후 자동으로 활성화됩니다';
|
||||
@override
|
||||
String get copied => '복사됨';
|
||||
@override
|
||||
String get openAlipay => 'Alipay로 결제';
|
||||
@override
|
||||
String get openAlipayHint => '결제 후 돌아오면 이 페이지가 자동으로 새로고침됩니다';
|
||||
@override
|
||||
String get openAlipayFailed => 'Alipay를 열 수 없습니다. 설치되어 있는지 확인하거나 다시 시도하세요';
|
||||
@override
|
||||
String get awaitingPayment => '결제 대기 중';
|
||||
@override
|
||||
String get paySucceeded => '활성화됨';
|
||||
@override
|
||||
String get payExpiresAt => '유효기간';
|
||||
@override
|
||||
String get payDone => '완료';
|
||||
@override
|
||||
String get payFailed => '결제 실패';
|
||||
@override
|
||||
String get payRetry => '다시 시도';
|
||||
@override
|
||||
String get switchPayMethod => '다른 결제 수단으로 변경';
|
||||
@override
|
||||
String get cancelOrder => '주문 취소';
|
||||
@override
|
||||
String get qrNotSupported => '내용을 복사해 Alipay에서 여세요';
|
||||
|
||||
// ── 支付渠道 switch + 订单 ──
|
||||
@override
|
||||
String get payChannel => '결제 채널';
|
||||
@override
|
||||
String get payChannelUsdt => 'USDT · 암호화폐';
|
||||
@override
|
||||
String get payChannelCny => '위안화 · Alipay';
|
||||
@override
|
||||
String get perMonthSuffix => ' /월';
|
||||
@override
|
||||
String get ordersTitle => '내 주문';
|
||||
@override
|
||||
String get orderDetailTitle => '주문 상세';
|
||||
@override
|
||||
String get ordersEmpty => '주문이 없습니다';
|
||||
@override
|
||||
String get orderNoLabel => '주문 번호';
|
||||
@override
|
||||
String get orderPlanLabel => '플랜';
|
||||
@override
|
||||
String get orderMethodLabel => '결제 수단';
|
||||
@override
|
||||
String get orderAmountLabel => '금액';
|
||||
@override
|
||||
String get orderCreatedLabel => '생성 시각';
|
||||
@override
|
||||
String get orderPaidLabel => '결제 시각';
|
||||
@override
|
||||
String get orderStatusPaid => '활성화됨';
|
||||
@override
|
||||
String get orderStatusCanceled => '취소됨';
|
||||
@override
|
||||
String get orderContinuePay => '결제 계속';
|
||||
@override
|
||||
String get orderRefresh => '새로고침';
|
||||
@override
|
||||
String get orderRebuy => '다시 구매';
|
||||
@override
|
||||
String get payMethodNezha => 'Nazhapay';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user