sendRequest method

Future<String> sendRequest(
  1. String connect,
  2. String mkey,
  3. int amount,
  4. String phone,
  5. String fname,
  6. String lname,
  7. String email,
  8. String success,
  9. String checkout,
)

Implementation

Future<String> sendRequest(String connect,
    String mkey, int amount, String phone,
    String fname, String lname, String email,
    String success, String checkout) async {

  Map jsonData = {
    "service_type": "Transaction",
    "service_payload": {
      "request_application": "Payaza",
      "request_class": "UseCheckoutRequest",
      "application_module": "USER_MODULE",
      "application_version": "1.0.0",
      "request_channel": "CUSTOMER_PORTAL",
      "connection_mode": connect, // Live, Test
      "currency_code": "NGN",
      "merchant_key": mkey,
      "checkout_amount": amount,
      "email_address": email,
      "first_name": fname,
      "last_name": lname,
      "phone_number": phone,
      "transaction_reference": "your_reference",
      "device_id": "d520c7a8-421b-4563-b955-f5abc56b97ec",
      "device_name": "Chrome 103",
      "device_os": "Windows 10",
      "request_channel_type": "API_CLIENT"
    }
  };

  HttpClient httpClient = new HttpClient();
  HttpClientRequest request = await httpClient.postUrl(Uri.parse(url));
  request.headers.set('content-type', 'application/json');
  request.add(utf8.encode(json.encode(jsonData)));
  HttpClientResponse response = await request.close();

  // todo - you should check the response.statusCode
  String reply = await response.transform(utf8.decoder).join();

  print(reply.toString());

  httpClient.close();
  Map <String, dynamic> map = json.decode(reply.toString());

  if(map["response_code"] != 200){
    var snackBar = SnackBar(content: Text(map["response_message"].toString()));
    ScaffoldMessenger.of(context).showSnackBar(snackBar);
    Navigator.of(context).pop();
  }

  Map <String, dynamic> data = map["response_content"];
  Map <String, dynamic> customer = map["response_content"]["customer"];
  Map <String, dynamic> business = map["response_content"]["business"];

  String transactioRef = data["transaction_reference"];

  //send user info to custom user class
  UserData user = UserData();
  user.setLastName = customer["last_name"];
  user.setFirstName = customer["first_name"];
  user.setEmail = customer["email_address"];

  email = user.getEmail;
  avatar = business["avatar"];
  vendor = business["name"];

  // print(user.getEmail);
  // print(user.getFirstName);
  // print(user.getLastName);

  //second request body
  Map account = {
    "service_type": "Account",
    "service_payload": {
      "request_application": "Payaza",
      "request_class": "FetchDynamicVirtualAccountRequest",
      "application_module": "USER_MODULE",
      "application_version": "1.0.0",
      "request_channel": "CUSTOMER_PORTAL",
      "connection_mode": connect,
      "transaction_reference": "${transactioRef.toString()}",
      "device_id": "d520c7a8-421b-4563-b955-f5abc56b97ec",
      "device_name": "Chrome 103",
      "device_os": "Windows 10",
      "request_channel_type": "API_CLIENT"
    }
  };
  //invoke account number method
  getAccountDetails(transactioRef.toString(),
      account, connect, email, success, checkout);
  // print(data["transaction_reference"]);
  // print(customer["email_address"]);
  return reply;
}