sendRequest method
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;
}