public void RunPaymentQueue() { int resellerId = SecurityContext.User.UserId; // 1. load unpaid invoices List <Invoice> invoices = InvoiceController.GetUnpaidInvoices(resellerId); // TRACE TaskManager.Write("Running payment queue"); TaskManager.WriteParameter("Items found", invoices.Count); // 2. load payment profile for each customer foreach (Invoice invoice in invoices) { try { // load payment profile CheckoutDetails details = StorehouseController.GetPaymentProfileInternally(invoice.ContractId); // if (details != null) { // TRACE TaskManager.Write("Trying to submit payment"); TaskManager.WriteParameter("InvoiceID", invoice.InvoiceId); // 3. submit payment for each invoice if profile exists CheckoutResult result = PaymentGatewayController.CheckOut(invoice.ContractId, invoice.InvoiceId, PaymentMethod.CREDIT_CARD, details); // ERROR if (!result.Succeed) { TaskManager.WriteError("Payment failed"); TaskManager.WriteParameter("Result code", result.StatusCode); continue; } // OK TaskManager.Write("Payment OK"); } } catch (Exception ex) { TaskManager.WriteError(ex, "Payment failed"); } } }
public static CheckoutResult CompleteCheckout(string contractId, int invoiceId, string methodName, CheckoutDetails details) { // return(PaymentGatewayController.CheckOut(contractId, invoiceId, methodName, details)); }
public void PickupReceivedTransactions() { TaskManager.Write("Start looking for transactions submitted"); // List <HandlerResponse> transactions = ServiceHandlerController.GetServiceHandlersResponsesByReseller(SecurityContext.User.UserId); // if (transactions.Count > 0) { XmlDocument xmldoc = new XmlDocument(); XmlElement root = xmldoc.CreateElement("Result"); XmlElement succeedNode = xmldoc.CreateElement("Succeed"); XmlElement failedNode = xmldoc.CreateElement("Failed"); root.AppendChild(succeedNode); root.AppendChild(failedNode); // List <HandlerResponse> succeedItems = new List <HandlerResponse>(); List <HandlerResponse> failedItems = new List <HandlerResponse>(); // TaskManager.Write("Found {0} transactions pending", transactions.Count.ToString()); foreach (HandlerResponse transaction in transactions) { XmlElement responseNode = xmldoc.CreateElement("Response"); responseNode.SetAttribute("ID", Convert.ToString(transaction.ResponseId)); // try { CheckoutDetails details = new CheckoutDetails(); // string[] dataPairs = transaction.TextResponse.Split('&'); foreach (string dataPair in dataPairs) { string[] data = dataPair.Split('='); if (data.Length >= 2) { details[data[0]] = data[1]; } } // CheckoutResult result = PaymentGatewayController.CheckOut(transaction.ContractId, transaction.InvoiceId, transaction.MethodName, details); // if (result.Succeed) { succeedNode.AppendChild(responseNode); succeedItems.Add(transaction); } else { responseNode.SetAttribute("Error", result.StatusCode); failedNode.AppendChild(responseNode); // transaction.ErrorMessage = result.StatusCode; failedItems.Add(transaction); } } catch (Exception ex) { // if (!failedItems.Contains(transaction)) { responseNode.SetAttribute("Error", ex.StackTrace); failedNode.AppendChild(responseNode); // transaction.ErrorMessage = ex.StackTrace; failedItems.Add(transaction); } // TaskManager.WriteError(ex); } } // peform transactions update ServiceHandlerController.UpdateServiceHandlersResponses(SecurityContext.User.UserId, root.InnerXml); } else { TaskManager.Write("No transactions found"); } TaskManager.Write("End looking for transactions submitted"); }