public string AuthorizeTest(GridMPGSConfig mpgsConfig) { GatewayApiConfig config = new GatewayApiConfig(mpgsConfig); GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(config) { // SessionId = "" ,//checkOutDetails.CheckoutSession.Id, OrderId = GenerateOrderId(), //checkOutDetails.OrderId, TransactionId = GenerateOrderId(), //checkOutDetails.TransactionID, ApiOperation = MPGSAPIOperation.AUTHORIZE.ToString(), OrderAmount = "20", OrderCurrency = config.Currency, ApiMethod = "PUT", Token = "4440008087700014", SourceType = "CARD", OrderDescription = "test pay", }; gatewayApiRequest.buildRequestUrl(); gatewayApiRequest.buildPayload(); string request = JsonConvert.SerializeObject(gatewayApiRequest); LogInfo.Information(JsonConvert.SerializeObject(gatewayApiRequest)); GatewayApiClient gatewayApiClient = new GatewayApiClient(config); string response = gatewayApiClient.SendTransaction(gatewayApiRequest); LogInfo.Information(response); return(TokenResponse.GetResponseResult(response)); }
public string Capture(GridMPGSConfig mpgsConfig, TokenSession tokenSession) { GatewayApiConfig config = new GatewayApiConfig(mpgsConfig); GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(config) { OrderId = tokenSession.MPGSOrderID, ApiOperation = MPGSAPIOperation.CAPTURE.ToString(), TransactionAmount = tokenSession.Amount.ToString(), TransactionId = PaymentHelper.GenerateOrderId(), TransactionCurrency = config.Currency, Token = tokenSession.Token, SourceType = tokenSession.SourceOfFundType }; gatewayApiRequest.buildRequestUrl(); gatewayApiRequest.buildPayload(); string request = JsonConvert.SerializeObject(gatewayApiRequest); LogInfo.Information(JsonConvert.SerializeObject(gatewayApiRequest)); GatewayApiClient gatewayApiClient = new GatewayApiClient(config); string response = gatewayApiClient.SendTransaction(gatewayApiRequest); LogInfo.Information(response); return(TokenResponse.GetResponseResult(response)); }
public string RemoveToken(GridMPGSConfig mpgsConfig, string token) { GatewayApiConfig config = new GatewayApiConfig(mpgsConfig); GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(config) { ApiMethod = "DELETE" }; gatewayApiRequest.buildDeleteUrl(token); gatewayApiRequest.buildPayload(); string request = JsonConvert.SerializeObject(gatewayApiRequest); LogInfo.Information(JsonConvert.SerializeObject(gatewayApiRequest)); GatewayApiClient gatewayApiClient = new GatewayApiClient(config); string response = gatewayApiClient.executeHTTPMethod(gatewayApiRequest); LogInfo.Information(response); return(TokenResponse.GetResponseResult(response)); }
public string VoidTransaction(GridMPGSConfig mpgsConfig) { GatewayApiConfig config = new GatewayApiConfig(mpgsConfig); GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(config) { ApiMethod = "VOID", TargetTransactionId = "ea2d89bb24", TransactionId = GenerateOrderId(), Token = "440003320900022" }; gatewayApiRequest.buildRequestUrl(); gatewayApiRequest.buildPayload(); string request = JsonConvert.SerializeObject(gatewayApiRequest); LogInfo.Information(JsonConvert.SerializeObject(gatewayApiRequest)); GatewayApiClient gatewayApiClient = new GatewayApiClient(config); string response = gatewayApiClient.executeHTTPMethod(gatewayApiRequest); LogInfo.Information(response); return(TokenResponse.GetResponseResult(response)); }
public string Authorize(GridMPGSConfig mpgsConfig, Checkout checkOutDetails, PaymentMethod paymentMethod) { GatewayApiConfig config = new GatewayApiConfig(mpgsConfig); GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(config, checkOutDetails.ReceiptNumber, checkOutDetails.OrderNumber) { SessionId = checkOutDetails.CheckoutSession.Id, OrderId = checkOutDetails.OrderId, TransactionId = checkOutDetails.TransactionID, ApiOperation = MPGSAPIOperation.AUTHORIZE.ToString(), OrderAmount = checkOutDetails.Amount.ToString(), OrderCurrency = config.Currency, ApiMethod = "PUT", Token = paymentMethod.Token, SourceType = paymentMethod.SourceType, OrderDescription = "", }; gatewayApiRequest.buildRequestUrl(); gatewayApiRequest.buildPayload(); string request = JsonConvert.SerializeObject(gatewayApiRequest); LogInfo.Information(JsonConvert.SerializeObject(gatewayApiRequest)); GatewayApiClient gatewayApiClient = new GatewayApiClient(config); string response = gatewayApiClient.SendTransaction(gatewayApiRequest); LogInfo.Information(response); return(TokenResponse.GetResponseResult(response)); }
public string CaptureTest(GridMPGSConfig mpgsConfig) { GatewayApiConfig config = new GatewayApiConfig(mpgsConfig); GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(config) { OrderId = "77749b36d8", // authorized order id ApiOperation = MPGSAPIOperation.CAPTURE.ToString(), TransactionAmount = "20", TransactionId = PaymentHelper.GenerateOrderId(), TransactionCurrency = config.Currency, Token = "4440008087700014", SourceType = "CARD" }; gatewayApiRequest.buildRequestUrl(); gatewayApiRequest.buildPayload(); string request = JsonConvert.SerializeObject(gatewayApiRequest); LogInfo.Information(JsonConvert.SerializeObject(gatewayApiRequest)); GatewayApiClient gatewayApiClient = new GatewayApiClient(config); string response = gatewayApiClient.SendTransaction(gatewayApiRequest); LogInfo.Information(response); return(TokenResponse.GetResponseResult(response)); }
protected BaseController() { GatewayApiConfig = new GatewayApiConfig(); GatewayApiClient = new GatewayApiClient(GatewayApiConfig); NVPApiClient = new NVPApiClient(); unitOfWork = new UnitOfWork(context); isOSPlatformWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); initViewList(); }
public Checkout CreateCheckoutSession(GridMPGSConfig mpgsConfig, customerBilling customerBillingDetails, string MpgsOrderID, string transactionID, string receiptNumber, string orderNumber) { try { LogInfo.Information(EnumExtensions.GetDescription(MPGSAPIOperation.CREATE_CHECKOUT_SESSION)); GatewayApiConfig config = new GatewayApiConfig(mpgsConfig); GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(config, customerBillingDetails, receiptNumber, orderNumber); gatewayApiRequest.ApiOperation = MPGSAPIOperation.CREATE_CHECKOUT_SESSION.ToString(); gatewayApiRequest.OrderId = MpgsOrderID; gatewayApiRequest.TransactionId = transactionID; gatewayApiRequest.OrderCurrency = config.Currency; gatewayApiRequest.buildSessionRequestUrl(); gatewayApiRequest.buildPayload(); gatewayApiRequest.ApiMethod = GatewayApiClient.POST; GatewayApiClient gatewayApiClient = new GatewayApiClient(config); String response = gatewayApiClient.SendTransaction(gatewayApiRequest); LogInfo.Information(EnumExtensions.GetDescription(MPGSAPIResponse.HostedCheckoutResponse) + response); CheckoutSessionModel checkoutSessionModel = CheckoutSessionModel.toCheckoutSessionModel(response); Checkout checkOut = new Checkout(); checkOut.CheckoutJsUrl = $@"{config.GatewayUrl}/checkout/version/{config.Version}/checkout.js"; checkOut.MerchantId = config.MerchantId; checkOut.OrderId = gatewayApiRequest.OrderId; checkOut.TransactionID = gatewayApiRequest.TransactionId; checkOut.CheckoutSession = checkoutSessionModel; checkOut.Currency = config.Currency; return(checkOut); } catch (Exception ex) { LogInfo.Error(new ExceptionHelper().GetLogString(ex, ErrorLevel.Critical)); throw ex; } }
public IActionResult ProcessWebhook([FromBody] WebhookNotificationModel notification, [FromHeader(Name = "X-Notification-Secret")] string notificationSecret) { try { if (notification.Order.Status == MPGSAPIResponse.CAPTURED.ToString()) { _notificationModel = notification; notification.Timestamp = Convert.ToInt64((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds); PaymentHelper.InitWebhooksNotificationsFolder(); DatabaseResponse configResponse = ConfigHelper.GetValue(ConfiType.MPGS.ToString(), _iconfiguration); PaymentHelper gatewayHelper = new PaymentHelper(); GridMPGSConfig gatewayConfig = gatewayHelper.GetGridMPGSConfig((List <Dictionary <string, string> >)configResponse.Results); GatewayApiConfig _gatewayApiConfig = new GatewayApiConfig(gatewayConfig); LogInfo.Information("Webhooks controller ProcessWebhook action"); Debug.WriteLine($"-------------GatewayApiConfig.WebhooksNotificationSecret {_gatewayApiConfig.WebhooksNotificationSecret} --- {notificationSecret}"); if (_gatewayApiConfig.WebhooksNotificationSecret == null || notificationSecret == null || notificationSecret != _gatewayApiConfig.WebhooksNotificationSecret) { LogInfo.Error("Webhooks notification secret doesn't match, so not processing the incoming request!"); return(Ok()); } LogInfo.Information("Webhooks notification secret matches"); var parent = Task.Factory.StartNew(() => { Action MPGSOrderFinalProcessing = FinalPaymentProcessing; Task.Factory.StartNew(MPGSOrderFinalProcessing, TaskCreationOptions.DenyChildAttach); }); } return(Ok()); } catch (Exception ex) { LogInfo.Error(new ExceptionHelper().GetLogString(ex, ErrorLevel.Critical)); return(Ok()); } }
public string RetrieveCheckOutTransaction(GridMPGSConfig mpgsConfig, CheckOutResponseUpdate responseUpdate) { try { LogInfo.Information($" {EnumExtensions.GetDescription(MPGSAPIResponse.HostedCheckoutRetrieveReceipt) + " orderId " + responseUpdate.MPGSOrderID} result {responseUpdate.Result} sessionId {responseUpdate.CheckOutSessionID}"); GatewayApiConfig config = new GatewayApiConfig(mpgsConfig); if (responseUpdate.Result == MPGSAPIResponse.SUCCESS.ToString() || responseUpdate.Result == MPGSAPIResponse.CAPTURED.ToString()) { GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(config) { ApiOperation = MPGSAPIOperation.RETRIEVE_ORDER.ToString(), OrderId = responseUpdate.MPGSOrderID, ApiMethod = GatewayApiClient.GET }; gatewayApiRequest.buildOrderUrl(); GatewayApiClient gatewayApiClient = new GatewayApiClient(config); string response = gatewayApiClient.SendTransaction(gatewayApiRequest); LogInfo.Information($" {EnumExtensions.GetDescription(MPGSAPIResponse.HostedCheckoutRetrieveReceipt) + " " + response}"); //parse response return(response); } else { LogInfo.Error($" {MPGSAPIResponse.Unsuccessful.ToString()+ ". " + responseUpdate.Result}"); return(string.Empty); } } catch (Exception ex) { LogInfo.Error(new ExceptionHelper().GetLogString(ex, ErrorLevel.Critical)); throw ex; } }
public string PayWithToken(GridMPGSConfig mpgsConfig, string token, string sessionID, string orderID, string transactionID, string amount) { try { //payment with token GatewayApiConfig config = new GatewayApiConfig(mpgsConfig); GatewayApiRequest gatewayGeneratePaymentRequest = new GatewayApiRequest(config); gatewayGeneratePaymentRequest.ApiOperation = "PAY"; gatewayGeneratePaymentRequest.ApiMethod = GatewayApiClient.PUT; gatewayGeneratePaymentRequest.Token = token; //tokenResponse.Token; gatewayGeneratePaymentRequest.SessionId = sessionID; // responseUpdate.MPGSResponse.session.id; gatewayGeneratePaymentRequest.OrderId = orderID; //updateTokenSesisonDetails.MPGSOrderID; gatewayGeneratePaymentRequest.TransactionId = transactionID; // updateTokenSesisonDetails.TransactionID; gatewayGeneratePaymentRequest.OrderAmount = amount; gatewayGeneratePaymentRequest.buildPayload(); gatewayGeneratePaymentRequest.buildRequestUrl(); //payment response GatewayApiClient gatewayApiClient = new GatewayApiClient(config); string response = gatewayApiClient.SendTransaction(gatewayGeneratePaymentRequest); LogInfo.Information($" {EnumExtensions.GetDescription(MPGSAPIResponse.HostedCheckoutRetrieveReceipt) + " " + response}"); return(TokenResponse.GetResponseResult(response)); } catch (Exception ex) { LogInfo.Error(new ExceptionHelper().GetLogString(ex, ErrorLevel.Critical)); throw ex; } }
public TokenResponse TokenizeTest(GridMPGSConfig mpgsConfig) { try { GatewayApiConfig config = new GatewayApiConfig(mpgsConfig); GatewayApiRequest gatewayUpdateSessionRequest = new GatewayApiRequest(config); GatewayApiClient gatewayApiClient = new GatewayApiClient(config); //generate token GatewayApiRequest gatewayGenerateTokenRequest = new GatewayApiRequest(config); gatewayGenerateTokenRequest.SessionId = "SESSION0002676972204L29024409K5"; gatewayGenerateTokenRequest.ApiMethod = GatewayApiClient.POST; gatewayGenerateTokenRequest.buildPayload(); gatewayGenerateTokenRequest.buildTokenUrl(); string request = JsonConvert.SerializeObject(gatewayGenerateTokenRequest); LogInfo.Information(JsonConvert.SerializeObject(gatewayGenerateTokenRequest)); String response = gatewayApiClient.SendTransaction(gatewayGenerateTokenRequest); LogInfo.Information(response); TokenResponse tokenResponse = TokenResponse.ToTokenResponse(response); LogInfo.Information($"Tokenize response : {response}"); return(tokenResponse); } catch (Exception ex) { LogInfo.Error(new ExceptionHelper().GetLogString(ex, ErrorLevel.Critical)); throw ex; } }
public static GatewayApiRequest CreateTokenizationApiRequest(GatewayApiConfig gatewayApiConfig, string apiOperation = null, string sessionId = null) { GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(gatewayApiConfig) { SessionId = sessionId, OrderId = PaymentHelper.GenerateOrderId(), TransactionId = PaymentHelper.GenerateOrderId(), ApiOperation = apiOperation, OrderAmount = "", OrderCurrency = gatewayApiConfig.Currency }; gatewayApiRequest.buildRequestUrl(); if (apiOperation == "CAPTURE" || apiOperation == "REFUND") { gatewayApiRequest.TransactionAmount = ""; gatewayApiRequest.TransactionCurrency = gatewayApiConfig.Currency; gatewayApiRequest.OrderId = null; } if (apiOperation == "VOID" || apiOperation == "UPDATE_AUTHORIZATION") { gatewayApiRequest.OrderId = null; } if (apiOperation == "RETRIEVE_ORDER" || apiOperation == "RETRIEVE_TRANSACTION") { gatewayApiRequest.ApiMethod = "GET"; gatewayApiRequest.OrderId = null; gatewayApiRequest.TransactionId = null; } gatewayApiRequest.buildPayload(); return(gatewayApiRequest); }
public String executeHTTPMethod(GatewayApiRequest gatewayApiRequest) { string body = String.Empty; GatewayApiConfig GatewayApiConfig = gatewayApiRequest.GatewayApiConfig; //proxy settings if (GatewayApiConfig.UseProxy) { WebProxy proxy = new WebProxy(GatewayApiConfig.ProxyHost, true); if (!String.IsNullOrEmpty(GatewayApiConfig.ProxyUser)) { if (String.IsNullOrEmpty(GatewayApiConfig.ProxyDomain)) { proxy.Credentials = new NetworkCredential(GatewayApiConfig.ProxyUser, GatewayApiConfig.ProxyPassword); } else { proxy.Credentials = new NetworkCredential(GatewayApiConfig.ProxyUser, GatewayApiConfig.ProxyPassword, GatewayApiConfig.ProxyDomain); } } WebRequest.DefaultWebProxy = proxy; } // Create the web request ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; HttpWebRequest request = WebRequest.Create(gatewayApiRequest.RequestUrl) as HttpWebRequest; //http verb request.Method = gatewayApiRequest.ApiMethod; //content type, json, form, etc request.ContentType = gatewayApiRequest.ContentType; // Logger.LogInformation($@"HttpWebRequest url {gatewayApiRequest.RequestUrl} method {request.Method}"); //Authentication setting if (GatewayApiConfig.AuthenticationByCertificate) { //custom implementation fo SSL certificate validation callback request.ServerCertificateValidationCallback += (sender, cert, chain, error) => { return(error == SslPolicyErrors.None || (error != SslPolicyErrors.None && GatewayApiConfig.IgnoreSslErrors)); }; //create a new certificate collection X509Certificate2Collection certificates = new X509Certificate2Collection(); //load and add a new certificate loaded from file (p12) certificates.Add(new X509Certificate2(new X509Certificate(GatewayApiConfig.CertificateLocation, GatewayApiConfig.CertificatePassword))); //attach certificate to request request.ClientCertificates = certificates; } else { string credentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(GatewayApiConfig.Username + ":" + GatewayApiConfig.Password)); request.Headers.Add("Authorization", "Basic " + credentials); } //buuld the request try { if ((gatewayApiRequest.ApiMethod == "PUT" || gatewayApiRequest.ApiMethod == "POST") && !String.IsNullOrEmpty(gatewayApiRequest.Payload)) { // Logger.LogInformation($@"HttpWebRequest payload {gatewayApiRequest.Payload}"); // Create a byte array of the data we want to send byte[] utf8bytes = Encoding.UTF8.GetBytes(gatewayApiRequest.Payload); byte[] iso8859bytes = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("iso-8859-1"), utf8bytes); // Set the content length in the request headers request.ContentLength = iso8859bytes.Length; // Write request data using (Stream postStream = request.GetRequestStream()) { postStream.Write(iso8859bytes, 0, iso8859bytes.Length); } } // Get response try { using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { // Get the response stream StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("iso-8859-1")); body = reader.ReadToEnd(); } } catch (WebException wex) { // Logger.LogDebug($@"Response debug : {wex.Response.Headers}"); StreamReader reader = new StreamReader(wex.Response.GetResponseStream(), Encoding.GetEncoding("iso-8859-1")); body = reader.ReadToEnd(); } // Logger.LogInformation($@"HttpWebResponse response {body}"); return(body); } catch (Exception ex) { return(ex.Message + "\n\naddress:\n" + request.Address.ToString() + "\n\nheader:\n" + request.Headers.ToString() + "data submitted:\n" + gatewayApiRequest.Payload); } }
public GatewayApiRequest(GatewayApiConfig gatewayApiConfig) { GatewayApiConfig = gatewayApiConfig; }
/// <summary> /// Gets the session js URL. /// </summary> /// <returns>The session js URL.</returns> /// <param name="gatewayApiConfig">Gateway API config.</param> private string getSessionJsUrl(GatewayApiConfig gatewayApiConfig) { return($@"{GatewayApiConfig.GatewayUrl}/form/version/{GatewayApiConfig.Version}/merchant/{GatewayApiConfig.MerchantId}/session.js"); }
public Checkout CreateTokenizationCheckoutSession(GridMPGSConfig mpgsConfig, string apiOperation = null, string sessionId = null) { try { LogInfo.Information(EnumExtensions.GetDescription(MPGSAPIOperation.CREATE_CHECKOUT_SESSION)); GatewayApiConfig config = new GatewayApiConfig(mpgsConfig); GatewayApiRequest gatewayApiRequest = new GatewayApiRequest(config) { SessionId = sessionId, OrderId = GenerateOrderId(), TransactionId = GenerateOrderId(), ApiOperation = apiOperation, OrderAmount = "", OrderCurrency = config.Currency }; gatewayApiRequest.buildRequestUrl(); if (apiOperation == "CAPTURE" || apiOperation == "REFUND") { gatewayApiRequest.TransactionAmount = ""; gatewayApiRequest.TransactionCurrency = config.Currency; gatewayApiRequest.OrderId = null; } if (apiOperation == "VOID" || apiOperation == "UPDATE_AUTHORIZATION") { gatewayApiRequest.OrderId = null; } if (apiOperation == "RETRIEVE_ORDER" || apiOperation == "RETRIEVE_TRANSACTION") { gatewayApiRequest.ApiMethod = "GET"; gatewayApiRequest.OrderId = null; gatewayApiRequest.TransactionId = null; } gatewayApiRequest.buildPayload(); Checkout checkOut = new Checkout(); checkOut.CheckoutJsUrl = $@"{config.GatewayUrl}/form/version/{config.Version}/merchant/{config.MerchantId}/session.js"; checkOut.MerchantId = config.MerchantId; checkOut.OrderId = gatewayApiRequest.OrderId; checkOut.CheckoutSession = null; checkOut.Currency = config.Currency; checkOut.TransactionID = gatewayApiRequest.TransactionId; return(checkOut); } catch (Exception ex) { LogInfo.Error(new ExceptionHelper().GetLogString(ex, ErrorLevel.Critical)); throw ex; } }
public NVPApiClient(GatewayApiConfig gatewayApiConfig) { GatewayApiConfig = gatewayApiConfig; // this.Logger = logger; }
public GatewayApiClient(GatewayApiConfig gatewayApiConfig) { GatewayApiConfig = gatewayApiConfig; }