public async Task <JsonResult> PostHireBooking(GetHireRefcodeRequest hireRequest) { var response = await Logical.GetHireRefcode(hireRequest); IPayStackApi api = new PayStackApi(""); TransactionInitializeRequest request = new TransactionInitializeRequest(); Session["HireResponse_"] = response.Item1.Object; Session["HireRequest"] = hireRequest; //HireRefCodeReturn call is successful and payment method is paystack if (response.Item1.Code == "200" && hireRequest.PaymentMethod == "5") { try { request.Email = hireRequest.Email; request.AmountInKobo = Convert.ToInt32(hireRequest.Amount) * 100; // request.AmountInKobo = (int)Session["roundTripHire"] == 0 ? request.AmountInKobo : request.AmountInKobo * 2; request.CallbackUrl = ConfigurationManager.AppSettings["PaystackResponse"]; request.MetadataObject["cancel_action"] = ConfigurationManager.AppSettings["PaystackResponse"]; request.Reference = response.Item1.Object.RefCode; request.SubAccount = ConfigurationManager.AppSettings["PaystackSubAccount"] ?? ""; var testOrLiveSecret = ConfigurationManager.AppSettings["PayStackSecret"]; api = new PayStackApi(testOrLiveSecret); try { var payStackResponse = api.Transactions.Initialize(request); if (payStackResponse.Status) { var PaystackDetails = new ProcessPayStackPayment { amount = (int)request.AmountInKobo, RefCode = request.Reference, PayStackReference = payStackResponse.Data.Reference, email = request.Email }; Session["PaystackHireDetails"] = PaystackDetails; Tuple <String, String, getHireRefcodeResponse> returnObject = new Tuple <string, string, getHireRefcodeResponse>(payStackResponse.Data.AuthorizationUrl, "", response.Item1); return(new JsonResult { Data = returnObject }); } else { Tuple <String, String> returnObject = new Tuple <string, string>(String.Empty, "failed"); return(new JsonResult { Data = returnObject }); } } catch (Exception ex) { Logical.WriteToLog(ex.Message); return(new JsonResult { Data = new Tuple <String, String>("failed", ex.Message) }); } } catch (Exception ex) { return(new JsonResult { Data = new Tuple <String, String>("failed", ex.Message) }); } //Tuple<String, String> returnObject = new Tuple<string, string>("", ""); } else if (hireRequest.PaymentMethod == "12") { var buttonId = "BankTransfer"; Session["PaymentGatewayType"] = 12; var returnUrl = "/Pages/BookOnHold?refCode=" + response.Item1.Object.RefCode + "&buttonId=" + buttonId; return(new JsonResult { Data = returnUrl }); } else if (!String.IsNullOrEmpty(response.Item1.Code) && response.Item1.Code != "200") { return(new JsonResult { Data = new Tuple <String, String>("failed", response.Item1.ShortDescription) }); } return(new JsonResult { Data = new Tuple <String, String>("failed", "Server error") }); }