initiatePayment method
Future<NoonPaymentResult>
initiatePayment({
- required String orderId,
- required String authHeader,
- required NoonEnvironment environment,
- NoonPaymentLanguage language = NoonPaymentLanguage.english,
- 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(),
);
}
}