initiatePayment method

  1. @override
Future<NoonPaymentResult> initiatePayment({
  1. required String orderId,
  2. required String authHeader,
  3. required NoonEnvironment environment,
  4. NoonPaymentLanguage language = NoonPaymentLanguage.english,
  5. NoonPaymentStyle? style,
})
override

Initiates a payment with the Noon Payments SDK.

Implementation

@override
Future<NoonPaymentResult> initiatePayment({
  required String orderId,
  required String authHeader,
  required NoonEnvironment environment,
  NoonPaymentLanguage language = NoonPaymentLanguage.english,
  NoonPaymentStyle? style,
}) async {
  try {
    final Map<String, dynamic> arguments = {
      'orderId': orderId,
      'authHeader': authHeader,
      'url': environment.url,
      'language': language.code,
    };

    if (style != null) {
      arguments.addAll(style.toMap());
    }

    final String? result = await methodChannel.invokeMethod(
      'startPayment',
      arguments,
    );

    if (result != null) {
      return NoonPaymentResult.parse(result);
    } else {
      return NoonPaymentResult.cancelled();
    }
  } on PlatformException catch (e) {
    log("Noon Payment error: '${e.code}' - '${e.message}'");

    if (e.code.toLowerCase().contains("cancelled")) {
      return NoonPaymentResult.cancelled();
    }

    return NoonPaymentResult.failed(
      errorCode: e.code,
      errorMessage: e.message,
    );
  } catch (e) {
    log("Noon Payment unexpected error: '$e'");
    return NoonPaymentResult.failed(
      errorCode: 'UNEXPECTED_ERROR',
      errorMessage: e.toString(),
    );
  }
}