fix: 状态更新
This commit is contained in:
+20
-12
@@ -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}');
|
||||
|
||||
Reference in New Issue
Block a user