Exemplo n.º 1
0
        public TransactionResult SubmitPaymentTransaction(CheckoutDetails details)
        {
            //init result structure
            TransactionResult ret = new TransactionResult();
            //create request content
            string data = GetRequestData(details);
            // create webrequest instance
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(ServiceUrl);

            webRequest.Method        = "POST";
            webRequest.ContentLength = data.Length;
            webRequest.ContentType   = "application/x-www-form-urlencoded";
            // send service request
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(webRequest.GetRequestStream());
                sw.Write(data);
            }
            finally
            {
                if (sw != null)
                {
                    sw.Close();
                }
            }
            // read service response
            AIMResponse     aimResponse = null;
            HttpWebResponse webResponse = null;

            try
            {
                // get response
                webResponse = (HttpWebResponse)webRequest.GetResponse();
                // emit new response
                aimResponse = new AIMResponse(webResponse.GetResponseStream(), DELIMITER_CHAR);
            }
            finally
            {
                webResponse.Close();
                webRequest.Abort();
            }
            // copy raw service response
            ret.RawResponse = aimResponse.RawResponse;
            // read service response status
            switch (aimResponse[AIMField.ResponseCode])
            {
            case "1":                     //This transaction has been approved.
            case "4":                     //This transaction is being held for review.
                // check MD5 signature
                if (!CheckResponseSignature(Username, MD5_Hash, aimResponse[AIMField.TransactionId], details[CheckoutKeys.Amount],
                                            aimResponse[AIMField.ResponseSignature]))
                {
                    throw new Exception(MD5_INVALID_MSG);
                }
                //
                ret.Succeed = true;
                //
                ret.TransactionId = aimResponse[AIMField.TransactionId];
                // mark transaction as a completed
                ret.TransactionStatus = TransactionStatus.Approved;
                //
                break;

            case "2":                     // This transaction has been declined.
            case "3":                     // There has been an error processing this transaction.
                //
                ret.StatusCode = String.Concat(AuthorizeNetKeys.ErrorPrefix, aimResponse[AIMField.ResponseCode],
                                               aimResponse[AIMField.ResponseReasonCode]);
                //
                ret.Succeed = false;
                //
                ret.TransactionStatus = TransactionStatus.Declined;
                //
                break;
            }
            // return result
            return(ret);
        }
Exemplo n.º 2
0
		public TransactionResult SubmitPaymentTransaction(CheckoutDetails details)
		{
			//init result structure
			TransactionResult ret = new TransactionResult();
			//create request content
			string data = GetRequestData(details);
			// create webrequest instance
			HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(ServiceUrl);
			webRequest.Method = "POST";
			webRequest.ContentLength = data.Length;
			webRequest.ContentType = "application/x-www-form-urlencoded";
			// send service request
			StreamWriter sw = null;
			try
			{
				sw = new StreamWriter(webRequest.GetRequestStream());
				sw.Write(data);
			}
			finally
			{
				if (sw != null)
					sw.Close();
			}
			// read service response
			AIMResponse aimResponse = null;
			HttpWebResponse webResponse = null;
			try
			{
				// get response
				webResponse = (HttpWebResponse)webRequest.GetResponse();
				// emit new response
				aimResponse = new AIMResponse(webResponse.GetResponseStream(), DELIMITER_CHAR);
			}
			finally
			{
				webResponse.Close();
				webRequest.Abort();
			}
			// copy raw service response
			ret.RawResponse = aimResponse.RawResponse;
			// read service response status
			switch (aimResponse[AIMField.ResponseCode])
			{
				case "1": //This transaction has been approved.
				case "4": //This transaction is being held for review.
					// check MD5 signature
					if (!CheckResponseSignature(Username, MD5_Hash, aimResponse[AIMField.TransactionId], details[CheckoutKeys.Amount],
						aimResponse[AIMField.ResponseSignature]))
					{
						throw new Exception(MD5_INVALID_MSG);
					}
					//
					ret.Succeed = true;
					//
					ret.TransactionId = aimResponse[AIMField.TransactionId];
					// mark transaction as a completed
					ret.TransactionStatus = TransactionStatus.Approved;
					//
					break;
				case "2": // This transaction has been declined.
				case "3": // There has been an error processing this transaction.
					//
					ret.StatusCode = String.Concat(AuthorizeNetKeys.ErrorPrefix, aimResponse[AIMField.ResponseCode], 
						aimResponse[AIMField.ResponseReasonCode]);
					//
					ret.Succeed = false;
					//
					ret.TransactionStatus = TransactionStatus.Declined;
					//
					break;
			}
			// return result
			return ret;
		}