getLinkEvent method
Future<void>
getLinkEvent(
- _GetLink event,
- 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.'),
);
}
}