public virtual IGatewayResponse Send(IGatewayRequest request, string description) { var serviceUrl = TEST_URL; if (!string.IsNullOrEmpty(_customUrl)) { serviceUrl = _customUrl; } else if (!TestMode) { serviceUrl = LIVE_URL; } LoadAuthorization(request); if (String.IsNullOrEmpty(request.Description)) { request.Queue(ApiFields.Description, description); } #if debug request.DuplicateWindow = "0"; #endif var response = SendRequest(serviceUrl, request); return(DecideResponse(response.Split('|'))); }
/// <summary> /// Asserts the validation. /// </summary> /// <param name="req">The req.</param> /// <param name="keys">The keys.</param> public void AssertValidation(IGatewayRequest req, params string[] keys) { var sb = new StringBuilder(); foreach (var item in keys) { if (!req.Post.Keys.Contains(item)) { //add the item to the output... sb.AppendFormat("{0}, ", item); } else { //make sure it's not null if (string.IsNullOrEmpty(req.Post[item])) { sb.AppendFormat("No value for '{0}', which is required. ", item); } } } var result = sb.ToString(); if (result.Length > 0) { result.Trim().TrimEnd(','); throw new InvalidDataException("Can't submit to Gateway - missing these input fields: " + result); } }
protected string SendRequest(string serviceUrl, IGatewayRequest request) { var postData = request.ToPostString(); var result = ""; //override the local cert policy - this is for Mono ONLY //ServicePointManager.CertificatePolicy = new PolicyOverride(); var webRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); webRequest.Method = "POST"; webRequest.ContentLength = postData.Length; webRequest.ContentType = "application/x-www-form-urlencoded"; // post data is sent as a stream StreamWriter myWriter = null; myWriter = new StreamWriter(webRequest.GetRequestStream()); myWriter.Write(postData); myWriter.Close(); // returned values are returned as a stream, then read into a string var response = (HttpWebResponse)webRequest.GetResponse(); using (StreamReader responseStream = new StreamReader(response.GetResponseStream())) { result = responseStream.ReadToEnd(); responseStream.Close(); } // the response string is broken into an array // The split character specified here must match the delimiting character specified above return(result); }
protected string SendRequest(string serviceUrl, IGatewayRequest request) { var postData = request.ToPostString(); var result = ""; //override the local cert policy - this is for Mono ONLY //ServicePointManager.CertificatePolicy = new PolicyOverride(); var webRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); webRequest.Method = "POST"; webRequest.ContentLength = postData.Length; webRequest.ContentType = "application/x-www-form-urlencoded"; // post data is sent as a stream StreamWriter myWriter = null; myWriter = new StreamWriter(webRequest.GetRequestStream()); myWriter.Write(postData); myWriter.Close(); // returned values are returned as a stream, then read into a string var response = (HttpWebResponse)webRequest.GetResponse(); using (StreamReader responseStream = new StreamReader(response.GetResponseStream())) { result = responseStream.ReadToEnd(); responseStream.Close(); } // the response string is broken into an array // The split character specified here must match the delimiting character specified above return result; }
/// <summary> /// Validates the specified req. /// </summary> /// <param name="req">The req.</param> public void Validate(IGatewayRequest req) { //make sure we have all the fields we need //starting with the login/key pair AssertValidation(req, ApiFields.ApiLogin, ApiFields.TransactionKey); //each call has its own requirements... check each switch (req.ApiAction) { case RequestAction.AuthorizeAndCapture: case RequestAction.Authorize: AssertValidation(req, ApiFields.CreditCardNumber, ApiFields.CreditCardExpiration, ApiFields.Amount); break; case RequestAction.Capture: AssertValidation(req, ApiFields.TransactionID, ApiFields.AuthorizationCode); break; case RequestAction.Credit: AssertValidation(req, ApiFields.TransactionID, ApiFields.Amount, ApiFields.CreditCardNumber); break; case RequestAction.Void: AssertValidation(req, ApiFields.TransactionID); break; } }
protected string SendRequest(string serviceUrl, IGatewayRequest request) { var postData = request.ToPostString(); var result = new StringBuilder(); //override the local cert policy - this is for Mono ONLY //ServicePointManager.CertificatePolicy = new PolicyOverride(); var webRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); webRequest.Method = "POST"; webRequest.Headers["Content-Length"] = postData.Length.ToString(); webRequest.ContentType = "application/x-www-form-urlencoded"; /* HACK: No timeout properties are available on WebRequest in .NET Core * //set the http connection timeout * var httpConnectionTimeout = AuthorizeNet.Environment.getIntProperty(Constants.HttpConnectionTimeout); * webRequest.Timeout = (httpConnectionTimeout != 0 ? httpConnectionTimeout : Constants.HttpConnectionDefaultTimeout); * * //set the time out to read/write from stream * var httpReadWriteTimeout = AuthorizeNet.Environment.getIntProperty(Constants.HttpReadWriteTimeout); * webRequest.ReadWriteTimeout = (httpReadWriteTimeout != 0 ? httpReadWriteTimeout : Constants.HttpReadWriteDefaultTimeout); */ // post data is sent as a stream using (StreamWriter myWriter = new StreamWriter(HttpUtility.GetRequestStreamAsync(webRequest).Result)) { myWriter.Write(postData); } // returned values are returned as a stream, then read into a string var response = (HttpWebResponse)HttpUtility.GetResponseAsync(webRequest).Result; if (response != null) { var stream = response.GetResponseStream(); if (stream == null) { return(result.ToString()); } using (var responseStream = new StreamReader(stream)) { while (!responseStream.EndOfStream) { result.Append((char)responseStream.Read()); if (result.Length >= MaxResponseLength) { throw new Exception("response is too long."); } } } } // the response string is broken into an array // The split character specified here must match the delimiting character specified above return(result.ToString()); }
/// <summary> /// Loops the form request and pushes the data into the request, if preset. /// </summary> static void SerializeForm(IGatewayRequest request, NameValueCollection collection) { var api = new ApiFields (); foreach (string item in collection.Keys) { //always send the keys to the API - this allows for Merchant Custom Keys request.Queue(item, collection[item]); } }
/// <summary> /// Loops the form request and pushes the data into the request, if preset. /// </summary> static void SerializeForm(IGatewayRequest request, NameValueCollection collection) { var api = new ApiFields(); foreach (string item in collection.Keys) { //always send the keys to the API - this allows for Merchant Custom Keys request.Queue(item, collection[item]); } }
protected string SendRequest(string serviceUrl, IGatewayRequest request) { var postData = request.ToPostString(); var result = new StringBuilder(); //override the local cert policy - this is for Mono ONLY //ServicePointManager.CertificatePolicy = new PolicyOverride(); var webRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); webRequest.Method = "POST"; webRequest.ContentLength = postData.Length; webRequest.ContentType = "application/x-www-form-urlencoded"; //set the http connection timeout var httpConnectionTimeout = AuthorizeNet.Environment.getIntProperty(Constants.HttpConnectionTimeout); webRequest.Timeout = (httpConnectionTimeout != 0 ? httpConnectionTimeout : Constants.HttpConnectionDefaultTimeout); //set the time out to read/write from stream var httpReadWriteTimeout = AuthorizeNet.Environment.getIntProperty(Constants.HttpReadWriteTimeout); webRequest.ReadWriteTimeout = (httpReadWriteTimeout != 0 ? httpReadWriteTimeout : Constants.HttpReadWriteDefaultTimeout); // post data is sent as a stream StreamWriter myWriter = null; myWriter = new StreamWriter(webRequest.GetRequestStream()); myWriter.Write(postData); myWriter.Close(); // returned values are returned as a stream, then read into a string var response = (HttpWebResponse)webRequest.GetResponse(); if (response != null) { var stream = response.GetResponseStream(); if (stream == null) return result.ToString(); using (var responseStream = new StreamReader(stream)) { while (!responseStream.EndOfStream) { result.Append((char)responseStream.Read()); if (result.Length >= MaxResponseLength) { throw new Exception("response is too long."); } } responseStream.Close(); } } // the response string is broken into an array // The split character specified here must match the delimiting character specified above return result.ToString(); }
public virtual IGatewayResponse Send(IGatewayRequest request, string description) { var serviceUrl = TEST_URL; if (!TestMode) { serviceUrl = LIVE_URL; } LoadAuthorization(request); request.Queue(ApiFields.Description, description); var response = SendRequest(serviceUrl, request); return(DecideResponse(response.Split('|'))); }
public IGatewayResponse Send(IGatewayRequest request, string description) { var serviceUrl = TEST_URL; if (!TestMode) { serviceUrl = LIVE_URL; } request.Queue(ApiFields.ApiLogin, ApiLogin); request.Queue(ApiFields.TransactionKey, TransactionKey); request.Queue(ApiFields.Description, description); //validate the inputs Validate(request); var result = ""; var postData = request.ToPostString(); //override the local cert policy ServicePointManager.CertificatePolicy = new PolicyOverride(); var webRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); webRequest.Method = "POST"; webRequest.ContentLength = postData.Length; webRequest.ContentType = "application/x-www-form-urlencoded"; // post data is sent as a stream StreamWriter myWriter = null; myWriter = new StreamWriter(webRequest.GetRequestStream()); myWriter.Write(postData); myWriter.Close(); // returned values are returned as a stream, then read into a string var response = (HttpWebResponse)webRequest.GetResponse(); using (StreamReader responseStream = new StreamReader(response.GetResponseStream())) { result = responseStream.ReadToEnd(); responseStream.Close(); } // the response string is broken into an array // The split character specified here must match the delimiting character specified above var response_array = result.Split('|'); return(DecideResponse(response_array)); }
public virtual IGatewayResponse Send (IGatewayRequest request, string description) { var serviceUrl = TEST_URL; if (!TestMode) serviceUrl = LIVE_URL; LoadAuthorization(request); if(String.IsNullOrEmpty(request.Description)) request.Queue(ApiFields.Description, description); #if debug request.DuplicateWindow = "0"; #endif var response = SendRequest(serviceUrl, request); return DecideResponse(response.Split('|')); }
public virtual IGatewayResponse Send(IGatewayRequest request, string description) { string serviceUrl = "https://test.authorize.net/gateway/transact.dll"; if (!this.TestMode) { serviceUrl = "https://secure.authorize.net/gateway/transact.dll"; } this.LoadAuthorization(request); if (string.IsNullOrEmpty(request.Description)) { request.Queue("x_description", description); } return(this.DecideResponse(this.SendRequest(serviceUrl, request).Split(new char[1] { '|' }))); }
/// <summary> /// Sends the specified request. /// </summary> /// <param name="request">The request.</param> /// <param name="description">The description.</param> /// <returns></returns> public override IGatewayResponse Send(IGatewayRequest request, string description) { var device = (int)_deviceType; //make sure to send in the API version request.Queue("x_cpversion", "1.0"); request.Queue("x_market_type", _marketType); request.Queue("x_device_type", device.ToString()); request.Queue("x_response_format", "1"); LoadAuthorization(request); request.Queue(ApiFields.Description, description); var response = SendRequest(_serviceUrl, request); return(new CardPresentResponse(response.Split('|'))); }
protected string SendRequest(string serviceUrl, IGatewayRequest request) { var postData = request.ToPostString(); var result = ""; //override the local cert policy - this is for Mono ONLY //ServicePointManager.CertificatePolicy = new PolicyOverride(); var webRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); webRequest.Method = "POST"; webRequest.ContentLength = postData.Length; webRequest.ContentType = "application/x-www-form-urlencoded"; //set the http connection timeout var httpConnectionTimeout = AuthorizeNet.Environment.getIntProperty(Constants.HttpConnectionTimeout); webRequest.Timeout = (httpConnectionTimeout != 0 ? httpConnectionTimeout : Constants.HttpConnectionDefaultTimeout); //set the time out to read/write from stream var httpReadWriteTimeout = AuthorizeNet.Environment.getIntProperty(Constants.HttpReadWriteTimeout); webRequest.ReadWriteTimeout = (httpReadWriteTimeout != 0 ? httpReadWriteTimeout : Constants.HttpReadWriteDefaultTimeout); // post data is sent as a stream StreamWriter myWriter = null; myWriter = new StreamWriter(webRequest.GetRequestStream()); myWriter.Write(postData); myWriter.Close(); // returned values are returned as a stream, then read into a string var response = (HttpWebResponse)webRequest.GetResponse(); using (StreamReader responseStream = new StreamReader(response.GetResponseStream())) { result = responseStream.ReadToEnd(); responseStream.Close(); } // the response string is broken into an array // The split character specified here must match the delimiting character specified above return(result); }
protected string SendRequest(string serviceUrl, IGatewayRequest request) { string str1 = request.ToPostString(); string str2 = ""; HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); httpWebRequest.Method = "POST"; httpWebRequest.ContentLength = (long)str1.Length; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; StreamWriter streamWriter = new StreamWriter(((WebRequest)httpWebRequest).GetRequestStream()); streamWriter.Write(str1); streamWriter.Close(); using (StreamReader streamReader = new StreamReader(httpWebRequest.GetResponse().GetResponseStream())) { str2 = streamReader.ReadToEnd(); streamReader.Close(); } return(str2); }
protected string SendRequest(string serviceUrl, IGatewayRequest request) { var postData = request.ToPostString(); var result = new StringBuilder(); //override the local cert policy - this is for Mono ONLY //ServicePointManager.CertificatePolicy = new PolicyOverride(); ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; var webRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); webRequest.Method = "POST"; webRequest.ContentLength = postData.Length; webRequest.ContentType = "application/x-www-form-urlencoded"; //set the http connection timeout var httpConnectionTimeout = AuthorizeNet.Environment.getIntProperty(Constants.HttpConnectionTimeout); webRequest.Timeout = (httpConnectionTimeout != 0 ? httpConnectionTimeout : Constants.HttpConnectionDefaultTimeout); //set the time out to read/write from stream var httpReadWriteTimeout = AuthorizeNet.Environment.getIntProperty(Constants.HttpReadWriteTimeout); webRequest.ReadWriteTimeout = (httpReadWriteTimeout != 0 ? httpReadWriteTimeout : Constants.HttpReadWriteDefaultTimeout); // post data is sent as a stream StreamWriter myWriter = null; myWriter = new StreamWriter(webRequest.GetRequestStream()); myWriter.Write(postData); myWriter.Close(); // returned values are returned as a stream, then read into a string var response = (HttpWebResponse)webRequest.GetResponse(); if (response != null) { var stream = response.GetResponseStream(); if (stream == null) { return(result.ToString()); } using (var responseStream = new StreamReader(stream)) { while (!responseStream.EndOfStream) { result.Append((char)responseStream.Read()); if (result.Length >= MaxResponseLength) { throw new Exception("response is too long."); } } responseStream.Close(); } } // the response string is broken into an array // The split character specified here must match the delimiting character specified above return(result.ToString()); }
protected void LoadAuthorization(IGatewayRequest request) { request.Queue(ApiFields.ApiLogin, ApiLogin); request.Queue(ApiFields.TransactionKey, TransactionKey); }
public IGatewayResponse Send(IGatewayRequest request) { return(Send(request, null)); }
public IEnumerable <IGatewayResponse> GetTransactions(IGatewayRequest request) { var apiRequest = new AuthorizeDotNetApiRequest(); return(apiRequest.GetTransactions((AuthorizeDotNetRequest)request)); }
public IGatewayResponse Send(IGatewayRequest request) { var apiRequest = new AuthorizeDotNetApiRequest(); return(apiRequest.Send((AuthorizeDotNetRequest)request)); }
public IGatewayResponse Send(IGatewayRequest request) { return(this.Send(request, (string)null)); }
protected void LoadAuthorization(IGatewayRequest request) { request.Queue("x_login", this.ApiLogin); request.Queue("x_tran_key", this.TransactionKey); }
protected void LoadAuthorization(IGatewayRequest request) { request.Queue(ApiFields.ApiLogin, ApiLogin); request.Queue(ApiFields.TransactionKey, TransactionKey); }
public IGatewayResponse Send(IGatewayRequest request) { return Send(request, null); }
/// <summary> /// Sends the specified request. /// </summary> /// <param name="request">The request.</param> /// <param name="description">The description.</param> /// <returns></returns> public override IGatewayResponse Send(IGatewayRequest request, string description) { var device = (int)_deviceType; //make sure to send in the API version request.Queue("x_cpversion", "1.0"); request.Queue("x_market_type", _marketType); request.Queue("x_device_type", device.ToString()); request.Queue("x_response_format", "1"); LoadAuthorization(request); request.Queue(ApiFields.Description, description); //make sure this is empty request.RelayResponse = ""; var response = SendRequest(_serviceUrl, request); return new CardPresentResponse(response.Split('|')); }
public override bool ProcessPayment(Payment payment, ref string message) { var info = payment as CreditCardPayment; if (ReferenceEquals(info, null)) { payment.Status = PaymentStatus.Failed.ToString(); message = "AuthorizeNet gateway supports only CreditCardPayment"; return(false); } string[] validateSettings = { "MerchantLogin", "MerchantPassword" }; foreach (var validateSetting in validateSettings) { if (!Settings.ContainsKey(validateSetting) || string.IsNullOrWhiteSpace(Settings[validateSetting])) { payment.Status = PaymentStatus.Failed.ToString(); message = string.Format("{0} not configured", validateSetting); return(false); } } var transactionType = (TransactionType)Enum.Parse(typeof(TransactionType), info.TransactionType); payment.Status = PaymentStatus.Processing.ToString(); var gateway = new Gateway(Settings["MerchantLogin"], Settings["MerchantPassword"]); bool isTestMode; if (Settings.ContainsKey("TestMode") && bool.TryParse(Settings["TestMode"], out isTestMode)) { gateway.TestMode = isTestMode; } var description = string.Format("{0} transaction for order id {1}", transactionType, info.OrderForm.OrderGroupId); IGatewayRequest request = null; switch (transactionType) { case TransactionType.Authorization: case TransactionType.Sale: request = new AuthorizationRequest(info.CreditCardNumber, string.Format("{0}{1}", info.CreditCardExpirationMonth, info.CreditCardExpirationYear), info.Amount, description, transactionType == TransactionType.Sale); break; case TransactionType.Capture: request = new PriorAuthCaptureRequest(info.Amount, info.ValidationCode); break; case TransactionType.Credit: request = new CreditRequest(info.ValidationCode, info.Amount, info.CreditCardNumber); break; case TransactionType.Void: request = new VoidRequest(info.ValidationCode); break; } if (request == null) { payment.Status = PaymentStatus.Failed.ToString(); message = string.Format("Unsupported transation type {0}", transactionType); return(false); } request.AddCardCode(info.CreditCardSecurityCode); var invoice = info.OrderForm.OrderGroupId; var order = info.OrderForm.OrderGroup as Order; if (order != null) { invoice = order.TrackingNumber; } request.AddInvoice(invoice); request.AddTax(info.OrderForm.TaxTotal); // Find the address var address = info.OrderForm.OrderGroup.OrderAddresses .FirstOrDefault(a => String.Compare(a.OrderAddressId, info.BillingAddressId, StringComparison.OrdinalIgnoreCase) == 0); if (address != null) { request.AddCustomer(address.Email, address.FirstName, address.LastName, address.Line1 + " " + address.Line2, address.StateProvince, address.PostalCode); } //foreach (var lineItem in info.OrderForm.LineItems) //{ // request.AddLineItem(lineItem.LineItemId, lineItem.DisplayName, lineItem.Description, // (int)lineItem.Quantity, lineItem.PlacedPrice, false); //} try { var response = gateway.Send(request, description); if (!response.Approved) { payment.Status = PaymentStatus.Denied.ToString(); message = "Transaction Declined: " + response.Message; return(false); } info.StatusCode = response.ResponseCode; info.StatusDesc = response.Message; info.ValidationCode = response.TransactionID; info.AuthorizationCode = response.AuthorizationCode; // transaction is marked as completed every time the payment operation succeeds even if it is void transaction type payment.Status = PaymentStatus.Completed.ToString(); } catch (Exception ex) { payment.Status = PaymentStatus.Failed.ToString(); throw new ApplicationException(ex.Message); } return(true); }