getLinkEvent method

Future<void> getLinkEvent(
  1. _GetLink event,
  2. Emitter<PgState> emit
)

Implementation

Future<void> getLinkEvent(_GetLink event, Emitter<PgState> emit) async {
  try {
    emit(state.copyWith(status: PgStatus.loading));

    if (event.terminalId.trim().isEmpty) {
      throw NetworkException(
        message: 'Please provide terminal id.',
        code: -1,
      );
    }

    if (kIvKey.trim().isEmpty || kKey.trim().isEmpty) {
      throw NetworkException(
        message: 'Please provide valid encryption keys.',
        code: -1,
      );
    }

    if (event.name.trim().isEmpty) {
      throw NetworkException(message: 'Please provide name.', code: -1);
    }

    if (validateMobile(event.mobile.toString())) {
      throw NetworkException(
        message: 'Please provide a valid mobile number.',
        code: -1,
      );
    }

    PgRequest request = PgRequest(
      amount: event.amount,
      currency: event.currency,
      merchantTransactionId: event.merchantTransactionId,
      mid: int.parse(event.mid),
      paymentMode: event.paymentMode,
      productType: event.productType,
      terminalId: event.terminalId,
      txnType: event.txnType,
      transactionDate: event.transactionDate,
      udf1: event.mobile,
      udf2: event.email,
      udf3: event.name,
      udf4: event.udf4,
      udf5: event.udf5,
      udf6: event.udf6,
      udf7: event.udf7,
      udf8: event.udf8,
      udf9: event.udf9,
      udf10: event.udf10,
      txnNote: event.txnNote,
      ru: event.ru,
      callbackUrl:'',
    );

    log('Generate PG Request : ${request.toJson()}');
    String req = AesConvert.encryptUsingAes(
      key: kKey,
      plainText: jsonEncode(request.toJson()),
      ivKey: kIvKey,
    );

    Map<String, dynamic> res = await state.repo.getLink(
      request: {'mid': event.mid, 'req': req, 'terminalId': event.terminalId},
    );

    final decodedRes = AesConvert.decryptAes(
      key: kKey,
      encoded: res['response'],
      ivKey: kIvKey,
    );

    PgLinkResponse response = PgLinkResponse.fromJson(
      json.decode(decodedRes),
    );
    emit(state.copyWith(response: response, status: PgStatus.success));
  } on NetworkException catch (e) {
    emit(state.copyWith(status: PgStatus.error, error: e.message));
  } catch (e) {
    emit(
      state.copyWith(status: PgStatus.error, error: 'Something went wrong.'),
    );
  }
}