fix: 状态更新

This commit is contained in:
2025-12-17 23:17:14 -08:00
parent 8f347d9183
commit 4f09267b4b
6 changed files with 37 additions and 18 deletions
@@ -20,6 +20,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter_stripe/flutter_stripe.dart';
import 'package:in_app_purchase/in_app_purchase.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:kaer_with_panels/app/model/response/kr_purchase_order_no.dart';
import 'package:kaer_with_panels/app/widgets/dialogs/hi_dialog.dart';
import 'package:kaer_with_panels/app/services/iap/iap_pending_order_service.dart';
@@ -1057,20 +1058,27 @@ class KRPurchaseMembershipController extends GetxController {
KRCommonUtil.kr_hideLoading();
KRCommonUtil.kr_showToast('购买请求失败,请重试');
}
} catch (e) {
} on PlatformException catch (e) {
KRCommonUtil.kr_hideLoading();
// 识别是否是由于用户切出、弹窗被系统关闭引起的
String errorMsg = e.toString();
if (errorMsg.contains('storekit_error') || errorMsg.contains('canceled')) {
// 这种属于用户行为导致的异常,不需要显示过于严重的“服务异常”
print('ℹ️ [IAP] 支付流程被中断(用户退出或系统取消)');
// 可以不报 Toast,或者报一个温和的提示
KRCommonUtil.kr_showToast('支付已取消');
} else {
// 真正的程序/网络异常
KRCommonUtil.kr_showToast('购买服务暂不可用,请重试');
print('❌ [IAP] 严重异常: $e');
// --- 显式判断 iOS 取消异常 ---
if (e.code == 'storekit2_purchase_cancelled') {
print('️ [IAP] 确认:用户在 StoreKit2 弹窗中点击了取消');
return; // 显式返回,不执行后续报错
}
// --- 显式判断 旧版 StoreKit 取消异常 ---
if (e.code == 'storekit_error' && (e.message?.contains('cancelled') ?? false)) {
print('ℹ️ [IAP] 确认:用户在旧版 StoreKit 中取消');
return;
}
// 其他真正的平台异常
KRCommonUtil.kr_showToast('购买服务暂不可用 (${e.code})');
} catch (e) {
// 处理非平台异常
KRCommonUtil.kr_hideLoading();
KRCommonUtil.kr_showToast('系统异常,请稍后重试');
}
} else {
print('⚠️ 未知的支付类型: ${checkoutResponse.type}');