getTransactionStatus method

Future<Either<Failure, TransactionStatusResponse>> getTransactionStatus({
  1. required String merchantTransactionId,
  2. required String merchantId,
  3. required String clientId,
  4. required String clientSecret,
  5. required String clientApiKey,
})

Implementation

Future<Either<Failure, TransactionStatusResponse>> getTransactionStatus({
  required String merchantTransactionId,
  required String merchantId,
  required String clientId,
  required String clientSecret,
  required String clientApiKey,
}) async {
  String message =
      "$merchantTransactionId,$merchantId,$clientId,$clientApiKey";

  String signature = Generator.generateSignatureOrToken(
    message,
    clientSecret,
  );
  final requestBody = {
    "merchantTxnId": merchantTransactionId,
    "merchantId": merchantId,
  };
  try {
    final request = await _dioService.postRequest(
      endpoint: ApiConstants.TRANSACTION_URL,
      data: requestBody,
      Options: Options(
        headers: {
          "Signature": signature,
          "Client-Id": clientId,
          "Client-API-Key": clientApiKey,
        },
      ),
    );

    return request.fold((failure) => Left(failure), (responseData) async {
      final Map<String, dynamic> json = responseData;
      final transactionStatusResponse = TransactionStatusResponse.fromJson(
        json,
      );
      return Right(
        transactionStatusResponse,
      ); // or parse actual value from responseData
    });
  } catch (e) {
    print("Exception occurred: $e");
    return Left(Failure("Something went wrong"));
  }
}