getTransactionStatus method

Future<APIResponse?> getTransactionStatus({
  1. required String inputQueryReference,
  2. required String inputServiceProviderCode,
  3. required String inputThirdPartyConversationID,
  4. String inputCountry = "TZN",
  5. String? sessionId,
})

Get transaction status

Implementation

Future<APIResponse?> getTransactionStatus(
    {required String inputQueryReference,
    required String inputServiceProviderCode,
    required String inputThirdPartyConversationID,
    String inputCountry = "TZN",
    String? sessionId}) async {
  final sessionID = await getSession(sessionId: sessionId);
  apiContext = APIContext(headers: {}, parameters: {})
    ..setApiKey(sessionID!)
    ..setPublicKey(publicKey)
    ..setSSL(true)
    ..setMethodType(APIMethodType.GET)
    ..setAddress("openapi.m-pesa.com")
    ..setPort(443)
    ..setPath("/${env.name}/ipg/v2/${market.name}/queryTransactionStatus/");

  apiContext.addParameter("input_QueryReference", inputQueryReference);
  apiContext.addParameter(
      "input_ServiceProviderCode", inputServiceProviderCode);
  apiContext.addParameter(
      "input_ThirdPartyConversationID", inputThirdPartyConversationID);
  apiContext.addParameter("input_Country", inputCountry);

  apiContext.addHeader("Origin", "*");
  req = APIRequest(apiContext);

  /// SessionID can take up to 30 seconds to become 'live' in the system and will be invalid until it is
  await Future.delayed(const Duration(seconds: 1)); //30
  try {
    response = await req.execute();
    return response;
  } on DioError catch (e) {
    throw Exception(e.message);
  }
}