b2c method

Future<APIResponse?> b2c({
  1. required double inputAmount,
  2. required String inputCustomerMSISDN,
  3. String inputCountry = "TZN",
  4. String inputCurrency = "TZS",
  5. required String inputServiceProviderCode,
  6. required String inputThirdPartyConversationID,
  7. required String inputTransactionReference,
  8. required String inputPaymentItemsDesc,
  9. String? sessionId,
})

Business to customer

Implementation

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

  apiContext.addParameter("input_Amount", inputAmount);
  apiContext.addParameter("input_Country", inputCountry);
  apiContext.addParameter("input_Currency", inputCurrency);
  apiContext.addParameter("input_CustomerMSISDN", inputCustomerMSISDN);
  apiContext.addParameter(
      "input_ServiceProviderCode", inputServiceProviderCode);
  apiContext.addParameter(
      "input_ThirdPartyConversationID", inputThirdPartyConversationID);
  apiContext.addParameter(
      "input_TransactionReference", inputTransactionReference);
  apiContext.addParameter("input_PaymentItemsDesc", inputPaymentItemsDesc);
  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);
  }
}