Ejemplo n.º 1
0
        public static async Task <Tuple <getHireRefcodeResponse, ErrorModel> > GetHireRefcodeReturn(GetHireRefcodeRequestReturn 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> PostHireBookingReturn(GetHireRefcodeRequestReturn hireRequest)
        {
            var response = await Logical.GetHireRefcodeReturn(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 != null && hireRequest.PaymentMethod.Equals("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;

                    var testOrLiveSecret = ConfigurationManager.AppSettings["PayStackSecret"];
                    api = new PayStackApi(testOrLiveSecret);
                }
                catch (Exception ex)
                {
                    return(new JsonResult {
                        Data = new Tuple <String, String>("failed", ex.Message)
                    });
                }


                //Tuple<String, String> returnObject = new Tuple<string, string>("", "");

                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)
                    });
                }
            }
            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
                });
            }


            return(new JsonResult {
                Data = new Tuple <String, String>("failed", "Server error")
            });
        }