/// <summary> /// Builds the view data for NVP method. /// </summary> /// <param name="gatewayApiRequest">Gateway API request.</param> /// <param name="response">Response.</param> protected void buildViewDataNVP(GatewayApiRequest gatewayApiRequest, string response) { ViewBag.Operation = gatewayApiRequest.ApiOperation; ViewBag.Method = gatewayApiRequest.ApiMethod; ViewBag.RequestUrl = gatewayApiRequest.RequestUrl; StringBuilder sb = new StringBuilder(); //remove credentials from parameters before display gatewayApiRequest.NVPParameters.Remove("apiUsername"); gatewayApiRequest.NVPParameters.Remove("apiPassword"); foreach (var param in gatewayApiRequest.NVPParameters) { sb.Append(sb.Length > 0 ? ", " : ""); sb.AppendFormat("{0}={1}", param.Key, param.Value); } ViewBag.Payload = sb.ToString(); //split result and add one information per line sb = new StringBuilder(); foreach (var param in response.Split('&')) { sb.AppendLine(param); } ViewBag.Response = sb.ToString(); }
public ActionResult ShowMasterpass() { // Logger.LogInformation("Payment controller ShowMasterpass action"); ViewBag.JavascriptSessionUrl = getSessionJsUrl(GatewayApiConfig); //documentation links ViewBag.MasterpassCreateSession = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/apiDocumentation/rest-json/version/latest/operation/Session%3a%20Create%20Session.html"; ViewBag.MasterpassUpdateSession = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/apiDocumentation/rest-json/version/latest/operation/Session%3a%20Update%20Session.html"; ViewBag.MasterpassOpenWallet = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/apiDocumentation/rest-json/version/latest/operation/Wallet%3a%20Open%20Wallet.html"; ViewBag.MasterpassJSLibrary = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/integrationGuidelines/supportedFeatures/pickPaymentMethod/masterPassOnline.html"; ViewBag.MasterpassUpdateSessionFromWallet = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/apiDocumentation/rest-json/version/latest/operation/Wallet%3a%20Update%20Session%20From%20Wallet.html"; ViewBag.MasterpassPay = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/apiDocumentation/rest-json/version/latest/operation/Transaction%3a%20%20Pay.html"; ViewBag.MasterpassAuthorize = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/apiDocumentation/rest-json/version/latest/operation/Transaction%3a%20%20Authorize.html"; ViewBag.MasterpassFullDocumentation = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/integrationGuidelines/supportedFeatures/pickPaymentMethod/masterPassOnline.html"; string ORIGIN_RETURN_PAGE = "/masterpassResponse"; string MASTERPASS_ONLINE = "MASTERPASS_ONLINE"; GatewayApiRequest gatewayApiRequest = GatewayApiRequest.createSampleApiRequest(GatewayApiConfig); //build return URL // string returnURL = Microsoft.AspNetCore.Http.Extensions.UriHelper.BuildAbsolute(Request.Scheme, Request.Host, Request.PathBase, ORIGIN_RETURN_PAGE); // gatewayApiRequest.MasterpassOriginUrl = returnURL; gatewayApiRequest.MasterpassOnline = MASTERPASS_ONLINE; return(View("PayWithMasterpass", gatewayApiRequest)); }
public ActionResult ShowCapture() { // Logger.LogInformation("Payment controller ShowCapture action"); GatewayApiRequest gatewayApiRequest = GatewayApiRequest.createSampleApiRequest(GatewayApiConfig, "CAPTURE"); return(View("Capture", gatewayApiRequest)); }
public ActionResult ShowRetrieveOrder() { // Logger.LogInformation("Payment controller ShowRetrieveTransaction action"); GatewayApiRequest gatewayApiRequest = GatewayApiRequest.createSampleApiRequest(GatewayApiConfig, "RETRIEVE_ORDER"); return(View("RetrieveOrder", gatewayApiRequest)); }
public ActionResult ShowVoid() { // Logger.LogInformation("Payment controller ShowVoid action"); GatewayApiRequest gatewayApiRequest = GatewayApiRequest.createSampleApiRequest(GatewayApiConfig, "VOID"); return(View("Void", gatewayApiRequest)); }
public ActionResult ProcessPaymentWithUnionPay(GatewayApiRequest gatewayApiRequest) { //enrich params with Union Pay information gatewayApiRequest.SourceType = "UNION_PAY"; gatewayApiRequest.BrowserPaymentOperation = "AUTHORIZE"; //get redirect Union Pay page return(browserPayment(gatewayApiRequest)); }
public ActionResult ProcessPaymentWithPayPal(GatewayApiRequest gatewayApiRequest) { //enrich params with paypal information gatewayApiRequest.SourceType = "PAYPAL"; gatewayApiRequest.BrowserPaymentOperation = "PAY"; gatewayApiRequest.BrowserPaymentPaymentConfirmation = "CONFIRM_AT_PROVIDER"; //get redirect paypal page return(browserPayment(gatewayApiRequest)); }
public ActionResult ShowPayThroughNVP() { // Logger.LogInformation("Payment controller ShowPayThroughNVP action"); ViewBag.JavascriptSessionUrl = getSessionJsUrl(GatewayApiConfig); ViewBag.TestAndGoLiveUrl = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/integrationGuidelines/supportedFeatures/testAndGoLive.html"; GatewayApiRequest gatewayApiRequest = GatewayApiRequest.createSampleApiRequest(GatewayApiConfig); return(View("PayThroughNVP", gatewayApiRequest)); }
public ActionResult ShowPayWithUnionPaySecurePay() { // Logger.LogInformation("Payment controller ShowPayWithUnionPal action"); ViewBag.JavascriptSessionUrl = getSessionJsUrl(GatewayApiConfig); ViewBag.DocumentationUnionPay = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/integrationGuidelines/supportedFeatures/pickPaymentMethod/browserPayments/testDetails.html#x_SecurePayTest"; GatewayApiRequest gatewayApiRequest = GatewayApiRequest.createSampleApiRequest(GatewayApiConfig); return(View("PayWithUnionPay", gatewayApiRequest)); }
public ActionResult ShowAuthorize() { // Logger.LogInformation("Payment controller ShowAuthorize action"); GatewayApiRequest gatewayApiRequest = GatewayApiRequest.createSampleApiRequest(GatewayApiConfig); ViewBag.JavascriptSessionUrl = getSessionJsUrl(GatewayApiConfig); ViewBag.TestAndGoLiveUrl = getTestAndGoLiveDocumentationURL(); return(View("Authorize", gatewayApiRequest)); }
public ActionResult ShowPayWithToken() { // Logger.LogInformation("Payment controller ShowPayWithToken action"); GatewayApiRequest gatewayApiRequest = GatewayApiRequest.createSampleApiRequest(GatewayApiConfig); ViewBag.JavascriptSessionUrl = getSessionJsUrl(GatewayApiConfig); ViewBag.TestAndGoLiveUrl = getTestAndGoLiveDocumentationURL(); ViewBag.ApiDocumentation = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/integrationGuidelines/supportedFeatures/pickAdditionalFunctionality/tokenization/tokenization.html"; return(View("PayWithToken", gatewayApiRequest)); }
public ActionResult HostedCheckoutReceipt(string orderId, string result, string sessionId) { // Logger.LogInformation($"PaymentApiController HostedCheckoutReceipt action orderId {orderId} result {result} sessionId {sessionId}"); if (result == "SUCCESS") { GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(GatewayApiConfig) { ApiOperation = "RETRIEVE_ORDER", OrderId = orderId, ApiMethod = GatewayApiClient.GET }; gatewayApiRequest.buildOrderUrl(); string response = GatewayApiClient.SendTransaction(gatewayApiRequest); // Logger.LogInformation($"Hosted checkout retrieve order response {response}"); //parse response TransactionResponseModel transactionResponseModel = null; try { transactionResponseModel = TransactionResponseModel.toTransactionResponseModel(response); } catch (Exception e) { // Logger.LogError($"Hosted Checkout Receipt error : {JsonConvert.SerializeObject(e)}"); return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = e.InnerException != null ? e.InnerException.StackTrace : e.StackTrace, Message = e.Message })); } return(View(ViewList["Receipt"], transactionResponseModel)); } else { // Logger.LogError($"The payment was unsuccessful {result}"); return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = "Payment was unsuccessful", Message = "There was a problem completing your transaction." })); } }
public ActionResult ProcessPayThroughNVP(GatewayApiRequest gatewayApiRequest) { // Logger.LogInformation($"PaymentApiController Process action gatewayApiRequest {JsonConvert.SerializeObject(gatewayApiRequest)}"); gatewayApiRequest.GatewayApiConfig = GatewayApiConfig; gatewayApiRequest.ApiMethod = NVPApiClient.POST; gatewayApiRequest.ContentType = NVPApiClient.CONTENT_TYPE; string response = NVPApiClient.SendTransaction(gatewayApiRequest); buildViewDataNVP(gatewayApiRequest, response); return(View(ViewList["ApiResponse"])); }
public ActionResult ProcessHostedSession(int?ReservationId, GatewayApiRequest gatewayApiRequest) { if (ReservationId == null) { return(HttpNotFound()); } // Logger.LogInformation($"PaymentApiController ProcessHostedSession action gatewayApiRequest {JsonConvert.SerializeObject(gatewayApiRequest)}"); gatewayApiRequest.GatewayApiConfig = GatewayApiConfig; gatewayApiRequest.buildRequestUrl(); gatewayApiRequest.buildPayload(); string response = GatewayApiClient.SendTransaction(gatewayApiRequest); buildViewData(gatewayApiRequest, response, (int)ReservationId); return(View(ViewList["ApiResponse"])); }
public ActionResult browserPaymentReceipt(String transactionId, String orderId) { //get order id from page parameter //create a gateway parameters request to retrieve the transaction result GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(); gatewayApiRequest.GatewayApiConfig = GatewayApiConfig; gatewayApiRequest.ApiMethod = GatewayApiClient.GET; gatewayApiRequest.ApiOperation = "RETRIEVE_TRANSACTION"; gatewayApiRequest.OrderId = orderId; gatewayApiRequest.buildOrderUrl(); gatewayApiRequest.buildPayload(); string response = GatewayApiClient.SendTransaction(gatewayApiRequest); //validate transaction response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } //parse response to model TransactionResponseModel model = null; try { model = TransactionResponseModel.toTransactionResponseModel(response); } catch (Exception e) { // Logger.LogError($"browserPaymentReceipt error : {JsonConvert.SerializeObject(e)}"); return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = e.InnerException != null ? e.InnerException.StackTrace : e.StackTrace, Message = e.Message })); } return(View(ViewList["Receipt"], model)); }
public ActionResult ShowPayWith3ds() { // Logger.LogInformation("Payment controller ShowPayWith3ds action"); ViewBag.JavascriptSessionUrl = getSessionJsUrl(GatewayApiConfig); //documentation links ViewBag.DocumentationCreateSessionUrl = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/apiDocumentation/rest-json/version/latest/operation/Session%3a%20Create%20Checkout%20Session.html"; ViewBag.Documentation3dsEnrollmentUrl = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/apiDocumentation/rest-json/version/latest/operation/3DS%3a%20%20Check%203DS%20Enrollment.html"; ViewBag.Documentation3dsProcessResultUrl = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/apiDocumentation/rest-json/version/latest/operation/3DS%3a%20Process%20ACS%20Result.html"; ViewBag.DocumentationTransactionPayUrl = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/apiDocumentation/rest-json/version/latest/operation/Transaction%3a%20%20Pay.html"; ViewBag.DocumentationTransactionAuthorizeUrl = $@"{GatewayApiConfig.GatewayUrl}/api/documentation/apiDocumentation/rest-json/version/latest/operation/Transaction%3a%20%20Authorize.html"; GatewayApiRequest gatewayApiRequest = GatewayApiRequest.createSampleApiRequest(GatewayApiConfig); return(View("PayWith3ds", gatewayApiRequest)); }
public ActionResult Pay(int id) { // Logger.LogInformation("Payment controller ShowPay action"); var reservation = unitOfWork.ReservationRepository.GetByID(id); if (reservation == null) { return(HttpNotFound()); } GatewayApiRequest gatewayApiRequest = GatewayApiRequest.createSampleApiRequest(GatewayApiConfig); ViewBag.JavascriptSessionUrl = getSessionJsUrl(GatewayApiConfig); ViewBag.TestAndGoLiveUrl = getTestAndGoLiveDocumentationURL(); ViewBag.Reservation = reservation; ViewBag.Currency = systemHelper.Currency; return(View("Payment", gatewayApiRequest)); }
public ActionResult ShowHostedCheckout() { // Logger.LogInformation("Payment controller HostedCheckout action"); GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(GatewayApiConfig); gatewayApiRequest.ApiOperation = "CREATE_CHECKOUT_SESSION"; gatewayApiRequest.OrderId = IdUtils.generateSampleId(); gatewayApiRequest.OrderCurrency = GatewayApiConfig.Currency; gatewayApiRequest.buildSessionRequestUrl(); gatewayApiRequest.buildPayload(); gatewayApiRequest.ApiMethod = GatewayApiClient.POST; try { String response = GatewayApiClient.SendTransaction(gatewayApiRequest); // Logger.LogInformation("HostedCheckout response -- " + response); CheckoutSessionModel checkoutSessionModel = CheckoutSessionModel.toCheckoutSessionModel(response); ViewBag.CheckoutJsUrl = $@"{GatewayApiConfig.GatewayUrl}/checkout/version/{GatewayApiConfig.Version}/checkout.js"; ViewBag.MerchantId = GatewayApiConfig.MerchantId; ViewBag.OrderId = gatewayApiRequest.OrderId; ViewBag.CheckoutSession = checkoutSessionModel; ViewBag.Currency = GatewayApiConfig.Currency; } catch (Exception e) { // Logger.LogError($"Hosted Checkout error : {JsonConvert.SerializeObject(e)}"); return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = e.InnerException != null ? e.InnerException.StackTrace : e.StackTrace, Message = e.Message })); } return(View("HostedCheckout")); }
/// <summary> /// Builds the default view data /// </summary> /// <param name="gatewayApiRequest">Gateway API request.</param> /// <param name="response">Response.</param> protected void buildViewData(GatewayApiRequest gatewayApiRequest, string response, int ReservationId) { JObject jObject = JsonHelper.getJObject(response); string result = jObject["result"].ToString(); string orderId = "", transId = ""; if (result == "SUCCESS") { orderId = jObject["order"]["id"].ToString(); transId = jObject["transaction"]["id"].ToString(); var reservation = unitOfWork.ReservationRepository.GetByID(ReservationId); if (orderId == reservation.OrderId) { reservation.Paied = true; unitOfWork.ReservationRepository.Update(reservation); unitOfWork.Save(); ViewBag.PaymentResult = "<h3>Success</h3><h5>Your Payment Received Successfuly</h5><h5>Your Booking Order : " + orderId + " </h5>"; NotificationHelper.NotifySuccessPayment(reservation); return; } } ViewBag.PaymentResult = "<h3>Error</h3><h5>Your Payment Not Received Please try later</h5>"; }
public ActionResult Process(GatewayApiRequest gatewayApiRequest) { // Logger.LogInformation($"PaymentApiController Process action gatewayApiRequest {JsonConvert.SerializeObject(gatewayApiRequest)}"); gatewayApiRequest.GatewayApiConfig = GatewayApiConfig; //retrieve order doesnt require transaction information on the url if ("RETRIEVE_ORDER" == gatewayApiRequest.ApiOperation) { gatewayApiRequest.buildOrderUrl(); } else { gatewayApiRequest.buildRequestUrl(); } gatewayApiRequest.buildPayload(); string response = GatewayApiClient.SendTransaction(gatewayApiRequest); buildViewData(gatewayApiRequest, response, 0); return(View(ViewList["ApiResponse"])); }
public ActionResult tokenize(GatewayApiRequest gatewayApiRequest) { // Logger.LogInformation($"PaymentApiController ProcessHostedSession action gatewayApiRequest {JsonConvert.SerializeObject(gatewayApiRequest)}"); //update session with order details GatewayApiRequest gatewayUpdateSessionRequest = new GatewayApiRequest(GatewayApiConfig); gatewayUpdateSessionRequest.ApiMethod = GatewayApiClient.PUT; //update the url appending session id gatewayUpdateSessionRequest.buildSessionRequestUrl(gatewayApiRequest.SessionId); gatewayUpdateSessionRequest.OrderId = gatewayApiRequest.OrderId; gatewayUpdateSessionRequest.OrderCurrency = gatewayApiRequest.OrderCurrency; gatewayUpdateSessionRequest.OrderAmount = gatewayApiRequest.OrderAmount; //build payload with order info gatewayUpdateSessionRequest.buildPayload(); String response = GatewayApiClient.SendTransaction(gatewayUpdateSessionRequest); // Logger.LogInformation($"Tokenize updated session {response}"); //validate transaction response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } //generate token GatewayApiRequest gatewayGenerateTokenRequest = new GatewayApiRequest(GatewayApiConfig); gatewayGenerateTokenRequest.SessionId = gatewayApiRequest.SessionId; gatewayGenerateTokenRequest.ApiMethod = GatewayApiClient.POST; gatewayGenerateTokenRequest.buildPayload(); gatewayGenerateTokenRequest.buildTokenUrl(); response = GatewayApiClient.SendTransaction(gatewayGenerateTokenRequest); //validate token response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } //convert json to model TokenResponse tokenResponse = TokenResponse.ToTokenResponse(response); //payment with token GatewayApiRequest gatewayGeneratePaymentRequest = new GatewayApiRequest(GatewayApiConfig); gatewayGeneratePaymentRequest.ApiOperation = "PAY"; gatewayGeneratePaymentRequest.ApiMethod = GatewayApiClient.PUT; gatewayGeneratePaymentRequest.Token = tokenResponse.Token; gatewayGeneratePaymentRequest.SessionId = gatewayApiRequest.SessionId; gatewayGeneratePaymentRequest.OrderId = gatewayApiRequest.OrderId; gatewayGeneratePaymentRequest.TransactionId = gatewayApiRequest.TransactionId; gatewayGeneratePaymentRequest.buildPayload(); gatewayGeneratePaymentRequest.buildRequestUrl(); response = GatewayApiClient.SendTransaction(gatewayGeneratePaymentRequest); buildViewData(gatewayGeneratePaymentRequest, response, 0); return(View(ViewList["ApiResponse"])); }
public ActionResult masterpassResponse(String oauth_token, String oauth_verifier, String checkoutId, String checkout_resource_url, String mpstatus) { String UPDATE_SESSION_FROM_WALLET = "UPDATE_SESSION_FROM_WALLET"; String WALLET_PROVIDER = "MASTERPASS_ONLINE"; //get session values String sessionId = getSessionValueAsString("sessionId"); String amount = getSessionValueAsString("amount"); String currency = getSessionValueAsString("currency"); String orderId = getSessionValueAsString("orderId"); //remove session values removeSessionValue("sessionId"); removeSessionValue("amount"); removeSessionValue("currency"); removeSessionValue("orderId"); // UPDATE_SESSION_FROM_WALLET - Retrieve payment details from wallet using session ID GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(GatewayApiConfig); gatewayApiRequest.ApiMethod = GatewayApiClient.POST; gatewayApiRequest.ApiOperation = UPDATE_SESSION_FROM_WALLET; gatewayApiRequest.MasterpassOnline = WALLET_PROVIDER; gatewayApiRequest.MasterpassOauthToken = oauth_token; gatewayApiRequest.MasterpassOauthVerifier = oauth_verifier; gatewayApiRequest.MasterpassCheckoutUrl = checkout_resource_url; gatewayApiRequest.buildSessionRequestUrl(sessionId); //build json gatewayApiRequest.buildPayload(); string response = GatewayApiClient.SendTransaction(gatewayApiRequest); // Logger.LogInformation($"Masterpass update session : {response}"); //validate transaction response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } // Make a payment using the session // Construct API request GatewayApiRequest gatewayPayApiRequest = new GatewayApiRequest(GatewayApiConfig); gatewayPayApiRequest.ApiMethod = GatewayApiClient.PUT; gatewayPayApiRequest.ApiOperation = "PAY"; gatewayPayApiRequest.SessionId = sessionId; //order info gatewayPayApiRequest.OrderAmount = amount; gatewayPayApiRequest.OrderId = orderId; gatewayPayApiRequest.OrderCurrency = currency; gatewayPayApiRequest.TransactionId = IdUtils.generateSampleId(); //build payload gatewayPayApiRequest.buildPayload(); gatewayPayApiRequest.buildRequestUrl(); response = GatewayApiClient.SendTransaction(gatewayPayApiRequest); // Logger.LogInformation($"Masterpass PAY operation : {response}"); //validate transaction response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } //parse response to default transaction response model TransactionResponseModel model = null; try { model = TransactionResponseModel.fromMasterpassResponseToTransactionResponseModel(response); } catch (Exception e) { // Logger.LogError($"MasterpassResponse error : {JsonConvert.SerializeObject(e)}"); return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = e.InnerException != null ? e.InnerException.StackTrace : e.StackTrace, Message = e.Message })); } return(View(ViewList["Receipt"], model)); }
public ActionResult ProcessMasterpass(GatewayApiRequest gatewayApiRequest) { // Logger.LogInformation($"PaymentApiController Process Master Pass action gatewayApiRequest {JsonConvert.SerializeObject(gatewayApiRequest)}"); String response = null; // Create session to use with OPEN_WALLET operation GatewayApiRequest gatewaySessionRequest = new GatewayApiRequest(GatewayApiConfig); gatewaySessionRequest.buildSessionRequestUrl(); gatewaySessionRequest.ApiMethod = GatewayApiClient.POST; response = GatewayApiClient.SendTransaction(gatewaySessionRequest); //validate transaction response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } //convert json to model CheckoutSessionModel checkoutSessionModel = CheckoutSessionModel.toCheckoutSessionModel(response); // Logger.LogInformation($"Masterpass hostedSession created {response}"); // Call UPDATE_SESSION to add order information to session //update http verb GatewayApiRequest gatewayUpdateSessionRequest = new GatewayApiRequest(GatewayApiConfig); gatewayUpdateSessionRequest.ApiMethod = GatewayApiClient.PUT; //update the url appending session id gatewayUpdateSessionRequest.buildSessionRequestUrl(checkoutSessionModel.Id); gatewayUpdateSessionRequest.OrderId = gatewayApiRequest.OrderId; gatewayUpdateSessionRequest.OrderCurrency = gatewayApiRequest.OrderCurrency; gatewayUpdateSessionRequest.OrderAmount = gatewayApiRequest.OrderAmount; //build payload with order info gatewayUpdateSessionRequest.buildPayload(); response = GatewayApiClient.SendTransaction(gatewayUpdateSessionRequest); // Logger.LogInformation($"Masterpass updated session {response}"); //validate transaction response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } // Call OPEN_WALLET to retrieve Masterpass configuration //It will use session URL GatewayApiRequest gatewayOpenWalletRequest = new GatewayApiRequest(GatewayApiConfig); gatewayOpenWalletRequest.buildSessionRequestUrl(checkoutSessionModel.Id); gatewayOpenWalletRequest.ApiMethod = GatewayApiClient.POST; gatewayOpenWalletRequest.MasterpassOnline = gatewayApiRequest.MasterpassOnline; gatewayOpenWalletRequest.MasterpassOriginUrl = gatewayApiRequest.MasterpassOriginUrl; gatewayOpenWalletRequest.OrderCurrency = gatewayApiRequest.OrderCurrency; gatewayOpenWalletRequest.OrderAmount = gatewayApiRequest.OrderAmount; gatewayOpenWalletRequest.buildPayload(); response = GatewayApiClient.SendTransaction(gatewayOpenWalletRequest); //validate transaction response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } //parse response to model MasterpassWalletResponse masterpassWalletResponse = null; try { masterpassWalletResponse = MasterpassWalletResponse.toMasterpassWalletResponse(response); } catch (Exception e) { // Logger.LogError($"ProcessMasterpass error : {JsonConvert.SerializeObject(e)}"); return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = e.InnerException != null ? e.InnerException.StackTrace : e.StackTrace, Message = e.Message })); } // Logger.LogInformation($"Masterpass wallet configuration {response}"); // Save this value in HttpSession to retrieve after returning from issuer authentication form setSessionValue("sessionId", checkoutSessionModel.Id); setSessionValue("amount", gatewayApiRequest.OrderAmount); setSessionValue("currency", gatewayApiRequest.OrderCurrency); setSessionValue("orderId", gatewayApiRequest.OrderId); //set values for view usage ViewBag.requestToken = masterpassWalletResponse.RequestToken; ViewBag.merchantCheckoutId = masterpassWalletResponse.MerchantCheckoutId; ViewBag.allowedCardTypes = masterpassWalletResponse.AllowedCardTypes; return(View(ViewList["MasterpassButton"])); }
/// <summary> /// Generic method used for redirec to Browsers payments url. /// </summary> /// <returns>The payment page.</returns> /// <param name="gatewayApiRequest">Gateway API request.</param> private ActionResult browserPayment(GatewayApiRequest gatewayApiRequest) { //cons string INITIATE_BROWSER_PAYMENT = "INITIATE_BROWSER_PAYMENT"; string callbackController = "/browserPaymentReceipt"; //build api request gatewayApiRequest.GatewayApiConfig = GatewayApiConfig; gatewayApiRequest.ApiOperation = INITIATE_BROWSER_PAYMENT; gatewayApiRequest.ApiMethod = GatewayApiClient.PUT; //Build Redirect url //Concating the transaction and order ids. It will be used to retrieve the payment result on callback // string returnURL = Microsoft.AspNetCore.Http.Extensions.UriHelper.BuildAbsolute(Request.Scheme, Request.Host, Request.PathBase, callbackController); //add query string to return url // returnURL = QueryHelpers.AddQueryString(returnURL, "transactionId", gatewayApiRequest.TransactionId); // returnURL = QueryHelpers.AddQueryString(returnURL, "orderId", gatewayApiRequest.OrderId); // gatewayApiRequest.ReturnUrl = returnURL; gatewayApiRequest.buildRequestUrl(); gatewayApiRequest.buildPayload(); // Logger.LogInformation($"PaymentApiController action gatewayApiRequest {JsonConvert.SerializeObject(gatewayApiRequest)}"); string response = GatewayApiClient.SendTransaction(gatewayApiRequest); //validate transaction response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } //parse response InitiateBrowserPaymentResponse initiateResponse = null; try { initiateResponse = InitiateBrowserPaymentResponse.toInitiateBrowserPaymentResponse(response); } catch (Exception e) { // Logger.LogError($"BrowserPayment error : {JsonConvert.SerializeObject(e)}"); return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = e.InnerException != null ? e.InnerException.StackTrace : e.StackTrace, Message = e.Message })); } //check result if ("SUCCESS" != initiateResponse.Result) { // Logger.LogInformation($"Browser controller action error response {response}"); return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = initiateResponse.Result, Message = "Browser Payment error." })); } //redirect to partner browser payment page return(Redirect(initiateResponse.RedirectUrl)); }
public ActionResult Process3dsAuthenticationResult() { String responseView = ViewList["ApiResponse"]; //cons String AUTHORIZE = "AUTHORIZE"; String PROCESS_ACS_RESULT = "PROCESS_ACS_RESULT"; //get secure / session information from session String secureId = getSessionValueAsString("secureId"); String sessionId = getSessionValueAsString("sessionId"); String amount = getSessionValueAsString("amount"); String currency = getSessionValueAsString("currency"); String orderId = getSessionValueAsString("orderId"); String transactionId = getSessionValueAsString("transactionId"); //remove values from session removeSessionValue("secureId"); removeSessionValue("sessionId"); removeSessionValue("amount"); removeSessionValue("currency"); removeSessionValue("orderId"); removeSessionValue("transactionId"); // Retrieve Payment Authentication Response (PaRes) from request String paRes = this.Request.Form["PaRes"]; //init aux variables String response = null; GatewayApiRequest gatewayApiRequest = null; // Process Access Control Server (ACS) result gatewayApiRequest = new GatewayApiRequest(); gatewayApiRequest.GatewayApiConfig = GatewayApiConfig; gatewayApiRequest.ApiMethod = GatewayApiClient.POST; gatewayApiRequest.PaymentAuthResponse = paRes; gatewayApiRequest.SecureId = secureId; gatewayApiRequest.ApiOperation = PROCESS_ACS_RESULT; gatewayApiRequest.buildPayload(); gatewayApiRequest.buildSecureIdRequestUrl(); response = GatewayApiClient.SendTransaction(gatewayApiRequest); //validate transaction response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } //parse response to domain SecureIdEnrollmentResponseModel model = null; try { model = SecureIdEnrollmentResponseModel.toSecureIdEnrollmentResponseModel(Request, response); // Logger.LogInformation($"SecureIdEnrollmentResponseModel {JsonConvert.SerializeObject(model)}"); } catch (Exception e) { // Logger.LogError($"Process3dsAuthenticationResult error : {JsonConvert.SerializeObject(e)}"); return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = e.InnerException != null ? e.InnerException.StackTrace : e.StackTrace, Message = e.Message })); } //create 'authorize' API request in case of SUCCESS response if (model.Status != null && "AUTHENTICATION_FAILED" != model.Status) { //build authorize request gatewayApiRequest = new GatewayApiRequest(); gatewayApiRequest.GatewayApiConfig = GatewayApiConfig; gatewayApiRequest.ApiMethod = GatewayApiClient.PUT; gatewayApiRequest.ApiOperation = AUTHORIZE; gatewayApiRequest.SessionId = sessionId; gatewayApiRequest.SecureId3D = secureId; gatewayApiRequest.OrderCurrency = currency; gatewayApiRequest.OrderAmount = amount; gatewayApiRequest.TransactionId = transactionId; gatewayApiRequest.OrderId = orderId; gatewayApiRequest.buildPayload(); gatewayApiRequest.buildRequestUrl(); //call api response = GatewayApiClient.SendTransaction(gatewayApiRequest); //build response view this.buildViewData(gatewayApiRequest, response, 0); } else { //return error view return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = model.Status, Message = "3DS Authentication failed." })); } return(View(responseView)); }
public ActionResult Check3dsEnrollment(GatewayApiRequest gatewayApiRequest) { // Logger.LogInformation($"PaymentApiController Check3dsEnrollment action SessionId {JsonConvert.SerializeObject(gatewayApiRequest)} gatewayApiRequest.SessionId {gatewayApiRequest.SessionId}"); gatewayApiRequest.GatewayApiConfig = GatewayApiConfig; // Retrieve session gatewayApiRequest.buildSessionRequestUrl(); gatewayApiRequest.ApiMethod = GatewayApiClient.GET; // Logger.LogInformation($"gatewayApiRequest {JsonConvert.SerializeObject(gatewayApiRequest)}"); string response = GatewayApiClient.SendTransaction(gatewayApiRequest); // Logger.LogInformation("Get session response -- " + response); //validate transaction response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } CheckoutSessionModel checkoutSessionModel = CheckoutSessionModel.toCheckoutSessionModel(response); // Logger.LogInformation($@"checkoutSession.Id {checkoutSessionModel.Id} gatewayApiRequest.SessionId {gatewayApiRequest.SessionId}"); string secureId = IdUtils.generateSampleId(); gatewayApiRequest.SecureId = secureId; gatewayApiRequest.buildSecureIdRequestUrl(); gatewayApiRequest.buildPayload(); gatewayApiRequest.ApiMethod = GatewayApiClient.PUT; //add values in session to use it after processing response setSessionValue("secureId", secureId); setSessionValue("sessionId", checkoutSessionModel.Id); setSessionValue("amount", gatewayApiRequest.OrderAmount); setSessionValue("currency", gatewayApiRequest.OrderCurrency); setSessionValue("orderId", gatewayApiRequest.OrderId); setSessionValue("transactionId", gatewayApiRequest.TransactionId); response = GatewayApiClient.SendTransaction(gatewayApiRequest); // Logger.LogInformation($"SecureId response {response}"); //validate transaction response if (JsonHelper.isErrorMessage(response)) { return(View("Error", ErrorViewModel.toErrorViewModel(getRequestId(), response))); } //parse response SecureIdEnrollmentResponseModel model = null; try { model = SecureIdEnrollmentResponseModel.toSecureIdEnrollmentResponseModel(Request, response); } catch (Exception e) { // Logger.LogError($"Check3dsEnrollment error : {JsonConvert.SerializeObject(e)}"); return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = e.InnerException != null ? e.InnerException.StackTrace : e.StackTrace, Message = e.Message })); } //check process result // Logger.LogInformation($"SecureIdEnrollmentResponseModel {JsonConvert.SerializeObject(model)}"); if (model.Status != "CARD_ENROLLED") { // Logger.LogError($"Check3dsEnrollment was unsuccessful, status {model.Status}"); return(View("Error", new ErrorViewModel { RequestId = getRequestId(), Cause = model.Status, Message = "Card not enrolled in 3DS." })); } return(View(ViewList["SecureIdPayerAuthenticationForm"], model)); }