Example #1
0
        public static Boolean Save(StairSupplies.Payments.Transactions.Item item)
        {
            MySqlConnection cn  = null;
            MySqlCommand    cmd = null;

            try
            {
                String transactionApproved = "0";
                String transactionError    = "0";

                if (item.Approved)
                {
                    transactionApproved = "1";
                }
                else
                {
                    transactionError = "1";
                }

                PeakeyTools.Database.MySQL.OpenConnection(ref cn, ref cmd);
                cmd.CommandText = @"
INSERT INTO TblPaymentTransactions
(
	OrderID,
	OrderVersionID,
	EmployeeID,
	ProcessedDate,
	Transaction_Approved,
	Transaction_Error
)
VALUES
(
	@OrderID,
	@OrderVersionID,
	@EmployeeID,
	@ProcessedDate,
	@Transaction_Approved,
	@Transaction_Error
)
";

                PeakeyTools.Database.MySQL.AddParameter(cmd, "@OrderID", MySqlDbType.Int32, item.OrderID);
                PeakeyTools.Database.MySQL.AddParameter(cmd, "@OrderVersionID", MySqlDbType.Int32, item.OrderVersionID);
                PeakeyTools.Database.MySQL.AddParameter(cmd, "@EmployeeID", MySqlDbType.Int32, item.EmployeeID);
                PeakeyTools.Database.MySQL.AddParameter(cmd, "@ProcessedDate", MySqlDbType.DateTime, item.ProcessedDate);
                PeakeyTools.Database.MySQL.AddParameter(cmd, "@Transaction_Approved", MySqlDbType.Bit, transactionApproved);
                PeakeyTools.Database.MySQL.AddParameter(cmd, "@Transaction_Error", MySqlDbType.Bit, transactionError);

                PeakeyTools.Database.MySQL.TrimCommandText(cmd);
                cmd.ExecuteNonQuery();
                return(true);
            }
            catch (Exception ex)
            {
                PeakeyTools.Api.Log(PeakeyTools.Api.ApiName.payeezy, "Could not Save payment transaction.", ex, "EXCEPTION");
                throw new Exception("Could not Save payment transaction", ex);
            }
            finally
            {
                PeakeyTools.Database.MySQL.CleanUp(cn, cmd, null);
            }
        }
