payWithPaymob method

  1. @override
Future<PaymobPaymentResult> payWithPaymob({
  1. required String publicKey,
  2. required String clientSecret,
  3. String? appName,
  4. Color? buttonBackgroundColor,
  5. Color? buttonTextColor,
  6. bool saveCardDefault = false,
  7. bool showSaveCard = true,
})
override

Implementation

@override
Future<PaymobPaymentResult> payWithPaymob({
  required String publicKey,
  required String clientSecret,
  String? appName,
  Color? buttonBackgroundColor,
  Color? buttonTextColor,
  bool saveCardDefault = false,
  bool showSaveCard = true,
}) async {
  try {
    final result = await methodChannel.invokeMethod('payWithPaymob', {
      "publicKey": publicKey,
      "clientSecret": clientSecret,
      if (appName != null) "appName": appName,
      if (buttonBackgroundColor != null)
        "buttonBackgroundColor": buttonBackgroundColor.toARGB32(),
      if (buttonTextColor != null) "buttonTextColor": buttonTextColor.toARGB32(),
      "saveCardDefault": saveCardDefault,
      "showSaveCard": showSaveCard,
    });

    if (result is Map) {
      final status = result['status'] as String?;

      Map<String, dynamic>? details;
      String? errorMessage;

      final rawDetails = result['details'];

      if (rawDetails is Map) {
        details = Map<String, dynamic>.from(rawDetails);
      } else if (rawDetails is String) {
        errorMessage = rawDetails;
      }

      return PaymobPaymentResult(
        status: _parseStatus(status ?? 'Unknown'),
        transactionDetails: details,
        errorMessage: errorMessage,
      );
    } else if (result is String) {
      return PaymobPaymentResult(
        status: _parseStatus(result),
      );
    } else {
      return PaymobPaymentResult(
        status: PaymobTransactionStatus.unknown,
        errorMessage: 'Unknown response type',
      );
    }
  } on PlatformException catch (e) {
    debugPrint("Failed to call native SDK: '${e.message}'.");
    return PaymobPaymentResult(
      status: PaymobTransactionStatus.unknown,
      errorMessage: e.message,
    );
  } catch (e) {
    debugPrint("Unexpected error: $e");
    return PaymobPaymentResult(
      status: PaymobTransactionStatus.unknown,
      errorMessage: e.toString(),
    );
  }
}