Ejemplo n.º 1
0
        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('|')));
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        /// <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;
            }
        }
Ejemplo n.º 6
0
        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());
        }
Ejemplo n.º 7
0
        /// <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]);
            }
        }
Ejemplo n.º 9
0
        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();
        }
Ejemplo n.º 10
0
        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('|')));
        }
Ejemplo n.º 11
0
        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));
        }
Ejemplo n.º 12
0
		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('|'));
		}
Ejemplo n.º 13
0
        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]
            {
                '|'
            })));
        }
Ejemplo n.º 14
0
        /// <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('|')));
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        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());
        }
Ejemplo n.º 18
0
 protected void LoadAuthorization(IGatewayRequest request)
 {
     request.Queue(ApiFields.ApiLogin, ApiLogin);
     request.Queue(ApiFields.TransactionKey, TransactionKey);
 }
Ejemplo n.º 19
0
 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));
        }
Ejemplo n.º 22
0
 public IGatewayResponse Send(IGatewayRequest request)
 {
     return(this.Send(request, (string)null));
 }
Ejemplo n.º 23
0
 protected void LoadAuthorization(IGatewayRequest request)
 {
     request.Queue("x_login", this.ApiLogin);
     request.Queue("x_tran_key", this.TransactionKey);
 }
Ejemplo n.º 24
0
 protected void LoadAuthorization(IGatewayRequest request) {
     request.Queue(ApiFields.ApiLogin, ApiLogin);
     request.Queue(ApiFields.TransactionKey, TransactionKey);
 }
Ejemplo n.º 25
0
 public IGatewayResponse Send(IGatewayRequest request) {
     return Send(request, null);
 }
Ejemplo n.º 26
0
        /// <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('|'));
        }
Ejemplo n.º 27
0
        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);
        }