Example #2
0
            public static String SubmitPaymentTransaction(TransactionData transactionData)
            {
                String response = "";

                try
                {
                    StringBuilder stringBuilder = new StringBuilder();

                    using (StringWriter stringWriter = new StringWriter(stringBuilder))
                    {
                        using (XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter))
                        {
                            DataTable billingInformation = StairSupplies.Database.TblOrdersBOM.LoadBillingInformation(transactionData.orderID);
                            xmlWriter.Formatting = Formatting.Indented;

                            xmlWriter.WriteStartElement("Transaction");
                            xmlWriter.WriteElementString("ExactID", StairSupplies.API.Payeezy.GatewayID);
                            xmlWriter.WriteElementString("Password", StairSupplies.API.Payeezy.GatewayPassword);
                            xmlWriter.WriteElementString("Transaction_Type", "00");
                            xmlWriter.WriteElementString("DollarAmount", transactionData.dollarAmount.ToString("F"));
                            xmlWriter.WriteElementString("Expiry_Date", transactionData.expirationDate);
                            xmlWriter.WriteElementString("CardHoldersName", transactionData.cardHoldersName.Replace("%20", " "));
                            xmlWriter.WriteElementString("Card_Number", transactionData.cardNumber);
                            xmlWriter.WriteElementString("CVDCode", transactionData.securityCode);
                            xmlWriter.WriteElementString("CVD_Presence_Ind", "1");                             // 1 = Value provided by Cardholder
                            xmlWriter.WriteElementString("Reference_No", transactionData.orderID.ToString());

                            xmlWriter.WriteStartElement("Address");
                            if (billingInformation.Rows.Count > 0)
                            {
                                String billingAddress1    = "";
                                String billingAddress2    = "";
                                String billingCity        = "";
                                String billingState       = "";
                                String billingPostalCode  = "";
                                String billingCountryCode = "";
                                String billingPhoneNumber = "";

                                billingAddress1  = PeakeyTools.Database.MySQL.NullString(billingInformation.Rows[0]["BillAddress1"].ToString());
                                billingAddress2  = PeakeyTools.Database.MySQL.NullString(billingInformation.Rows[0]["BillAddress2"].ToString());
                                billingAddress2 += PeakeyTools.Database.MySQL.NullString(billingInformation.Rows[0]["BillAddress3"].ToString());

                                billingCity        = PeakeyTools.Database.MySQL.NullString(billingInformation.Rows[0]["BillCity"].ToString());
                                billingState       = PeakeyTools.Database.MySQL.NullString(billingInformation.Rows[0]["BillState"].ToString());
                                billingPostalCode  = PeakeyTools.Database.MySQL.NullString(billingInformation.Rows[0]["BillPostalCode"].ToString());
                                billingCountryCode = PeakeyTools.Database.MySQL.NullString(billingInformation.Rows[0]["BillCountryCode"].ToString());
                                billingPhoneNumber = PeakeyTools.Database.MySQL.NullString(billingInformation.Rows[0]["BillPhoneNumber"].ToString());

                                xmlWriter.WriteElementString("Address1", billingAddress1);
                                xmlWriter.WriteElementString("Address2", billingAddress2);
                                xmlWriter.WriteElementString("City", billingCity);
                                xmlWriter.WriteElementString("State", billingState);
                                xmlWriter.WriteElementString("Zip", billingPostalCode);
                                xmlWriter.WriteElementString("CountryCode", billingCountryCode);
                                xmlWriter.WriteElementString("PhoneNumber", billingPhoneNumber);
                                if (billingPhoneNumber != "")                                 // PhoneType is required if phone # is provided
                                {
                                    xmlWriter.WriteElementString("PhoneType", "H");           // H = Home; W = Work; D = Day; N = Night
                                }
                            }

                            xmlWriter.WriteEndElement();
                            xmlWriter.WriteEndElement();
                        }
                    }

                    StairSupplies.Payments.Transactions.Payeezy.Item paymentTransactionPayeezy = new StairSupplies.Payments.Transactions.Payeezy.Item();
                    response = Submit(stringBuilder);
                    paymentTransactionPayeezy = ParseXML(response);
                    paymentTransactionPayeezy.TransactionType = "payment";

                    // Save Payment Transaction item to database
                    StairSupplies.Payments.Transactions.Item paymentTransaction = new StairSupplies.Payments.Transactions.Item();
                    paymentTransaction.OrderID        = transactionData.orderID;
                    paymentTransaction.OrderVersionID = transactionData.orderVersionID;
                    paymentTransaction.ProcessedDate  = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss");
                    paymentTransaction.EmployeeID     = transactionData.employeeID;
                    if (paymentTransactionPayeezy.Approved)
                    {
                        paymentTransaction.Approved = true;
                    }
                    if (!paymentTransaction.Save())
                    {
                        PeakeyTools.Api.Log(PeakeyTools.Api.ApiName.payeezy, "Could not save Payment Transaction to database for payment. [OrderID]: " + transactionData.orderID + " [OrderVersionID]: " + transactionData.orderVersionID + " [CardHoldersName]: " + transactionData.cardHoldersName + " [Amount]: " + transactionData.dollarAmount, "EXCEPTION");
                        return(PeakeyTools.Api.ToJSON(false, true, "Could not save Payment Transaction to database for payment."));
                    }

                    // Save Payeezy Payment Transaction item to database
                    DataTable dt = StairSupplies.Payments.Transactions.Load_By_Order_ID_And_Processed_Date(transactionData.orderID, paymentTransaction.ProcessedDate);
                    if (dt.Rows.Count > 0)                     // Find the PaymentTransactionID value from Payment Transaction table
                    {
                        paymentTransactionPayeezy.PaymentTransactionID = Int32.Parse(dt.Rows[0]["PaymentTransactionID"].ToString());
                        if (!paymentTransactionPayeezy.Save())
                        {
                            PeakeyTools.Api.Log(PeakeyTools.Api.ApiName.payeezy, "Could not save Payeezy Payment Transaction to database for payment. [OrderID]: " + transactionData.orderID + " [OrderVersionID]: " + transactionData.orderVersionID + " [CardHoldersName]: " + transactionData.cardHoldersName + " [Amount]: " + transactionData.dollarAmount, "EXCEPTION");
                            return(PeakeyTools.Api.ToJSON(false, true, "Could not save Payeezy Payment Transaction to database for payment."));
                        }
                    }

                    // Was the payment successful?
                    if (paymentTransactionPayeezy.Approved)
                    {
                        return(PeakeyTools.Api.ToJSON(true, false, "Credit card successfully processed."));
                    }

                    PeakeyTools.Api.Log(PeakeyTools.Api.ApiName.payeezy, "Failed to process credit card. [Reason]: " + paymentTransactionPayeezy.BankMessage + " [OrderID]: " + transactionData.orderID + " [Full Response]: " + response, "FAILURE");
                    return(PeakeyTools.Api.ToJSON(false, false, "Failed to process credit card (" + paymentTransactionPayeezy.BankMessage + ")."));
                }
                catch (Exception ex)
                {
                    PeakeyTools.Api.Log(PeakeyTools.Api.ApiName.payeezy, "An error has occurred while attempting to submit a Payeezy payment. [OrderID]: " + transactionData.orderID + " [Full Response]: " + response, ex, "EXCEPTION");
                    return(PeakeyTools.Api.ToJSON(false, true, "An error has occurred while attempting to submit a payment. " + ex.Message));
                }
            }
