Exemple #1
0
        public static async Task <Tuple <getHireRefcodeResponse, ErrorModel> > GetHireRefcode(GetHireRefcodeRequest getHireRefcodeRequest)
        {
            using (HttpClientHelper client = new HttpClientHelper())
            {
                getHireRefcodeResponse hireDetails = new getHireRefcodeResponse();
                ErrorModel             errorModel  = null;

                await client.ProcessClientRequestAsync <getHireRefcodeResponse>(GigUrl.GetHireRefcodeBuses, HttpMethod.Post, getHireRefcodeRequest,
                                                                                success =>
                {
                    if (success != null)
                    {
                        hireDetails = success;
                    }
                    else
                    {
                    }
                },
                                                                                error =>
                {
                    errorModel = error;
                }
                                                                                );

                return(new Tuple <getHireRefcodeResponse, ErrorModel>(hireDetails, errorModel));
            }
        }
        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")
            });
        }