public GatewayCheckoutResponse InitiateGatewayChechout(CheckoutRequest request, GatewayToken token)
        {
            GatewayCheckoutResponse gatewayResponse = null;

            try
            {
                var gatewayCheckoutRequest = _translatorService.GetGatewayCheckoutRequest(request);

                var url    = _httpContextService.Request.Url;
                var server = $"{url.Scheme}://{url.Authority}/";

                int requestid = _repository.SaveCheckoutRequest(request);

                if (requestid > 0)
                {
                    var randomKey = Guid.NewGuid().ToString("N");

                    var key = Md5Helper.GetMd5Hash(requestid + randomKey + randomKey + requestid);

                    var checkoutCompleteUrl = $"{server}{"checkoutresponse"}?id={requestid}&rk={randomKey}&k={key}";

                    gatewayCheckoutRequest.checkout_complete_url = checkoutCompleteUrl;

                    gatewayCheckoutRequest.order_reference_id = requestid.ToString() + "_" + request.orderid.ToString();

                    var baseUrl = ConfigurationManager.AppSettings["BaseURLWebAPIService"];

                    var response = _webApiClient.HTTPPostRequest(baseUrl, "checkouts", gatewayCheckoutRequest, token.token);

                    if (response == null)
                    {
                        _repository.UpdateCheckoutRequestStatus(request.id, Status.Failed);
                    }
                    else
                    {
                        if (response.StatusCode == HttpStatusCode.Created)
                        {
                            using (var streamReader = new StreamReader(response.GetResponseStream()))
                            {
                                var responseText = streamReader.ReadToEnd();
                                gatewayResponse = JsonConvert.DeserializeObject <GatewayCheckoutResponse>(responseText);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _repository.UpdateCheckoutRequestStatus(request.id, Status.Failed);
                throw ex;
            }

            return(gatewayResponse);
        }
示例#2
0
        public JsonResult InitiateCheckout(CheckoutRequest request)
        {
            CheckoutResponse response = null;

            var randomKey    = Guid.NewGuid().ToString("N");
            var privateKey   = ConfigurationManager.AppSettings["AppTestSecretKey"];
            var paymenttoken = "";
            var checkouturl  = "";
            var errorMsg     = "";

            //validations
            if (!request.type.Equals("sale"))
            {
                errorMsg = "Bad Request. Invalid Transaction Type.";
                response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "100", errorMsg);
                return(Json(response));
            }
            if (request.signature != Md5Helper.GetMd5Hash(request.randomkey + privateKey + request.orderid + request.invoice + request.amounttotal))
            {
                errorMsg = "Bad Request. Invalid Signature.";
                response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "100", errorMsg);
                return(Json(response));
            }

            //authentication
            GatewayToken token = null;

            try
            {
                token = _gatewayAuthenticationService.GetGatewayToken(request.username, request.password);
            }
            catch (Exception ex)
            {
                errorMsg = "Gateway authentication transaction failed. " + ex.Message;
                response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "101", errorMsg);
                return(Json(response));
            }

            if (token == null)
            {
                errorMsg = "Gateway authentication transaction failed.";
                response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "101", errorMsg);
                return(Json(response));
            }

            //checkout
            GatewayCheckoutResponse gatewayCheckoutResponse = null;

            try
            {
                gatewayCheckoutResponse = _gatewayChekoutService.InitiateGatewayChechout(request, token);
            }
            catch (Exception ex)
            {
                errorMsg = "Gateway checkout transaction failed. " + ex.Message;
                response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "102", errorMsg);
                return(Json(response));
            }

            if (gatewayCheckoutResponse == null)
            {
                errorMsg = "Gateway checkout transaction failed.";
                response = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "102", errorMsg);
                return(Json(response));
            }

            checkouturl = gatewayCheckoutResponse.checkout_url;
            response    = DoCheckoutResponse(randomKey, privateKey, paymenttoken, checkouturl, "", "");
            return(Json(response));
        }