Пример #1
0
        void WebEvents_OnLoadRequestedPath(System.Web.HttpApplication app, string sprocketPath, string[] pathSections, HandleFlag handled)
        {
            if (!IntegrationEnabled)
            {
                return;
            }

            switch (sprocketPath)
            {
            case "paypal-ipn-process":
                using (PayPalTransactionResponse resp = InstantPaymentNotification.Authenticate())
                {
                    if (OnInstantPaymentNotification != null && resp != null)
                    {
                        OnInstantPaymentNotification(resp);
                    }
                }

                break;

            case "paypal-trans-return":
                using (PayPalTransactionResponse resp = TransactionReturn())
                {
                    if (OnTransactionResponse != null && resp != null)
                    {
                        OnTransactionResponse(resp);
                    }
                }
                break;

            default:
                return;
            }
            handled.Set();
        }
Пример #2
0
        void WebEvents_OnLoadRequestedPath(HandleFlag handled)
        {
            if (!IntegrationEnabled)
            {
                return;
            }

            switch (SprocketPath.Value)
            {
            case "paypal-ipn-process":
            {
                PayPalTransactionResponse resp = InstantPaymentNotification.Authenticate();
                if (OnInstantPaymentNotification != null && resp != null)
                {
                    OnInstantPaymentNotification(resp);
                }
            }

            break;

            case "paypal-trans-return":
            {
                PayPalTransactionResponse resp = TransactionReturn();
                if (OnTransactionResponse != null && resp != null)
                {
                    OnTransactionResponse(resp);
                }
            }
            break;

            default:
                return;
            }
            handled.Set();
        }
 public Result Delete(PayPalTransactionResponse payPalTransactionResponse)
 {
     Result result = new Result();
     if (OnBeforeDeletePayPalTransactionResponse != null)
         OnBeforeDeletePayPalTransactionResponse(payPalTransactionResponse, result);
     if (result.Succeeded)
     {
         try
         {
             using (TransactionScope scope = new TransactionScope())
             {
                 SqlConnection conn = (SqlConnection)DatabaseManager.DatabaseEngine.GetConnection();
                 SqlCommand cmd = new SqlCommand("PayPalTransactionResponse_Delete", conn);
                 cmd.CommandType = CommandType.StoredProcedure;
                 cmd.Parameters.Add(new SqlParameter("@TransactionID", payPalTransactionResponse.TransactionID));
                 cmd.ExecuteNonQuery();
                 scope.Complete();
             }
         }
         catch (Exception ex)
         {
             return new Result(ex.Message);
         }
         finally
         {
             DatabaseManager.DatabaseEngine.ReleaseConnection();
         }
         if (OnPayPalTransactionResponseDeleted != null)
             OnPayPalTransactionResponseDeleted(payPalTransactionResponse);
     }
     return result;
 }
        public static PayPalTransactionResponse Authenticate()
        {
            WebRequest w = WebRequest.Create(PayPal.PayPalPostURL);

            w.ContentType = "application/x-www-form-urlencoded";
            w.Method      = "POST";
            string data = ComposeFormPostData("cmd", "_notify-validate");
            NameValueCollection form = HttpContext.Current.Request.Form;

            for (int i = 0; i < form.Count; i++)
            {
                data += "&" + ComposeFormPostData(form.GetKey(i), form[i]);
            }
            Stream s = w.GetRequestStream();

            byte[] buf = Encoding.ASCII.GetBytes(data);
            s.Write(buf, 0, buf.Length);
            s.Close();
            HttpWebResponse r        = (HttpWebResponse)w.GetResponse();
            StreamReader    sr       = new StreamReader(r.GetResponseStream());
            string          response = HttpUtility.UrlDecode(sr.ReadToEnd());

            sr.Close();
            r.Close();
            if (!response.StartsWith("VERIFIED"))
            {
                return(null);
            }
            PayPalTransactionResponse resp = new PayPalTransactionResponse();

            resp.Populate(HttpContext.Current.Request.Form);
            string         appstr    = "PayPal_IPN_RecentTXNIDs" + resp.Txn_type;
            Queue <string> recentIDs = HttpContext.Current.Application[appstr] as Queue <string>;

            if (recentIDs == null)
            {
                recentIDs = new Queue <string>();
                HttpContext.Current.Application[appstr] = recentIDs;
            }
            if (recentIDs.Count > 500)
            {
                recentIDs.Dequeue();
            }
            if (recentIDs.Contains(resp.Txn_id))
            {
                return(null);
            }
            recentIDs.Enqueue(resp.Txn_id);
            try { PayPal.DataProvider.Store(resp); }
            catch (Exception e) { }            // thrown usually on duplicate id, which we try to avoid via the queue above (less hits to database)
            return(resp);
        }
 public static PayPalTransactionResponse Authenticate()
 {
     WebRequest w = WebRequest.Create(PayPal.PayPalPostURL);
     w.ContentType = "application/x-www-form-urlencoded";
     w.Method = "POST";
     string data = ComposeFormPostData("cmd","_notify-validate");
     NameValueCollection form = HttpContext.Current.Request.Form;
     for (int i = 0; i < form.Count; i++)
         data += "&" + ComposeFormPostData(form.GetKey(i), form[i]);
     Stream s = w.GetRequestStream();
     byte[] buf = Encoding.ASCII.GetBytes(data);
     s.Write(buf, 0, buf.Length);
     s.Close();
     HttpWebResponse r = (HttpWebResponse)w.GetResponse();
     StreamReader sr = new StreamReader(r.GetResponseStream());
     string response = HttpUtility.UrlDecode(sr.ReadToEnd());
     sr.Close();
     r.Close();
     if (!response.StartsWith("VERIFIED"))
         return null;
     PayPalTransactionResponse resp = new PayPalTransactionResponse();
     resp.Populate(HttpContext.Current.Request.Form);
     string appstr = "PayPal_IPN_RecentTXNIDs" + resp.Txn_type;
     Queue<string> recentIDs = HttpContext.Current.Application[appstr] as Queue<string>;
     if (recentIDs == null)
     {
         recentIDs = new Queue<string>();
         HttpContext.Current.Application[appstr] = recentIDs;
     }
     if (recentIDs.Count > 500) recentIDs.Dequeue();
     if (recentIDs.Contains(resp.Txn_id))
         return null;
     recentIDs.Enqueue(resp.Txn_id);
     try { resp.Save(); }
     catch(Exception e) { } // thrown usually on duplicate id, which we try to avoid via the queue above (less hits to database)
     return resp;
 }
		public static Dictionary<Guid, PayPalTransactionResponse> Filter(Guid? transactionID, string txn_id, string txn_type, decimal? auth_amount, string auth_id, DateTime? auth_exp, string auth_status, decimal? mc_gross_x, decimal? mc_handling_x, int? num_cart_items, string parent_txn_id, DateTime? payment_date, string payment_status, string payment_type, string pending_reason, string reason_code, decimal? remaining_settle, string transaction_entity, string invoice, string memo, decimal? tax, string business, string item_name, string item_number, int? quantity, string receiver_email, string receiver_id, string address_city, string address_country, string address_country_code, string address_name, string address_state, string address_status, string address_street, string address_zip, string first_name, string last_name, string payer_id, string payer_status, string residence_country, decimal? exchange_rate, decimal? mc_fee, decimal? mc_gross, decimal? mc_handlingamount, decimal? mc_shippingamount, decimal? payment_fee, decimal? payment_gross, decimal? settle_amount, string settle_currency, DateTime? subscr_date, DateTime? subscr_effective, string period1, string period2, string period3, decimal? amount1, decimal? amount2, decimal? amount3, decimal? mc_amount1, decimal? mc_amount2, decimal? mc_amount3, string mc_currency, bool? recurring, bool? reattempt, DateTime? retry_at, int? recur_times, string username, string password, string subscr_id, string custom)
		{
			Database.Main.RememberOpenState();
			Dictionary<Guid, PayPalTransactionResponse> results = new Dictionary<Guid, PayPalTransactionResponse>();
			IDbCommand cmd = Database.Main.CreateCommand("PayPalTransactionResponse_Filter", CommandType.StoredProcedure);
			Database.Main.AddParameter(cmd, "@TransactionID", transactionID, DbType.Guid);
			Database.Main.AddParameter(cmd, "@txn_id", txn_id, DbType.String);
			Database.Main.AddParameter(cmd, "@txn_type", txn_type, DbType.String);
			Database.Main.AddParameter(cmd, "@auth_amount", auth_amount, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@auth_id", auth_id, DbType.String);
			Database.Main.AddParameter(cmd, "@auth_exp", auth_exp, DbType.DateTime);
			Database.Main.AddParameter(cmd, "@auth_status", auth_status, DbType.String);
			Database.Main.AddParameter(cmd, "@mc_gross_x", mc_gross_x, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@mc_handling_x", mc_handling_x, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@num_cart_items", num_cart_items, DbType.Int32);
			Database.Main.AddParameter(cmd, "@parent_txn_id", parent_txn_id, DbType.String);
			Database.Main.AddParameter(cmd, "@payment_date", payment_date, DbType.DateTime);
			Database.Main.AddParameter(cmd, "@payment_status", payment_status, DbType.String);
			Database.Main.AddParameter(cmd, "@payment_type", payment_type, DbType.String);
			Database.Main.AddParameter(cmd, "@pending_reason", pending_reason, DbType.String);
			Database.Main.AddParameter(cmd, "@reason_code", reason_code, DbType.String);
			Database.Main.AddParameter(cmd, "@remaining_settle", remaining_settle, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@transaction_entity", transaction_entity, DbType.String);
			Database.Main.AddParameter(cmd, "@invoice", invoice, DbType.String);
			Database.Main.AddParameter(cmd, "@memo", memo, DbType.String);
			Database.Main.AddParameter(cmd, "@tax", tax, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@business", business, DbType.String);
			Database.Main.AddParameter(cmd, "@item_name", item_name, DbType.String);
			Database.Main.AddParameter(cmd, "@item_number", item_number, DbType.String);
			Database.Main.AddParameter(cmd, "@quantity", quantity, DbType.Int32);
			Database.Main.AddParameter(cmd, "@receiver_email", receiver_email, DbType.String);
			Database.Main.AddParameter(cmd, "@receiver_id", receiver_id, DbType.String);
			Database.Main.AddParameter(cmd, "@address_city", address_city, DbType.String);
			Database.Main.AddParameter(cmd, "@address_country", address_country, DbType.String);
			Database.Main.AddParameter(cmd, "@address_country_code", address_country_code, DbType.String);
			Database.Main.AddParameter(cmd, "@address_name", address_name, DbType.String);
			Database.Main.AddParameter(cmd, "@address_state", address_state, DbType.String);
			Database.Main.AddParameter(cmd, "@address_status", address_status, DbType.String);
			Database.Main.AddParameter(cmd, "@address_street", address_street, DbType.String);
			Database.Main.AddParameter(cmd, "@address_zip", address_zip, DbType.String);
			Database.Main.AddParameter(cmd, "@first_name", first_name, DbType.String);
			Database.Main.AddParameter(cmd, "@last_name", last_name, DbType.String);
			Database.Main.AddParameter(cmd, "@payer_id", payer_id, DbType.String);
			Database.Main.AddParameter(cmd, "@payer_status", payer_status, DbType.String);
			Database.Main.AddParameter(cmd, "@residence_country", residence_country, DbType.String);
			Database.Main.AddParameter(cmd, "@exchange_rate", exchange_rate, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@mc_fee", mc_fee, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@mc_gross", mc_gross, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@mc_handling#", mc_handlingamount, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@mc_shipping#", mc_shippingamount, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@payment_fee", payment_fee, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@payment_gross", payment_gross, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@settle_amount", settle_amount, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@settle_currency", settle_currency, DbType.String);
			Database.Main.AddParameter(cmd, "@subscr_date", subscr_date, DbType.DateTime);
			Database.Main.AddParameter(cmd, "@subscr_effective", subscr_effective, DbType.DateTime);
			Database.Main.AddParameter(cmd, "@period1", period1, DbType.String);
			Database.Main.AddParameter(cmd, "@period2", period2, DbType.String);
			Database.Main.AddParameter(cmd, "@period3", period3, DbType.String);
			Database.Main.AddParameter(cmd, "@amount1", amount1, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@amount2", amount2, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@amount3", amount3, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@mc_amount1", mc_amount1, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@mc_amount2", mc_amount2, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@mc_amount3", mc_amount3, DbType.Decimal);
			Database.Main.AddParameter(cmd, "@mc_currency", mc_currency, DbType.String);
			Database.Main.AddParameter(cmd, "@recurring", recurring, DbType.Boolean);
			Database.Main.AddParameter(cmd, "@reattempt", reattempt, DbType.Boolean);
			Database.Main.AddParameter(cmd, "@retry_at", retry_at, DbType.DateTime);
			Database.Main.AddParameter(cmd, "@recur_times", recur_times, DbType.Int32);
			Database.Main.AddParameter(cmd, "@username", username, DbType.String);
			Database.Main.AddParameter(cmd, "@password", password, DbType.String);
			Database.Main.AddParameter(cmd, "@subscr_id", subscr_id, DbType.String);
			Database.Main.AddParameter(cmd, "@custom", custom, DbType.String);
			DataSet ds = Database.Main.GetDataSet(cmd);
			Database.Main.CloseIfWasntOpen();
			foreach(DataRow row in ds.Tables[0].Rows)
			{
				PayPalTransactionResponse o = new PayPalTransactionResponse(row);
				results.Add(o.transactionID, o);
			}
			return results;
		}
		public static PayPalTransactionResponse[] Load(DataTable payPalTransactionResponseDataTable)
		{
			PayPalTransactionResponse[] arr = new PayPalTransactionResponse[payPalTransactionResponseDataTable.Rows.Count];
			for(int i=0; i<payPalTransactionResponseDataTable.Rows.Count; i++)
				arr[i] = new PayPalTransactionResponse(payPalTransactionResponseDataTable.Rows[i]);
			return arr;
		}
 public Result Store(PayPalTransactionResponse payPalTransactionResponse)
 {
     try
     {
         using (TransactionScope scope = new TransactionScope())
         {
             SqlConnection conn = (SqlConnection)DatabaseManager.DatabaseEngine.GetConnection();
             SqlCommand cmd = new SqlCommand("PayPalTransactionResponse_Store", conn);
             cmd.CommandType = CommandType.StoredProcedure;
             SqlParameter prm = new SqlParameter("@TransactionID", payPalTransactionResponse.TransactionID);
             prm.Direction = ParameterDirection.InputOutput;
             cmd.Parameters.Add(prm);
             cmd.Parameters.Add(NewParameter("@txn_id", payPalTransactionResponse.Txn_id, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@txn_type", payPalTransactionResponse.Txn_type, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@auth_amount", payPalTransactionResponse.Auth_amount, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@auth_id", payPalTransactionResponse.Auth_id, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@auth_exp", payPalTransactionResponse.Auth_exp, SqlDbType.DateTime));
             cmd.Parameters.Add(NewParameter("@auth_status", payPalTransactionResponse.Auth_status, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@mc_gross_x", payPalTransactionResponse.Mc_gross_x, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@mc_handling_x", payPalTransactionResponse.Mc_handling_x, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@num_cart_items", payPalTransactionResponse.Num_cart_items, SqlDbType.Int));
             cmd.Parameters.Add(NewParameter("@parent_txn_id", payPalTransactionResponse.Parent_txn_id, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@payment_date", payPalTransactionResponse.Payment_date, SqlDbType.DateTime));
             cmd.Parameters.Add(NewParameter("@payment_status", payPalTransactionResponse.Payment_status, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@payment_type", payPalTransactionResponse.Payment_type, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@pending_reason", payPalTransactionResponse.Pending_reason, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@reason_code", payPalTransactionResponse.Reason_code, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@remaining_settle", payPalTransactionResponse.Remaining_settle, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@transaction_entity", payPalTransactionResponse.Transaction_entity, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@invoice", payPalTransactionResponse.Invoice, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@memo", payPalTransactionResponse.Memo, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@tax", payPalTransactionResponse.Tax, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@business", payPalTransactionResponse.Business, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@item_name", payPalTransactionResponse.Item_name, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@item_number", payPalTransactionResponse.Item_number, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@quantity", payPalTransactionResponse.Quantity, SqlDbType.Int));
             cmd.Parameters.Add(NewParameter("@receiver_email", payPalTransactionResponse.Receiver_email, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@receiver_id", payPalTransactionResponse.Receiver_id, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@address_city", payPalTransactionResponse.Address_city, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@address_country", payPalTransactionResponse.Address_country, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@address_country_code", payPalTransactionResponse.Address_country_code, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@address_name", payPalTransactionResponse.Address_name, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@address_state", payPalTransactionResponse.Address_state, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@address_status", payPalTransactionResponse.Address_status, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@address_street", payPalTransactionResponse.Address_street, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@address_zip", payPalTransactionResponse.Address_zip, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@first_name", payPalTransactionResponse.First_name, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@last_name", payPalTransactionResponse.Last_name, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@payer_id", payPalTransactionResponse.Payer_id, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@payer_status", payPalTransactionResponse.Payer_status, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@residence_country", payPalTransactionResponse.Residence_country, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@exchange_rate", payPalTransactionResponse.Exchange_rate, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@mc_fee", payPalTransactionResponse.Mc_fee, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@mc_gross", payPalTransactionResponse.Mc_gross, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@mc_handling#", payPalTransactionResponse.Mc_handlingamount, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@mc_shipping#", payPalTransactionResponse.Mc_shippingamount, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@payment_fee", payPalTransactionResponse.Payment_fee, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@payment_gross", payPalTransactionResponse.Payment_gross, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@settle_amount", payPalTransactionResponse.Settle_amount, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@settle_currency", payPalTransactionResponse.Settle_currency, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@subscr_date", payPalTransactionResponse.Subscr_date, SqlDbType.DateTime));
             cmd.Parameters.Add(NewParameter("@subscr_effective", payPalTransactionResponse.Subscr_effective, SqlDbType.DateTime));
             cmd.Parameters.Add(NewParameter("@period1", payPalTransactionResponse.Period1, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@period2", payPalTransactionResponse.Period2, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@period3", payPalTransactionResponse.Period3, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@amount1", payPalTransactionResponse.Amount1, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@amount2", payPalTransactionResponse.Amount2, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@amount3", payPalTransactionResponse.Amount3, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@mc_amount1", payPalTransactionResponse.Mc_amount1, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@mc_amount2", payPalTransactionResponse.Mc_amount2, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@mc_amount3", payPalTransactionResponse.Mc_amount3, SqlDbType.Decimal));
             cmd.Parameters.Add(NewParameter("@mc_currency", payPalTransactionResponse.Mc_currency, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@recurring", payPalTransactionResponse.Recurring, SqlDbType.Bit));
             cmd.Parameters.Add(NewParameter("@reattempt", payPalTransactionResponse.Reattempt, SqlDbType.Bit));
             cmd.Parameters.Add(NewParameter("@retry_at", payPalTransactionResponse.Retry_at, SqlDbType.DateTime));
             cmd.Parameters.Add(NewParameter("@recur_times", payPalTransactionResponse.Recur_times, SqlDbType.Int));
             cmd.Parameters.Add(NewParameter("@username", payPalTransactionResponse.Username, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@password", payPalTransactionResponse.Password, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@subscr_id", payPalTransactionResponse.Subscr_id, SqlDbType.NVarChar));
             cmd.Parameters.Add(NewParameter("@custom", payPalTransactionResponse.Custom, SqlDbType.NVarChar));
             cmd.ExecuteNonQuery();
             scope.Complete();
         }
     }
     catch (Exception ex)
     {
         return new Result(ex.Message);
     }
     finally
     {
         DatabaseManager.DatabaseEngine.ReleaseConnection();
     }
     return new Result();
 }
        public PayPalTransactionResponse SelectPayPalTransactionResponse(Guid id)
        {
            try
            {
                PayPalTransactionResponse entity;
                using (TransactionScope scope = new TransactionScope())
                {
                    SqlConnection conn = (SqlConnection)DatabaseManager.DatabaseEngine.GetConnection();
                    SqlCommand cmd = new SqlCommand("PayPalTransactionResponse_Select", conn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add(new SqlParameter("@TransactionID", id));

                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        if (!reader.Read())
                            entity = null;
                        else
                            entity = new PayPalTransactionResponse(reader);
                        reader.Close();
                    }
                    scope.Complete();
                }
                return entity;
            }
            finally
            {
                DatabaseManager.DatabaseEngine.ReleaseConnection();
            }
        }
 public PayPalTransactionResponse Clone()
 {
     PayPalTransactionResponse copy = new PayPalTransactionResponse();
     copy.transactionID = transactionID;
     copy.txn_id = txn_id;
     copy.txn_type = txn_type;
     copy.auth_amount = auth_amount;
     copy.auth_id = auth_id;
     copy.auth_exp = auth_exp;
     copy.auth_status = auth_status;
     copy.mc_gross_x = mc_gross_x;
     copy.mc_handling_x = mc_handling_x;
     copy.num_cart_items = num_cart_items;
     copy.parent_txn_id = parent_txn_id;
     copy.payment_date = payment_date;
     copy.payment_status = payment_status;
     copy.payment_type = payment_type;
     copy.pending_reason = pending_reason;
     copy.reason_code = reason_code;
     copy.remaining_settle = remaining_settle;
     copy.transaction_entity = transaction_entity;
     copy.invoice = invoice;
     copy.memo = memo;
     copy.tax = tax;
     copy.business = business;
     copy.item_name = item_name;
     copy.item_number = item_number;
     copy.quantity = quantity;
     copy.receiver_email = receiver_email;
     copy.receiver_id = receiver_id;
     copy.address_city = address_city;
     copy.address_country = address_country;
     copy.address_country_code = address_country_code;
     copy.address_name = address_name;
     copy.address_state = address_state;
     copy.address_status = address_status;
     copy.address_street = address_street;
     copy.address_zip = address_zip;
     copy.first_name = first_name;
     copy.last_name = last_name;
     copy.payer_id = payer_id;
     copy.payer_status = payer_status;
     copy.residence_country = residence_country;
     copy.exchange_rate = exchange_rate;
     copy.mc_fee = mc_fee;
     copy.mc_gross = mc_gross;
     copy.mc_handlingamount = mc_handlingamount;
     copy.mc_shippingamount = mc_shippingamount;
     copy.payment_fee = payment_fee;
     copy.payment_gross = payment_gross;
     copy.settle_amount = settle_amount;
     copy.settle_currency = settle_currency;
     copy.subscr_date = subscr_date;
     copy.subscr_effective = subscr_effective;
     copy.period1 = period1;
     copy.period2 = period2;
     copy.period3 = period3;
     copy.amount1 = amount1;
     copy.amount2 = amount2;
     copy.amount3 = amount3;
     copy.mc_amount1 = mc_amount1;
     copy.mc_amount2 = mc_amount2;
     copy.mc_amount3 = mc_amount3;
     copy.mc_currency = mc_currency;
     copy.recurring = recurring;
     copy.reattempt = reattempt;
     copy.retry_at = retry_at;
     copy.recur_times = recur_times;
     copy.username = username;
     copy.password = password;
     copy.subscr_id = subscr_id;
     copy.custom = custom;
     return copy;
 }