Example #3
0
            public static dynamic IssueRefund(Int32 paymentTransactionPayeezyID, Double dollarAmount, Int32 orderID, Int32 orderVersionID, Int32 employeeID)
            {
                String response = "";

                try
                {
                    StringBuilder stringBuilder    = new StringBuilder();
                    String        authorizationNum = "";

                    // Retrieve needed data from record ID
                    DataTable payeezyTransaction = StairSupplies.Payments.Transactions.Payeezy.Load(paymentTransactionPayeezyID);
                    if (payeezyTransaction.Rows.Count == 0)
                    {
                        return(PeakeyTools.Api.ToDynamic(false, true, "Could not load Payeezy transaction by ID."));
                    }

                    authorizationNum = PeakeyTools.Database.MySQL.NullString(payeezyTransaction.Rows[0]["Authorization_Num"].ToString());

                    using (StringWriter stringWriter = new StringWriter(stringBuilder))
                    {
                        using (XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter))
                        {
                            xmlWriter.Formatting = Formatting.Indented;

                            xmlWriter.WriteStartElement("Transaction");
                            xmlWriter.WriteElementString("ExactID", StairSupplies.API.Payeezy.GatewayID);
                            xmlWriter.WriteElementString("Password", StairSupplies.API.Payeezy.GatewayPassword);
                            xmlWriter.WriteElementString("Transaction_Type", "34");
                            xmlWriter.WriteElementString("Transaction_Tag", PeakeyTools.Database.MySQL.NullString(payeezyTransaction.Rows[0]["Transaction_Tag"].ToString()));
                            xmlWriter.WriteElementString("DollarAmount", dollarAmount.ToString("F"));
                            xmlWriter.WriteElementString("Authorization_Num", authorizationNum);

                            xmlWriter.WriteEndElement();
                        }
                    }

                    StairSupplies.Payments.Transactions.Payeezy.Item paymentTransactionPayeezy = new StairSupplies.Payments.Transactions.Payeezy.Item();
                    response = Submit(stringBuilder);
                    paymentTransactionPayeezy = ParseXML(response);
                    paymentTransactionPayeezy.TransactionType = "refund";
                    paymentTransactionPayeezy.PaymentTransactionReferenceID = paymentTransactionPayeezyID;

                    // Save Payment Transaction item to database
                    StairSupplies.Payments.Transactions.Item paymentTransaction = new StairSupplies.Payments.Transactions.Item();
                    paymentTransaction.OrderID        = orderID;
                    paymentTransaction.OrderVersionID = orderVersionID;
                    paymentTransaction.ProcessedDate  = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss");
                    paymentTransaction.EmployeeID     = employeeID;
                    if (paymentTransactionPayeezy.Approved)
                    {
                        paymentTransaction.Approved = true;
                    }
                    if (!paymentTransaction.Save())
                    {
                        PeakeyTools.Api.Log(PeakeyTools.Api.ApiName.payeezy, "Could not save Payment Transaction to database for refund. [OrderID]: " + orderID + " [OrderVersionID]: " + orderVersionID + " [AuthorizationNum]: " + authorizationNum + " [Amount]: " + dollarAmount, "EXCEPTION");
                        return(PeakeyTools.Api.ToDynamic(false, true, "Could not save Payment Transaction to database for refund."));
                    }

                    // Save Payeezy Payment Transaction item to database
                    DataTable dt = StairSupplies.Payments.Transactions.Load_By_Order_ID_And_Processed_Date(orderID, paymentTransaction.ProcessedDate);
                    if (dt.Rows.Count > 0) // Find the PaymentTransactionID value from Payment Transaction table
                    {
                        paymentTransactionPayeezy.PaymentTransactionID = Int32.Parse(dt.Rows[0]["PaymentTransactionID"].ToString());
                        if (!paymentTransactionPayeezy.Save())
                        {
                            PeakeyTools.Api.Log(PeakeyTools.Api.ApiName.payeezy, "Could not save Payeezy Payment Transaction to database for refund. [OrderID]: " + orderID + " [OrderVersionID]: " + orderVersionID + " [AuthorizationNum]: " + authorizationNum + " [Amount]: " + dollarAmount, "EXCEPTION");
                            return(PeakeyTools.Api.ToDynamic(false, true, "Could not save Payeezy Payment Transaction to database for refund."));
                        }
                    }

                    // Was the payment successful?
                    if (paymentTransactionPayeezy.Approved)
                    {
                        return(PeakeyTools.Api.ToDynamic(true, false, "Refund successfully processed."));
                    }

                    PeakeyTools.Api.Log(PeakeyTools.Api.ApiName.payeezy, "Failed to refund credit card. [Reason]: " + paymentTransactionPayeezy.BankMessage + " [OrderID]: " + orderID + " [Full Response]: " + response, "EXCEPTION");
                    return(PeakeyTools.Api.ToDynamic(false, false, "Failed to refund credit card (" + paymentTransactionPayeezy.BankMessage + ")."));
                }
                catch (Exception ex)
                {
                    PeakeyTools.Api.Log(PeakeyTools.Api.ApiName.payeezy, "An error has occurred while attempting to refund a transaction. [OrderID]: " + orderID + " [Full Response]: " + response, ex, "EXCEPTION");
                    return(PeakeyTools.Api.ToDynamic(false, true, "An error has occurred while attempting to refund a transaction. " + ex.Message));
                }
            }