preAutorization method

  1. @override
Future<GetnetPreAutorizationResponse> preAutorization({
  1. required GetnetPreAutorizationPayload preAutorizationPayload,
})
override

Implementation

@override
Future<GetnetPreAutorizationResponse> preAutorization({required GetnetPreAutorizationPayload preAutorizationPayload}) async {
  try {
    final response = await methodChannel.invokeMethod<Map>('preAuthorization', preAutorizationPayload.toJson());
    if (response is Map) {
      if ((response['code'] == GetnetStatusDeeplink.SUCCESS.name || response['code'] == GetnetStatusDeeplink.PENDING.name) && response['data'] is Map) {
        if (response['code'] == GetnetStatusDeeplink.SUCCESS.name) {
          final jsonData = response['data'];
          return GetnetPreAutorizationResponse.fromJson(json: jsonData);
        } else {
          return GetnetPreAutorizationResponse(
            result: response['result'] ?? '5',
            resultDetails: 'Operação ainda pendente cancelada pelo lojista, realize consulta do status',
            amount: preAutorizationPayload.amount,
            callerId: preAutorizationPayload.callerId,
            receiptAlreadyPrinted: false,
            type: '',
            inputType: '',
          );
        }
      } else {
        throw GetnetPreAutorizationException(message: response['message']);
      }
    } else {
      throw GetnetPreAutorizationException(message: 'invalid response');
    }
  } on GetnetPreAutorizationException catch (e) {
    throw GetnetPreAutorizationException(message: e.message);
  } on PlatformException catch (e) {
    throw GetnetPreAutorizationException(message: e.message ?? 'PlatformException');
  } catch (e) {
    throw GetnetPreAutorizationException(message: "Status payment Error: $e");
  }
}