fix(client): dispose 不再静默取消支付订单,redirect launchUrl 加失败兜底
- PaymentFlowController 新增 stopPolling():只停轮询 Timer,不发远程 cancel、 不改 state;PaymentScreen.dispose() 改调它,不再复用 cancel()——离开支付页 (切左导航 tab)不再等同于放弃订单,cancel() 只留给「取消订单」按钮的显式路径。 - redirect 分支 launchUrl 前加 canLaunchUrl 判定 + try-catch,失败时用 showPangolinToast 给可见提示(新增 l10n openAlipayFailed,zh/en 均补)。 - purchase_page.dart::_choose 下单后严格判 phase == awaitingPayment 才跳转 支付页,建单失败(failed)不再误跳。 - 回归测试:payment_pages_test.dart 补两条用例区分 dispose(不触发 cancel、 state 不归 idle)与「取消订单」按钮(远程 cancel + state 归 idle); payment_flow_test.dart 补 stopPolling() 单元测试。
This commit is contained in:
@@ -219,6 +219,7 @@ abstract class AppText {
|
||||
String get copied; // 已复制 / Copied
|
||||
String get openAlipay; // 打开支付宝支付 / Pay with Alipay
|
||||
String get openAlipayHint; // 完成支付后返回,本页会自动刷新 / Return after paying; this page refreshes automatically
|
||||
String get openAlipayFailed; // 无法打开支付宝,请检查是否已安装或稍后重试 / Couldn't open Alipay; check it's installed or try again
|
||||
String get awaitingPayment; // 等待付款 / Awaiting payment
|
||||
String get paySucceeded; // 已开通 / Activated
|
||||
String get payExpiresAt; // 有效期至 / Valid until
|
||||
|
||||
@@ -370,6 +370,8 @@ class StringsEn extends AppText {
|
||||
@override
|
||||
String get openAlipayHint => 'Return after paying; this page refreshes automatically';
|
||||
@override
|
||||
String get openAlipayFailed => "Couldn't open Alipay; check it's installed or try again";
|
||||
@override
|
||||
String get awaitingPayment => 'Awaiting payment';
|
||||
@override
|
||||
String get paySucceeded => 'Activated';
|
||||
|
||||
@@ -364,6 +364,8 @@ class StringsZh extends AppText {
|
||||
@override
|
||||
String get openAlipayHint => '完成支付后返回,本页会自动刷新';
|
||||
@override
|
||||
String get openAlipayFailed => '无法打开支付宝,请检查是否已安装或稍后重试';
|
||||
@override
|
||||
String get awaitingPayment => '等待付款';
|
||||
@override
|
||||
String get paySucceeded => '已开通';
|
||||
|
||||
Reference in New Issue
Block a user