clisitefTransaction method

Future<TefTransactionResponseClisitef> clisitefTransaction({
  1. required SitefSettingsClisitef sitefSettings,
  2. required SitefTransactionClisitef sitefTransaction,
})

Implementation

Future<TefTransactionResponseClisitef> clisitefTransaction({
  required SitefSettingsClisitef sitefSettings,
  required SitefTransactionClisitef sitefTransaction,
}) async {
  if (!_licenceValidated) {
    throw PlatformException(
      code: 'LICENCE_NOT_INITIALIZED',
      message: 'Chame ClisitefTech.I.initPayment antes de iniciar transações.',
    );
  }
  final modality = int.tryParse(_modalityMap[sitefTransaction.sitefModality] ?? '0') ?? 0;

  String restrictions = '';
  if (modality == 3 || modality == 2) {
    restrictions = sitefSettings.enabledTransactions;
  }

  Map<String, dynamic> paramsTransaction = {
    'modalidade': modality,
    'valor': sitefTransaction.valuePayment,
    'cupomFiscal': sitefTransaction.couponNumber,
    'dataFiscal': sitefTransaction.dateFiscal,
    'horario': sitefTransaction.hourFiscal,
    'operador': sitefTransaction.operatorPos,
    'restricoes': restrictions,
    'ipSitef': sitefSettings.serverIp,
    'storeId': sitefSettings.storeCode,
    'terminalId': sitefSettings.posNumber,
    'parametrosAdc': sitefSettings.additionalParameters,
  };

  try {
    String resultTransaction = await channel.invokeMethod('startTransaction', paramsTransaction);
    final resultJson = json.decode(resultTransaction);
    final model = TefTransactionModel.fromJson(resultJson);

    if (model.resultCode != 0 || model.tefNSUAuthorizing == '') {
      if (model.resultCode == -1) {
        final configure = await configureClisitef(sitefSettings: sitefSettings);
        if (configure != 0) {
          return await clisitefTransaction(sitefSettings: sitefSettings, sitefTransaction: sitefTransaction);
        }
      }
    }
    return _fetchTefTransactionResponse(model: model);
  } catch (e) {
    rethrow;
  }
}