performTransaction method

Future<PaymentResponseModel?> performTransaction(
  1. RequestModel requestModel,
  2. String msisdn,
  3. String pin,
  4. String tokenId,
  5. BuildContext context,
)

Implementation

Future<PaymentResponseModel?> performTransaction(RequestModel requestModel,
    String msisdn, String pin, String tokenId, BuildContext context) async {
  try {
    String authToken =
        "Basic ${base64.encode(utf8.encode("${requestModel.user.toString()}:${requestModel.password.toString()}"))}";
    String url = ApiConstants.getSelectedBaseUrl() + ApiConstants.PAYMENT;

    Map<String, String> data = new Map();
    data["RefId"] = requestModel.refId.toString();
    data["Amount"] = requestModel.amount.toString();
    data["MerchantCode"] = requestModel.merchantCode.toString();
    data["Msisdn"] = msisdn;
    data["pin"] = pin;
    data["TokenId"] = tokenId;

    Map<String, String> headers = new Map();
    headers["Authorization"] = authToken;
    headers["Module"] = requestModel.module.toString();
    headers["Content-Type"] = "application/json;charset=UTF-8";

    var response =
        await http.post(Uri.parse(url), body: jsonEncode(data), headers: headers);

    if (response.statusCode == 401) {
      Utils.showSnackbar(context, "Unauthorized");
      return null;
    } else if (response.body == null) {
      Utils.showSnackbar(context, "Something Went Wrong");
      return null;
    } else {
      PaymentResponseModel model =
          PaymentResponseModel.fromJson(json.decode(response.body));
      return model;
    }
  } catch (ex) {
    print("error : ${ex.toString()}");
  }
}