reversal method

Future<APIResponse?> reversal({
  1. required double inputReversalAmount,
  2. required String inputServiceProviderCode,
  3. required String inputThirdPartyConversationID,
  4. required String inputTransactionID,
  5. String inputCountry = "TZN",
  6. String? sessionId,
})

Transaction reversal

Implementation

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

  apiContext.addParameter("input_ReversalAmount", inputReversalAmount);
  apiContext.addParameter("input_Country", inputCountry);
  apiContext.addParameter(
      "input_ServiceProviderCode", inputServiceProviderCode);
  apiContext.addParameter(
      "input_ThirdPartyConversationID", inputThirdPartyConversationID);
  apiContext.addParameter("input_TransactionID", inputTransactionID);

  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);
  }
}