bankPayment static method

Future<APIResponse> bankPayment({
  1. required String code,
  2. required String accountNumber,
  3. required PaymentInfo paymentInfo,
})

Implementation

static Future<APIResponse> bankPayment({
  required String code,
  required String accountNumber,
  required PaymentInfo paymentInfo,
}) async {
  APIResponse apiResponse;

  //Preparing request payload
  final Map<String, dynamic> formDataMap = {
    "email": paymentInfo.email,
    "amount": paymentInfo.amount,
    "currency": paymentInfo.currency,
    "metadata": paymentInfo.metadata,
    "reference": paymentInfo.reference,
    "bank": {
      "code": code,
      "account_number": accountNumber,
    },
  };

  try {
    var response = await dio.post(
      APIs.chargeUrl,
      data: formDataMap,
      options: Options(
        headers: {
          'Content-Type': 'application/json',
          'Authorization': 'Bearer ${paymentInfo.secretKey}',
        },
      ),
    );

    if (response.statusCode == 200) {
      //format the response data for system to continue operating
      apiResponse = APIResponse.fromObject(response.data);
    } else {
      var errorMessage = "Request Failed. Please try again later";

      try {
        //alert the user with the message from the server
        if (response.data["data"] != null) {
          errorMessage = response.data["data"]["message"];
        } else {
          errorMessage = response.data["message"];
        }
      } catch (error) {
        if (kDebugMode) {
          print("Error Data Getting Failed:: $error");
        }
      }

      throw errorMessage;
    }
  } catch (error) {
    DioError dioError = error as DioError;
    var errorMessage = "Request Failed. Please try again later";

    try {
      //alert the user with the message from the server
      if (dioError.response?.data["data"] != null) {
        errorMessage = dioError.response?.data["data"]["message"];
      } else {
        errorMessage = dioError.response?.data["message"];
      }
    } catch (error) {
      if (kDebugMode) {
        print("Error Data Getting Failed:: $error");
      }
    }

    throw errorMessage;
  }

  return apiResponse;
}