ソースを参照

[new]调整会员支付失败弹窗根据归因结果控制是否显示

zk 3 ヶ月 前
コミット
81e5f55728

+ 8 - 6
lib/dialog/member_retain_dialog.dart

@@ -9,9 +9,10 @@ import 'package:location/resource/string.gen.dart';
 class MemberRetainDialog {
   static final String _tag = 'MemberRetainDialog';
 
-  static void show({required VoidCallback payClick,
-    required bool isShowRecommendView,
-    required VoidCallback cancelClick}) {
+  static void show(
+      {required VoidCallback payClick,
+      bool isShowRecommendView = true,
+      required VoidCallback cancelClick}) {
     SmartDialog.show(
         tag: _tag,
         backDismiss: false,
@@ -35,9 +36,10 @@ class _MemberRetainDialogWidget extends Dialog {
   final VoidCallback cancelClick;
   final bool isShowRecommendView;
 
-  const _MemberRetainDialogWidget({required this.payClick,
-    required this.isShowRecommendView,
-    required this.cancelClick});
+  const _MemberRetainDialogWidget(
+      {required this.payClick,
+      required this.isShowRecommendView,
+      required this.cancelClick});
 
   @override
   Widget build(BuildContext context) {

+ 24 - 10
lib/module/member/member_controller.dart

@@ -18,6 +18,7 @@ import 'package:location/dialog/alipay_qr_code_dialog.dart';
 import 'package:location/handler/error_handler.dart';
 import 'package:location/module/login/login_page.dart';
 import 'package:location/resource/assets.gen.dart';
+import 'package:location/sdk/gravity/gravity_helper.dart';
 import 'package:location/utils/async_util.dart';
 import 'package:location/utils/common_expand.dart';
 import 'package:location/utils/toast_util.dart';
@@ -326,16 +327,20 @@ class MemberController extends BaseController implements PaymentStatusCallback {
       return;
     }
     if (Platform.isAndroid) {
-      showRetainDialog(isBack: true);
+      showRetainDialog();
     } else {
       Future.delayed(Duration(milliseconds: 500), () {
-        showRetainDialog(isBack: true);
+        showRetainDialog();
       });
     }
   }
 
-  ///支付错误的时候调用
-  void showRetainDialog({bool isBack = false, int? errno}) {
+  //支付错误的时候调用
+  void showBackPaymentFailureDialog({int? errno}) {
+    if (GravityHelper.getIsFromPromote() != true && Platform.isIOS) {
+      errorPayToast(errno);
+      return;
+    }
     _isShowPayFailedDialog = true;
     MemberRetainDialog.show(
         payClick: () {
@@ -343,9 +348,18 @@ class MemberController extends BaseController implements PaymentStatusCallback {
         },
         cancelClick: () {
           errorPayToast(errno);
-          if (Platform.isAndroid && isBack) back();
         },
-        isShowRecommendView: isBack);
+        isShowRecommendView: Platform.isAndroid);
+  }
+
+  //退出挽留弹窗
+  void showRetainDialog({int? errno}) {
+    MemberRetainDialog.show(payClick: () {
+      onBuyClick();
+    }, cancelClick: () {
+      errorPayToast(errno);
+      if (Platform.isAndroid) back();
+    });
   }
 
   void onBuyClick() async {
@@ -405,7 +419,7 @@ class MemberController extends BaseController implements PaymentStatusCallback {
     }).catchError((error) {
       LoadingDialog.hide();
       //处理购买失败
-      showRetainDialog();
+      showBackPaymentFailureDialog();
       if (error is ServerErrorException) {
         if (error.code == ErrorCode.payOrderError) {
           refreshMemberData();
@@ -446,7 +460,7 @@ class MemberController extends BaseController implements PaymentStatusCallback {
       LoadingDialog.hide();
       ToastUtil.show("支付失败,请稍后重试");
       print('购买失败: ${result['error']}');
-      showRetainDialog();
+      showBackPaymentFailureDialog();
     }
   }
 
@@ -597,12 +611,12 @@ class MemberController extends BaseController implements PaymentStatusCallback {
       LoadingDialog.hide();
       debugPrint('zk---payError: $errno, $errorMessage');
       errorEventReport(payMethod);
-      showRetainDialog(errno: errno);
+      showBackPaymentFailureDialog(errno: errno);
     }, error: (int errno, String? error) {
       LoadingDialog.hide();
       debugPrint('zk---error: $errno, $error');
       errorEventReport(payMethod);
-      showRetainDialog(errno: errno);
+      showBackPaymentFailureDialog(errno: errno);
     });
   }