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