c2b method

Future<APIResponse?> c2b({
  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 inputPurchasedItemsDesc,
  9. String? sessionId,
})

Customer to business

Implementation

Future<APIResponse?> c2b(
    {required double inputAmount,
    required String inputCustomerMSISDN,
    String inputCountry = "TZN",
    String inputCurrency = "TZS",
    required String inputServiceProviderCode,
    required String inputThirdPartyConversationID,
    required String inputTransactionReference,
    required String inputPurchasedItemsDesc,
    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}/c2bPayment/singleStage/");

  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_PurchasedItemsDesc", inputPurchasedItemsDesc);
  req = APIRequest(apiContext);
  apiContext.addHeader("Origin", "*");
  await Future.delayed(const Duration(seconds: 1));
  try {
    response = await req.execute();
    return response;
  } on DioError catch (e) {
    throw Exception(e.response?.data);
  }
}