public void TestReadAllIncoming() { createValidPayment(); createValidPayment(); createValidPayment(); IParty commissioner = new Supplier("Lonely Tree", "", SupplierType.Cruise, dataAccessFacadeStub); Payment p1 = createValidPayment(); p1.Note = "Moved to Lonely Tree1"; p1.Payee = validPayer; p1.Payer = validPayee; Payment p2 = createValidPayment(); p2.Note = "Moved to Lonely Tree2"; p2.Payee = validPayer; p2.Payer = validPayee; PaymentCollection paymentCollection = new PaymentCollection(dataAccessFacadeStub); List <Payment> expectedPayments = new List <Payment>() { p1, p2 }; List <Payment> actualPayments = paymentCollection.ReadAllIncoming(); for (int i = 0; i < expectedPayments.Count; i++) { Assert.AreEqual(expectedPayments[i].Note, actualPayments[i].Note); Assert.AreEqual(expectedPayments[i].Payee.Name, actualPayments[i].Payee.Name); Assert.AreEqual(expectedPayments[i].Payer.Name, actualPayments[i].Payer.Name); } }
private Payment FindPayPalPayment(int paypalGatewayId, PaymentCollection orderPayments, string transactionId) { //FIND THE MOST RECENT PAYMENT THAT MATCHES ONE OF THE GIVEN TRANSACTIONID if (paypalGatewayId > 0) { int i = (orderPayments.Count - 1); while (i >= 0) { Payment payment = orderPayments[i]; if ((payment.PaymentMethod != null) && (payment.PaymentMethod.PaymentGatewayId == paypalGatewayId)) { //THIS IS A PAYPAL PAYMENT, CHECK THE TRANSACTIONS foreach (Transaction transaction in payment.Transactions) { if (transaction.ProviderTransactionId == transactionId) { return(payment); } } } i--; } } return(null); }
public void TestReadAllArchived() { createValidPayment(); createValidPayment(); createValidPayment(); Payment p1 = createValidPayment(); p1.Note = "Archived1"; p1.Archived = true; Payment p2 = createValidPayment(); p2.Note = "Archived2"; p2.Archived = true; PaymentCollection paymentCollection = new PaymentCollection(dataAccessFacadeStub); List <Payment> expectedPayments = new List <Payment>() { p1, p2 }; List <Payment> actualPayments = paymentCollection.ReadAllArchived(); for (int i = 0; i < expectedPayments.Count; i++) { Assert.AreEqual(expectedPayments[i].Note, actualPayments[i].Note); } }
public void TestReadAllOutgoing() { Payment p1 = createValidPayment(); p1.Note = "Outgoing1"; Payment p2 = createValidPayment(); p1.Note = "Outgoing2"; Payment p3 = createValidPayment(); p1.Note = "Outgoing3"; PaymentCollection paymentCollection = new PaymentCollection(dataAccessFacadeStub); List <Payment> expectedPayments = new List <Payment>() { p1, p2, p3 }; List <Payment> actualPayments = paymentCollection.ReadAllOutgoing(); for (int i = 0; i < expectedPayments.Count; i++) { Assert.AreEqual(expectedPayments[i].Note, actualPayments[i].Note); Assert.AreEqual(expectedPayments[i].Payee.Name, actualPayments[i].Payee.Name); Assert.AreEqual(expectedPayments[i].Payer.Name, actualPayments[i].Payer.Name); } }
public PaymentCollection GetAllPaymentCollection() { IDBManager dbm = new DBManager(); PaymentCollection cols = new PaymentCollection(); try { IDataReader reader = dbm.ExecuteReader(CommandType.StoredProcedure, "SelectPaymentsAll"); while (reader.Read()) { Payment PAY = new Payment(); PAY.PaymentID = Int32.Parse(reader["PaymentID"].ToString()); PAY.InvoiceID = Int32.Parse(reader["InvoiceID"].ToString()); PAY.PaymentType = reader["PaymentType"].ToString(); PAY.PaymentDate = DateTime.Parse(reader["PaymentDate"].ToString()); PAY.Amount = decimal.Parse(reader["Amount"].ToString()); PAY.Comments = reader["Comments "].ToString(); PAY.ModifiedDate = DateTime.Parse(reader["ModifiedDate"].ToString()); PAY.CheckNumber = reader["CheckNumber"].ToString(); cols.Add(PAY); } } catch (Exception ex) { log.Write(ex.Message, "PaymentCollection"); throw (ex); } finally { dbm.Dispose(); } return(cols); }
public PaymentCollection FetchAll() { PaymentCollection coll = new PaymentCollection(); Query qry = new Query(Payment.Schema); coll.LoadAndCloseReader(qry.ExecuteReader()); return coll; }
private void LoadStdPayments() { if (stop == true) { gridTuitionPay.Rows.Count = 1; return; } if (gridTuition.Rows.Count == 1) { partId = 0; } else { partId = Int32.Parse(gridTuition[gridTuition.RowSel, 8].ToString()); } loadPayments = new PaymentCollection(); loadPayments.LoadPaymentsWithPartialIdFromDb(partId); gridTuitionPay.Rows.Count = 1; foreach (var popPartPay in loadPayments.pubPayCollect) { gridTuitionPay.Rows.Count++; gridTuitionPay[gridTuitionPay.Rows.Count - 1, 1] = popPartPay.Payment_Number; gridTuitionPay[gridTuitionPay.Rows.Count - 1, 2] = popPartPay.Payment_Paid; gridTuitionPay[gridTuitionPay.Rows.Count - 1, 3] = popPartPay.Payment_DatePaid; } }
public ActionResult AddPayment(PaymentCollection model) { var payment = new Payment { PatientAddress = model.Payment.PatientAddress, PaymentDate = DateTime.Now, InvoiceRefNo = model.Payment.InvoiceRefNo, PsychologistId = model.Payment.PsychologistId, PatientId = model.Payment.PatientId, ServiceRecived = model.Payment.ServiceRecived, HoursOfService = model.Payment.HoursOfService, ServiceAmount = model.Payment.ServiceAmount, PaidbyMedicalAid = model.Payment.PaidbyMedicalAid, PayByCash = model.Payment.PayByCash, TotalDue = model.Payment.TotalDue, PatientName = db.Patients.FirstOrDefault(d => d.Id == model.Payment.PatientId).FullName, PatientEmail = db.Patients.FirstOrDefault(d => d.Id == model.Payment.PatientId).EmailAddress, PatientGender = db.Patients.FirstOrDefault(d => d.Id == model.Payment.PatientId).Gender, PatientNumber = db.Patients.FirstOrDefault(d => d.Id == model.Payment.PatientId).Contact, DateOfBirth = db.Patients.FirstOrDefault(d => d.Id == model.Payment.PatientId).DateOfBirth, PsychologistContact = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PsychologistId).ContactNo, PsychologistName = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PsychologistId).FullName, PsychologistSpecialist = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PsychologistId).Specialization, //CentreContact = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PsychologistId).Centre.Contact, //CentrLocation = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PsychologistId).Centre.Location, //CenterName = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PatientId).Centre.Name, }; db.Payments.Add(payment); db.SaveChanges(); return(RedirectToAction("ListOfPayment")); }
public ActionResult AddPayment() { var collection = new PaymentCollection { Payment = new Payment(), Patients = db.Patients.Where(c => c.CompletedStatus == true).Where(c => c.IsPaid == false).ToList(), }; return(View(collection)); }
public ActionResult AddPayment() { var collection = new PaymentCollection { Payment = new Payment(), Patients = db.Patients.ToList(), Psychologists = db.Psychologists.ToList(), }; return(View(collection)); }
public void Initialize() { dataAccessFacadeStub = new DataAccessFacadeStub(); paymentCollection = new PaymentCollection(dataAccessFacadeStub); validDueDate = new DateTime(2010, 10, 10); validDueAmount = 1m; validPayer = new Customer(CustomerType.Bureau, "", "Lonely Tree", dataAccessFacadeStub); validPayee = new Supplier("Galasam", "", SupplierType.Cruise, dataAccessFacadeStub); validType = PaymentType.Balance; validSale = "VF Jan"; validBooking = 2; }
/// <summary> /// Processes an order placed event /// </summary> /// <param name="order">The order that has been placed</param> /// <param name="payments">The payments that have been made against the order</param> public static void OrderPlaced(Order order, PaymentCollection payments) { order.Notes.Add(new OrderNote(order.OrderId, order.UserId, order.OrderDate, Properties.Resources.OrderPlaced, NoteType.SystemPrivate)); order.Notes.Save(); UpdateOrderStatus(StoreEvent.OrderPlaced, order); Hashtable parameters = new Hashtable(); parameters["order"] = order; parameters["customer"] = order.User; parameters["payments"] = payments; ProcessEmails(StoreEvent.OrderPlaced, parameters); }
private void LoadSelectedOldPartPay() { loadPayments = new PaymentCollection(); loadPayments.LoadPaymentsWithBillIdFromDb(selectedOldId); foreach (var popPartPay in loadPayments.pubPayCollect) { gridOldPay.Rows.Count++; gridOldPay[gridOldPay.Rows.Count - 1, 1] = popPartPay.Payment_Number; gridOldPay[gridOldPay.Rows.Count - 1, 2] = popPartPay.Payment_Paid; gridOldPay[gridOldPay.Rows.Count - 1, 3] = popPartPay.Payment_DatePaid; } }
private Payment FindPaypalPayment(int paypalMethodId, PaymentCollection orderPayments, PaymentStatus[] validStatuses) { //FIND THE MOST RECENT PAYMENT THAT MATCHES ONE OF THE GIVEN STATUS int i = (orderPayments.Count - 1); while (i >= 0) { Payment payment = orderPayments[i]; if ((payment.PaymentMethodId == paypalMethodId) && (Array.IndexOf(validStatuses, payment.PaymentStatus) > -1)) { return(payment); } i--; } return(null); }
protected override bool afterRemove(ResponseParser parser, bool soft = false) { bool result = base.afterRemove(parser, soft); if (result) { EquipmentBidCollection.ToList().ForEach(x => { x.remove(true); }); BidFilesCollection.ToList().ForEach(x => { x.remove(true); }); PaymentCollection.ToList().ForEach(x => { x.remove(true); }); equipmentBidCollection = null; bidFilesCollection = null; } return(result); }
protected void HandlerProcessPayment(object sender, EventArgs e) { var payments = new PaymentCollection(); var idGen = new IdGenerator(); var fine = new Fine(); fine.Find(_fineId); var payment = payments.Payment; payment.Amount = fine.FineAmount; payment.BorrowerId = fine.BorrowerId; payment.FineId = fine.FineId; payment.PaymentId = idGen.PaymentId(); payments.AddPayment(); Response.Redirect("BorrowerArea.aspx"); }
public bool DeletePayment(PaymentCollection col) { try { foreach (Payment PAY in col) { DeletePayment(PAY.PaymentID); } } catch (Exception ex) { log.Write(ex.Message, "DeletePayment"); throw (ex); } return(true); }
private void LoadStdOldPartPay() { if (gridOld.Rows.Count == 1) { oldId = 0; } else { oldId = Int32.Parse(gridOld[gridOld.RowSel, 7].ToString()); } loadPayments = new PaymentCollection(); loadPayments.LoadPaymentsWithBillIdFromDb(oldId); foreach (var popPartPay in loadPayments.pubPayCollect) { gridOldPay.Rows.Count++; gridOldPay[gridOldPay.Rows.Count - 1, 1] = popPartPay.Payment_Number; gridOldPay[gridOldPay.Rows.Count - 1, 2] = popPartPay.Payment_Paid; gridOldPay[gridOldPay.Rows.Count - 1, 3] = popPartPay.Payment_DatePaid; } }
public PaymentCollection GetAllPaymentDynamicCollection(string whereExpression, string orderBy) { IDBManager dbm = new DBManager(); PaymentCollection cols = new PaymentCollection(); try { dbm.CreateParameters(2); dbm.AddParameters(0, "@WhereCondition", whereExpression); dbm.AddParameters(1, "@OrderByExpression", orderBy); IDataReader reader = dbm.ExecuteReader(CommandType.StoredProcedure, "SelectPaymentsDynamic"); while (reader.Read()) { Payment PAY = new Payment(); PAY.PaymentID = Int32.Parse(reader["PaymentID"].ToString()); PAY.InvoiceID = Int32.Parse(reader["InvoiceID"].ToString()); PAY.PaymentType = reader["PaymentType"].ToString(); PAY.PaymentDate = DateTime.Parse(reader["PaymentDate"].ToString()); PAY.Amount = decimal.Parse(reader["Amount"].ToString()); PAY.Comments = reader["Comments "].ToString(); PAY.CheckNumber = reader["CheckNumber"].ToString(); PAY.ModifiedDate = DateTime.Parse(reader["ModifiedDate"].ToString()); cols.Add(PAY); } } catch (Exception ex) { log.Write(ex.Message, "GetAllPaymentDynamicCollection"); throw (ex); } finally { dbm.Dispose(); } return(cols); }
private void LoadSelectedPartPay() { loadPayments = new PaymentCollection(); loadPayments.LoadPaymentsWithPartialIdFromDb(selectedPartId); gridTuitionPay.Rows.Count = 1; foreach (var popPartPay in loadPayments.pubPayCollect) { gridTuitionPay.Rows.Count++; gridTuitionPay[gridTuitionPay.Rows.Count - 1, 1] = popPartPay.Payment_Number; gridTuitionPay[gridTuitionPay.Rows.Count - 1, 2] = popPartPay.Payment_Paid; gridTuitionPay[gridTuitionPay.Rows.Count - 1, 3] = popPartPay.Payment_DatePaid; } if (gridTuitionPay[gridTuitionPay.Rows.Count - 1, 1].ToString() != "Payment no.") { payNumber = Int32.Parse(gridTuitionPay[gridTuitionPay.Rows.Count - 1, 1].ToString()); } else { payNumber = 0; } }
public ActionResult AddPayment(PaymentCollection model) { var payment = new Payment { PaymentDate = DateTime.Now, InvoiceRefNo = model.Payment.InvoiceRefNo, PatientId = model.Payment.PatientId, ServiceRecived = model.Payment.ServiceRecived, HoursOfService = model.Payment.HoursOfService, ServiceAmount = model.Payment.ServiceAmount, PaidbyMedicalAid = model.Payment.PaidbyMedicalAid, PayByCash = model.Payment.PayByCash, TotalDue = model.Payment.TotalDue, PatientAddress = db.Patients.FirstOrDefault(d => d.Id == model.Payment.PatientId).Address, PatientName = db.Patients.FirstOrDefault(d => d.Id == model.Payment.PatientId).FullName, PatientEmail = db.Patients.FirstOrDefault(d => d.Id == model.Payment.PatientId).EmailAddress, PatientGender = db.Patients.FirstOrDefault(d => d.Id == model.Payment.PatientId).Gender, PatientNumber = db.Patients.FirstOrDefault(d => d.Id == model.Payment.PatientId).Contact, PsychologistContact = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PatientId).ContactNo, PsychologistName = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PatientId).FullName, PsychologistSpecialist = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PatientId).Specialization, //CentreContact = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PsychologistId).Centre.Contact, //CentrLocation = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PsychologistId).Centre.Location, //CenterName = db.Psychologists.FirstOrDefault(d => d.Id == model.Payment.PatientId).Centre.Name, }; var patient = db.Patients.Single(c => c.Id == model.Payment.PatientId); patient.IsPaid = true; db.Payments.Add(payment); db.SaveChanges(); string audiuserName = User.Identity.GetUserName(); AuditExtension.AddAudit(audiuserName, "Added Payment", "Payments"); return(RedirectToAction("ListOfPayment")); }
public void TestReadAllArchived() { createValidPayment(); createValidPayment(); createValidPayment(); Payment p1 = createValidPayment(); p1.Note = "Archived1"; p1.Archived = true; Payment p2 = createValidPayment(); p2.Note = "Archived2"; p2.Archived = true; PaymentCollection paymentCollection = new PaymentCollection(dataAccessFacadeStub); List<Payment> expectedPayments = new List<Payment>() { p1, p2 }; List<Payment> actualPayments = paymentCollection.ReadAllArchived(); for (int i = 0; i < expectedPayments.Count; i++) { Assert.AreEqual(expectedPayments[i].Note, actualPayments[i].Note); } }
public string CreatePayment(PaymentCollection collection) { Payment = collection.Ebanx; _request = new RestRequest("ws/request", Method.POST); return(JsonConvert.SerializeObject(Payment)); }
/// <summary> /// For testing against a specified DataAccessFacade /// </summary> /// <param name="dataAccessFacade"></param> public PaymentController(IDataAccessFacade dataAccessFacade) { this.dataAccessFacade = dataAccessFacade; paymentCollection = new PaymentCollection(dataAccessFacade); }
public PaymentController() { dataAccessFacade = DataAccessFacade.GetInstance(); paymentCollection = new PaymentCollection(dataAccessFacade); }
public string CreatePayment(PaymentCollection collection) { throw new NotImplementedException(); }
public PaymentCollection FetchByQuery(Query qry) { PaymentCollection coll = new PaymentCollection(); coll.LoadAndCloseReader(qry.ExecuteReader()); return coll; }
public PaymentCollection FetchByID(object PaymentsKey) { PaymentCollection coll = new PaymentCollection().Where("payments_key", PaymentsKey).Load(); return coll; }
public OnlineOrder CreateOrderObject(string orderNumber, MyHLShoppingCart shoppingCart, PaymentCollection payments) { return(China.OrderProvider.CreateOrderObject(orderNumber, shoppingCart, payments)); }
public MyHerbalife3.Ordering.ServiceProvider.OrderSvc.OnlineOrder CreateOrder(string orderNumber, MyHLShoppingCart shoppingCart, PaymentCollection payments) { return(OrderProvider.CreateOrder(orderNumber, shoppingCart, payments)); }
public void ProcessRequest(HttpContext context) { //GET REFERENCE TO REQUEST HttpRequest request = context.Request; HttpResponse response = context.Response; TraceContext trace = context.Trace; //RECORD FORM VALUES TO TRACE OUTPUT foreach (string key in request.Form) { context.Trace.Write(key + ":" + request.Form[key]); } //SETUP DEFAULT REDIRECT URL string redirectUrl = "~/Default.aspx"; //INITIALIZE THE PAYPAL PROVIDER PaymentGateway paypalGateway = PayPalProvider.GetPayPalPaymentGateway(true); if (paypalGateway == null) { response.Redirect(redirectUrl); } //LOOK FOR ORDER ID int orderId; string customValue = request.Form["custom"]; if (!String.IsNullOrEmpty(customValue)) { int index = customValue.IndexOf(":"); if (index > 0) { orderId = AlwaysConvert.ToInt(customValue.Substring(0, index)); } else { orderId = AlwaysConvert.ToInt(customValue); } } else { // TRY TO LOCATE ORDER ID AS QUERY STRING PARAMETER orderId = AlwaysConvert.ToInt(request.QueryString["OrderId"]); } //IF ORDER ID WAS NOT IN CUSTOM, SEE IF WE CAN FIND THE ORDER VIA TRANSACTION ID if (orderId == 0) { trace.Write("OrderId not found in custom field; lookup via transaction ID"); string parentTransactionId = IpnProcessor.GetFormValue(request.Form, "parent_txn_id"); if (!string.IsNullOrEmpty(parentTransactionId) && (paypalGateway != null)) { trace.Write("Query for parent transaction " + parentTransactionId); orderId = FindPayPalOrderId(paypalGateway.PaymentGatewayId, parentTransactionId); if (orderId != 0) { trace.Write("Order ID Found: " + orderId.ToString()); } } } //TRY TO LOAD ORDER Order order = OrderDataSource.Load(orderId); //IF ORDER LOAD FAILS, STOP PROCESSING AND REDIRECT if (order == null) { response.Redirect(redirectUrl); } //ORDER LOAD SUCCESSFUL, UPDATE DEFAULT REDIRECT URL redirectUrl = "~/Members/MyOrder.aspx?OrderId=" + orderId.ToString(); //IF GATEWAY NOT FOUND, STOP PROCESSING AND REDIRECT PayPalProvider provider = (PayPalProvider)paypalGateway.GetInstance(); //GET TRANSACTION AMOUNT LSDecimal curSignedPayment = AlwaysConvert.ToDecimal(request.Form["mc_gross"]); LSDecimal curPayment = Math.Abs((Decimal)curSignedPayment); context.Trace.Write("Transaction Amount is " + curPayment.ToString()); if (curPayment != 0) { //VERIFY PAYMENT NOTIFICATION WITH PAYPAL bool valid = provider.ValidateNotification(request.Form.ToString()); if (!valid) { response.Redirect(redirectUrl); } //VERIFY THE RECEIVER EMAIL string lowerReceiverEmail = AlwaysConvert.ToString(request.Form["receiver_email"]).ToLowerInvariant(); string lowerProviderAccount = provider.PayPalAccount.ToLowerInvariant(); if (lowerReceiverEmail != lowerProviderAccount) { context.Trace.Write("Receiver Email (" + lowerReceiverEmail + ") does not match Primary Account (" + lowerProviderAccount + ")"); response.Redirect(redirectUrl); } //CHECK WHETHER TRANSACTION IS ALREADY PRESENT IN DATABASE string paypalTransactionId = IpnProcessor.GetFormValue(request.Form, "txn_id"); string authTransactionId = IpnProcessor.GetFormValue(request.Form, "auth_id"); string paymentStatus = IpnProcessor.GetFormValue(request.Form, "payment_status").ToUpperInvariant(); string authStatus = IpnProcessor.GetFormValue(request.Form, "auth_status").ToUpperInvariant(); context.Trace.Write("Transaction ID Is " + paypalTransactionId); context.Trace.Write("Payment Status Is " + paymentStatus); context.Trace.Write("Auth Status Is " + authStatus); //CHECK FOR THIS PAYPAL TRANSACTION (MATCHING PROVIDER, PAYPAL TRANSACTION ID, AND PAYMENT STATUS) Payment payment = null; Transaction pendingTransaction = null; if (!string.IsNullOrEmpty(paypalTransactionId)) { TransactionCollection matchingTransactions = TransactionDataSource.LoadForProviderTransaction(paypalGateway.PaymentGatewayId, paypalTransactionId); foreach (Transaction tx in matchingTransactions) { //WHEN PAYMENT IS BY ECHECK, IPN ISSUES A PENDING TRANSACTION //SECOND IPN COMES FOR COMPLETED STATUS USING SAME TRANSACTION ID if ((tx.ResponseCode == "PENDING") && (paymentStatus != "PENDING")) { //WE HAVE TO GET THE TRANSACTION VIA THE PAYMENT OBJECT //OTHERWISE WE WILL HAVE PROBLEMS WITH DATA CONSISTENCY LATER payment = tx.Payment; foreach (Transaction ptx in payment.Transactions) { if (ptx.TransactionId == tx.TransactionId) { pendingTransaction = ptx; } } } else if ((tx.TransactionType != TransactionType.Void) && (paymentStatus == "VOIDED")) { //IF WE VOID AN AUTHORIZATION, THE VOID HAS THE SAME TXID //THE AUTHORIZATION WILL HAVE A BLANK RESPONSE CODE //THE VOID SHOULD HAVE A 'VOIDED' RESPONSE CODE //(THIS TRANSACTION IS NOT A MATCH AND SHOULD BE IGNORED) } else { //NO FURTHER PROCESSING, REDIR TO ORDER SCREEN context.Trace.Write("Transaction ID " + paypalTransactionId + " Already Exists in Database"); response.Redirect(redirectUrl); } } } Transaction transaction = null; PaymentMethod paypalMethod = PayPalProvider.GetPayPalPaymentMethod(true); PaymentCollection orderPayments = order.Payments; Transaction authTransaction = null; PaymentStatus[] validAuthStatuses = { PaymentStatus.Unprocessed, PaymentStatus.AuthorizationPending }; context.Trace.Write("Processing Payment Status: " + paymentStatus); switch (paymentStatus) { case "PENDING": //THIS IS A PENDING TRANSACTION, GET PENDING REASON AND FIND OUT IF IT IS AN ECHECK WAITING TO CLEAR string pendingReason = IpnProcessor.GetFormValue(request.Form, "pending_reason").ToLowerInvariant(); bool isPendingeCheck = (pendingReason == "echeck"); bool isPendingAuthorization = (pendingReason == "authorization"); context.Trace.Write("Pending Reason: " + pendingReason); context.Trace.Write("Is Pending eCheck: " + isPendingeCheck.ToString()); context.Trace.Write("Is Pending Authorization: " + isPendingAuthorization.ToString()); //FIND THE PAYPAL PAYMENT THAT IS UNPROCESSED OR PENDING AUTHORIZATION payment = FindPaypalPayment(paypalMethod.PaymentMethodId, orderPayments, validAuthStatuses); if (payment != null) { //SEE IF WE CAN FIND A PENDING PAYPAL TRANSACTION WITHOUT A TXID foreach (Transaction tx in payment.Transactions) { if ((tx.ResponseCode == "PENDING") && string.IsNullOrEmpty(tx.ProviderTransactionId)) { transaction = tx; } } } //IF WE DID NOT FIND AN EXISTING TRANSACTION, CREATE A NEW ONE if (transaction == null) { transaction = new Transaction(); } //UPDATE THE TRANSACTION VALUES transaction.TransactionType = (isPendingeCheck ? TransactionType.Capture : TransactionType.Authorize); transaction.PaymentGatewayId = paypalGateway.PaymentGatewayId; transaction.ProviderTransactionId = IpnProcessor.GetFormValue(request.Form, "txn_id"); transaction.TransactionDate = AlwaysConvert.ToDateTime(request.Form["payment_date"], DateTime.UtcNow).ToUniversalTime(); transaction.Amount = AlwaysConvert.ToDecimal(IpnProcessor.GetFormValue(request.Form, "mc_gross")); transaction.TransactionStatus = TransactionStatus.Successful; if (isPendingAuthorization) { //THIS IS AN EXPECTED RESPONSE, NO NEED TO SAVE THE REASON CODES transaction.ResponseMessage = string.Empty; transaction.ResponseCode = string.Empty; } else { transaction.ResponseMessage = pendingReason; transaction.ResponseCode = "PENDING"; } transaction.AuthorizationCode = IpnProcessor.GetFormValue(request.Form, "auth_id"); transaction.RemoteIP = IpnProcessor.GetFormValue(request.ServerVariables, "REMOTE_ADDR"); transaction.Referrer = IpnProcessor.GetFormValue(request.ServerVariables, "HTTP_REFERER"); //CREATE A PAYMENT IF AN EXISTING ONE WAS NOT FOUND if (payment == null) { payment = new Payment(); payment.OrderId = orderId; payment.PaymentMethodId = paypalMethod.PaymentMethodId; payment.PaymentMethodName = paypalMethod.Name; order.Payments.Add(payment); } //UPDATE PAYMENT DETAILS payment.ReferenceNumber = IpnProcessor.GetFormValue(request.Form, "payer_email"); payment.Amount = transaction.Amount; payment.PaymentDate = transaction.TransactionDate; if (isPendingAuthorization) { payment.PaymentStatus = PaymentStatus.Authorized; payment.PaymentStatusReason = string.Empty; } else { payment.PaymentStatus = (isPendingeCheck ? PaymentStatus.CapturePending : PaymentStatus.AuthorizationPending); payment.PaymentStatusReason = transaction.ResponseMessage; } //ADD IN TRANSACTION payment.Transactions.Add(transaction); break; case "COMPLETED": //IF THIS IS A CAPTURE FROM AN AUTHORIZATION, FIND THE AUTHORIZATION TRANSACTION //AND UPDATE THE STATUS ACCORDINGLY, DEPENDING ON WHETHER ADDITIONAL SETTLEMENT TRANSACTIONS REMAIN (INTREMSETTLE > 0) authTransaction = null; authTransactionId = IpnProcessor.GetFormValue(request.Form, "auth_id"); if (!string.IsNullOrEmpty(authTransactionId)) { TransactionCollection matchingTransactions = TransactionDataSource.LoadForProviderTransaction(paypalGateway.PaymentGatewayId, authTransactionId); //SHOULD ONLY BE ONE if (matchingTransactions.Count > 0) { authTransaction = matchingTransactions[0]; } } //IF PAYPAL IS RUNNING IN CAPTURE MODE, WE MAY HAVE A COMPLETED PAYMENT //WITH A PENDING OR UNPROCESSED PAYMENT ALREADY ASSOCIATED TO ORDER if (pendingTransaction == null) { //FIND THE PAYPAL PAYMENT THAT IS UNPROCESSED OR PENDING payment = FindPaypalPayment(paypalMethod.PaymentMethodId, orderPayments, validAuthStatuses); if (payment != null) { //SEE IF WE CAN FIND A PENDING PAYPAL TRANSACTION WITHOUT A TXID foreach (Transaction tx in payment.Transactions) { if ((tx.ResponseCode == "PENDING") && string.IsNullOrEmpty(tx.ProviderTransactionId)) { pendingTransaction = tx; } } } } //SEE IF THIS TRANSACTION WAS PENDING (SUCH AS A CHECK WAITING TO CLEAR) if (pendingTransaction != null) { //GET THE PENDING TRANSACTION AND PAYMENT payment = order.Payments[order.Payments.IndexOf(pendingTransaction.PaymentId)]; transaction = payment.Transactions[payment.Transactions.IndexOf(pendingTransaction.TransactionId)]; } else { //THIS IS NOT A PENDING TRANSACTION //LOCATE THE APPROPRIATE PAYMENT if (authTransaction != null) { payment = order.Payments[order.Payments.IndexOf(authTransaction.PaymentId)]; } else { //FIND THE PAYPAL PAYMENT THAT CAN BE CAPTURED PaymentStatus[] validCaptureStatuses = { PaymentStatus.Unprocessed, PaymentStatus.AuthorizationPending, PaymentStatus.Authorized, PaymentStatus.CaptureFailed, PaymentStatus.CapturePending }; payment = FindPaypalPayment(paypalMethod.PaymentMethodId, orderPayments, validCaptureStatuses); //CREATE A PAYMENT IF AN EXISTING ONE WAS NOT FOUND if (payment == null) { payment = new Payment(); payment.OrderId = orderId; payment.PaymentMethodId = paypalMethod.PaymentMethodId; payment.PaymentMethodName = paypalMethod.Name; order.Payments.Add(payment); } } //CREATE A NEW TRANSACTION RECORD transaction = new Transaction(); transaction.PaymentId = payment.PaymentId; } //UPDATE THE TRANSACTION DETAILS transaction.TransactionType = TransactionType.Capture; transaction.PaymentGatewayId = paypalGateway.PaymentGatewayId; transaction.TransactionDate = AlwaysConvert.ToDateTime(request.Form["payment_date"], DateTime.UtcNow).ToUniversalTime(); transaction.RemoteIP = IpnProcessor.GetFormValue(request.ServerVariables, "REMOTE_ADDR"); transaction.Referrer = IpnProcessor.GetFormValue(request.ServerVariables, "HTTP_REFERER"); transaction.TransactionStatus = TransactionStatus.Successful; transaction.ProviderTransactionId = IpnProcessor.GetFormValue(request.Form, "txn_id"); transaction.AuthorizationCode = IpnProcessor.GetFormValue(request.Form, "auth_id"); transaction.Amount = AlwaysConvert.ToDecimal(IpnProcessor.GetFormValue(request.Form, "mc_gross")); transaction.ResponseCode = paymentStatus; transaction.ResponseMessage = string.Empty; //HANDLE PARTIAL / FINAL CAPTURES int remainingSettle = AlwaysConvert.ToInt(IpnProcessor.GetFormValue(request.Form, "remaining_settle")); if (remainingSettle == 0) { //THIS IS A FINAL CAPTURE transaction.TransactionType = TransactionType.Capture; //SET PAYMENT AMOUNT TO SUM OF ALL CAPTURES LSDecimal totalCaptures = 0; foreach (Transaction tx in payment.Transactions) { if ((transaction.TransactionId != tx.TransactionId) && (tx.TransactionType == TransactionType.PartialCapture || tx.TransactionType == TransactionType.Capture)) { totalCaptures += tx.Amount; } } totalCaptures += transaction.Amount; payment.Amount = totalCaptures; } else { //THIS IS A PARTIAL CAPTURE transaction.TransactionType = TransactionType.PartialCapture; //LEAVE PAYMENT AMOUNT ALONE (AMOUNT OF AUTHORIZATION) } //UPDATE PAYMENT DETAILS payment.PaymentDate = transaction.TransactionDate; payment.PaymentStatus = (remainingSettle == 0) ? PaymentStatus.Captured : PaymentStatus.Authorized; payment.PaymentStatusReason = string.Empty; //ADD IN TRANSACTION IF NEEDED if (transaction.TransactionId == 0) { payment.Transactions.Add(transaction); } break; case "REFUNDED": case "REVERSED": //GET THE REFUND AMOUNT LSDecimal refundAmount = Math.Abs(AlwaysConvert.ToDecimal(IpnProcessor.GetFormValue(request.Form, "mc_gross"))); //TRY TO LOCATE THE CORRECT PAYMENT BASED ON CAPTURE TRANSACITON ID payment = FindPayPalPayment(paypalGateway.PaymentGatewayId, orderPayments, IpnProcessor.GetFormValue(request.Form, "parent_txn_id")); if (payment == null) { //SEE IF WE CAN FIND THE PAYMENT VIA AUTH TRANSACTION ID payment = FindPayPalPayment(paypalGateway.PaymentGatewayId, orderPayments, IpnProcessor.GetFormValue(request.Form, "auth_id")); } //CREATE A REFUND TRANSACTION transaction = new Transaction(); //CREATE A PAYMENT IF AN EXISTING ONE WAS NOT FOUND if (payment == null) { payment = new Payment(); payment.OrderId = orderId; payment.PaymentMethodId = paypalMethod.PaymentMethodId; payment.PaymentMethodName = paypalMethod.Name; payment.Amount = -1 * refundAmount; transaction.TransactionType = TransactionType.Refund; order.Payments.Add(payment); } else { if (payment.Amount == refundAmount) { //FULL REFUND transaction.TransactionType = TransactionType.Refund; payment.PaymentStatus = PaymentStatus.Refunded; } else { //PARTIAL REFUND transaction.TransactionType = TransactionType.PartialRefund; payment.Amount -= refundAmount; payment.PaymentStatus = PaymentStatus.Captured; } } transaction.PaymentGatewayId = paypalGateway.PaymentGatewayId; transaction.ProviderTransactionId = IpnProcessor.GetFormValue(request.Form, "txn_id"); transaction.TransactionDate = AlwaysConvert.ToDateTime(request.Form["payment_date"], DateTime.UtcNow).ToUniversalTime(); transaction.TransactionStatus = TransactionStatus.Successful; transaction.AuthorizationCode = IpnProcessor.GetFormValue(request.Form, "auth_id"); transaction.RemoteIP = IpnProcessor.GetFormValue(request.ServerVariables, "REMOTE_ADDR"); transaction.Referrer = IpnProcessor.GetFormValue(request.ServerVariables, "HTTP_REFERER"); transaction.Amount = refundAmount; string responseMessage = IpnProcessor.GetFormValue(request.Form, "reason_code"); if (responseMessage != "refund") { transaction.ResponseCode = paymentStatus; transaction.ResponseMessage = responseMessage; } //UPDATE PAYMENT DETAILS payment.PaymentDate = transaction.TransactionDate; payment.PaymentStatusReason = string.Empty; //ADD IN TRANSACTION payment.Transactions.Add(transaction); break; case "VOIDED": //SEE IF WE CAN FIND THE PAYMENT VIA AUTH TRANSACTION ID payment = FindPayPalPayment(paypalGateway.PaymentGatewayId, orderPayments, IpnProcessor.GetFormValue(request.Form, "auth_id")); //WE ONLY NEED TO CONTINUE IF A PAYMENT TO VOID WAS FOUND if (payment != null) { //PAYPAL DOES NOT SEND THE AMOUNT OF THE VOID //SO IF THIS PAYMENT WAS PARTIALLY CAPTURED, WE NEED TO KNOW HOW MUCH TO VOID LSDecimal remainingAuthorization = payment.Transactions.GetRemainingAuthorized(); if (remainingAuthorization > 0) { //CREATE A VOID TRANSACTION transaction = new Transaction(); transaction.TransactionType = TransactionType.Void; transaction.Amount = remainingAuthorization; transaction.PaymentGatewayId = paypalGateway.PaymentGatewayId; transaction.ProviderTransactionId = IpnProcessor.GetFormValue(request.Form, "txn_id"); transaction.TransactionDate = AlwaysConvert.ToDateTime(request.Form["payment_date"], DateTime.UtcNow).ToUniversalTime(); transaction.TransactionStatus = TransactionStatus.Successful; transaction.AuthorizationCode = IpnProcessor.GetFormValue(request.Form, "auth_id"); transaction.RemoteIP = IpnProcessor.GetFormValue(request.ServerVariables, "REMOTE_ADDR"); transaction.Referrer = IpnProcessor.GetFormValue(request.ServerVariables, "HTTP_REFERER"); //UPDATE PAYMENT DETAILS payment.PaymentDate = transaction.TransactionDate; payment.PaymentStatusReason = string.Empty; if (payment.Amount == remainingAuthorization) { //FULL VOID, CHANGE PAYMENT STATUS TO VOID payment.PaymentStatus = PaymentStatus.Void; } else { //PARTIAL VOID, REDUCE PAYMENT AMOUNT BY VOID payment.Amount -= remainingAuthorization; //PAYMENT HAS NO REMAINING AUTHORIZATION AND SO IT IS CAPTURED payment.PaymentStatus = PaymentStatus.Captured; } //ADD IN TRANSACTION payment.Transactions.Add(transaction); } } break; case "FAILED": //THIS IS A FAILED E-CHECK //PENDINGTRANSACTION SHOULD HAVE BEEN OBTAINED ABOVE if (payment != null && pendingTransaction != null) { pendingTransaction.TransactionStatus = TransactionStatus.Failed; //MAKE SURE TO CLEAR OUT PENDING RESPONSECODE pendingTransaction.ResponseCode = string.Empty; //GET THE CURRENT TRANSACTION DATE pendingTransaction.TransactionDate = AlwaysConvert.ToDateTime(request.Form["payment_date"], DateTime.UtcNow).ToUniversalTime(); //UPDATE PAYMENT DETAILS payment.PaymentDate = pendingTransaction.TransactionDate; payment.PaymentStatus = (IsVoidableFailure(payment) ? PaymentStatus.Void : PaymentStatus.CaptureFailed); payment.PaymentStatusReason = string.Empty; //SAVE PAYMENT (AND CHILD TRANSACTIONS) payment.Save(); } break; default: Logger.Warn("PayPal IPN transaction " + paypalTransactionId + " with a \"" + paymentStatus + "\" status was unhandled."); break; } //IF PAYMENT IS SET, SAVE UPDATES if (payment != null) { payment.Save(); } } response.Redirect(redirectUrl); }
public void TestReadAllIncoming() { createValidPayment(); createValidPayment(); createValidPayment(); IParty commissioner = new Supplier("Lonely Tree", "", SupplierType.Cruise, dataAccessFacadeStub); Payment p1 = createValidPayment(); p1.Note = "Moved to Lonely Tree1"; p1.Payee = validPayer; p1.Payer = validPayee; Payment p2 = createValidPayment(); p2.Note = "Moved to Lonely Tree2"; p2.Payee = validPayer; p2.Payer = validPayee; PaymentCollection paymentCollection = new PaymentCollection(dataAccessFacadeStub); List<Payment> expectedPayments = new List<Payment>() { p1, p2 }; List<Payment> actualPayments = paymentCollection.ReadAllIncoming(); for (int i = 0; i < expectedPayments.Count; i++) { Assert.AreEqual(expectedPayments[i].Note, actualPayments[i].Note); Assert.AreEqual(expectedPayments[i].Payee.Name, actualPayments[i].Payee.Name); Assert.AreEqual(expectedPayments[i].Payer.Name, actualPayments[i].Payer.Name); } }
public static ThreeDSecuredCreditCard Check3DSecuredEnrollment(PaymentCollection payments, string countryCode, string orderNumber, string distributorId, string locale, string rootUrl) { var threeDSecuredCard = new ThreeDSecuredCreditCard(); if (payments.Count == 0) { return(threeDSecuredCard); } // 3D Secured only allows 1 credit card var payment = payments[0]; var creditCardPayment = payment as CreditPayment_V01; if (creditCardPayment != null) { string cardNumber = creditCardPayment.Card.AccountNumber.Trim(); string cardType = CreditCard.CardTypeToHPSCardType(creditCardPayment.Card.IssuerAssociation); string cardExpirationMonth = creditCardPayment.Card.Expiration.Month.ToString(CultureInfo.InvariantCulture); string cardExpirationYear = creditCardPayment.Card.Expiration.Year.ToString(CultureInfo.InvariantCulture); string currencyCode = creditCardPayment.Currency; string amount = creditCardPayment.Amount.ToString(CultureInfo.InvariantCulture); string cvv = creditCardPayment.Card.CVV; // name on card string cardHolderName = creditCardPayment.Card.NameOnCard; string firstName = string.Empty; string lastName = string.Empty; if (!string.IsNullOrEmpty(cardHolderName) && cardHolderName.IndexOf(" ") > 0) { firstName = cardHolderName.Substring(0, cardHolderName.IndexOf(" ")); lastName = cardHolderName.Substring(cardHolderName.LastIndexOf(" ") + 1, cardHolderName.Length - cardHolderName.LastIndexOf(" ") - 1); } else { firstName = cardHolderName; lastName = cardHolderName; } //var request = new GetCyberSource3DEnrollmentRequest_V01 var request = new Check3DEnrollmentRequest_V01 { Amount = amount, CardNumber = cardNumber, CardType = cardType, ExpirationMonth = cardExpirationMonth, ExiprationYear = cardExpirationYear, CurrencyCode = currencyCode, CountryCode = countryCode, OrderNumber = orderNumber, CVV2 = cvv, FirstName = firstName, LastName = lastName, ClientRootUrl = rootUrl }; var proxy = ServiceClientProvider.GetOrderServiceProxy(); try { var response = proxy.Check3DEnrollment(new Check3DEnrollmentRequest1(request)).Check3DEnrollmentResult as Check3DEnrollmentResponse_V01; if (response != null) { threeDSecuredCard = response.threeDSecuredCreditCard; if (null != threeDSecuredCard) { Save3DPaymentAfterEnrollment(orderNumber, distributorId, locale, threeDSecuredCard); } else { LoggerHelper.Error(string.Format("3D Payment error when calling 3D Enrollment service. Order #:{0}. Error: 3D Enrollment service rturned NULL.", orderNumber)); } } } catch (Exception ex) { ex = new ApplicationException(string.Format("ThreeDPaymentProvider.Check3DSecuredEnrollment(...) method failed ", ex)); WebUtilities.LogServiceExceptionWithContext(ex, proxy); } finally { proxy.Close(); } } return(threeDSecuredCard); }
public void TestReadAllOutgoing() { Payment p1 = createValidPayment(); p1.Note = "Outgoing1"; Payment p2 = createValidPayment(); p1.Note = "Outgoing2"; Payment p3 = createValidPayment(); p1.Note = "Outgoing3"; PaymentCollection paymentCollection = new PaymentCollection(dataAccessFacadeStub); List<Payment> expectedPayments = new List<Payment>() { p1, p2, p3 }; List<Payment> actualPayments = paymentCollection.ReadAllOutgoing(); for (int i = 0; i < expectedPayments.Count; i++) { Assert.AreEqual(expectedPayments[i].Note, actualPayments[i].Note); Assert.AreEqual(expectedPayments[i].Payee.Name, actualPayments[i].Payee.Name); Assert.AreEqual(expectedPayments[i].Payer.Name, actualPayments[i].Payer.Name); } }
public PaymentCollection FetchByID(object Id) { PaymentCollection coll = new PaymentCollection().Where("ID", Id).Load(); return coll; }
public Cart(DataSet tessResults) { DataTableCollection tables = tessResults.Tables; if (tables["Contribution"].Rows.Count > 0) { Contributions = new ContributionCollection(tables["Contribution"]); } if (tables["LineItem"].Rows.Count > 0) { LineItems = new LineItemCollection(tables["LineItem"], tables["SubLineItem"]); } if (tables["SubLineItemFee"].Rows.Count > 0) { AppliedFees = new AppliedFeeCollection(tables["SubLineItemFee"]); } if (tables["Fee"].Rows.Count > 0) { FeeCategories = new FeeCategoryCollection(tables["Fee"]); } if (tables["PriceType"].Rows.Count > 0) { PriceTypes = new CartPriceTypeCollection(tables["PriceType"]); } if (tables["Payment"].Rows.Count > 0) { Payments = new PaymentCollection(tables["Payment"]); } if (tables["PackageLineItem"].Rows.Count > 0) { PackageLineItems = new PackageLineItemCollection(tables["PackageLineItem"], tables["PackageSubLineItem"]); } var result = (from o in tessResults.Tables["Order"].AsEnumerable() select new { SessionKey = o.Field<string>("sessionkey"), OrderId = o.Field<int?>("order_no"), AppealId = o.Field<int?>("appeal_no"), SourceId = o.Field<int?>("source_no"), ConstituentId = o.Field<int?>("customer_no"), Solicitor = o.Field<string>("solicitor"), ModeOfSaleId = o.Field<short?>("MOS"), Date = o.Field<DateTime?>("order_dt"), BatchId = o.Field<int?>("batch_no"), Class = o.Field<short?>("class"), AddressId = o.Field<int?>("address_no"), HoldUntilDate = o.Field<DateTime?>("hold_until_dt"), TransactionId = o.Field<int?>("transaction_no"), HoldAtBoxOffice = o.Field<string>("habo_ind"), Notes = o.Field<string>("notes"), BusinessUnit = o.Field<short?>("bu"), ShippingMethodId = o.Field<int?>("shipping_method"), ShippingMethodName = o.Field<string>("shipping_method_desc"), OrderTotal = o.Field<decimal?>("order_total"), OrderValue = o.Field<decimal?>("order_value"), Notes1 = o.Field<string>("notes1"), DbStatus = o.Field<short?>("db_status"), AmountToCharge = o.Field<decimal?>("amt_to_charge"), FirstSeatAddedTime = o.Field<DateTime?>("first_seat_added_dt"), AmountPaidToDate = o.Field<decimal?>("amt_paid_to_dt"), AmountPaidNow = o.Field<decimal?>("amt_paid_now"), BalanceToCharge = o.Field<decimal?>("balance_to_charge"), Subtotal = o.Field<decimal?>("SubTotal"), HandlingCharges = o.Field<decimal?>("HandlingCharges"), Custom1 = o.Field<string>("custom_1"), Custom2 = o.Field<string>("custom_2"), Custom3 = o.Field<string>("custom_3"), Custom4 = o.Field<string>("custom_4"), Custom5 = o.Field<string>("custom_5"), Custom6 = o.Field<string>("custom_6"), Custom7 = o.Field<string>("custom_7"), Custom8 = o.Field<string>("custom_8"), Custom9 = o.Field<string>("custom_9"), Custom0 = o.Field<string>("custom_0") }).Single(); SessionKey = result.SessionKey; OrderId = result.OrderId; AppealId = result.AppealId; SourceId = result.SourceId; ConstituentId = result.ConstituentId; Solicitor = result.Solicitor; ModeOfSaleId = result.ModeOfSaleId; Date = result.Date; BatchId = result.BatchId; Class = result.Class; AddressId = result.AddressId; HoldUntilDate = result.HoldUntilDate; TransactionId = result.TransactionId; HoldAtBoxOffice = ToBool(result.HoldAtBoxOffice); Notes = result.Notes; BusinessUnit = result.BusinessUnit; ShippingMethodId = result.ShippingMethodId; ShippingMethodName = result.ShippingMethodName; OrderTotal = result.OrderTotal; OrderValue = result.OrderValue; Notes1 = result.Notes1; DbStatus = result.DbStatus; AmountToCharge = result.AmountToCharge; FirstSeatAddedTime = result.FirstSeatAddedTime; AmountPaidToDate = result.AmountPaidToDate; AmountPaidNow = result.AmountPaidNow; BalanceToCharge = result.BalanceToCharge; Subtotal = result.Subtotal; HandlingCharges = result.HandlingCharges; Custom0 = result.Custom0; Custom1 = result.Custom1; Custom2 = result.Custom2; Custom3 = result.Custom3; Custom4 = result.Custom4; Custom5 = result.Custom5; Custom6 = result.Custom6; Custom7 = result.Custom7; Custom8 = result.Custom8; Custom9 = result.Custom9; }