Esempio n. 1
0
        public ActionResult DeleteConfirmed(int id)
        {
            PayPalListenerModel payPalListenerModel = db.PayPalListenerModels.Find(id);

            db.PayPalListenerModels.Remove(payPalListenerModel);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Esempio n. 2
0
 public ActionResult Edit([Bind(Include = "ID,_PayPalCheckoutInfo")] PayPalListenerModel payPalListenerModel)
 {
     if (ModelState.IsValid)
     {
         db.Entry(payPalListenerModel).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(payPalListenerModel));
 }
Esempio n. 3
0
        public ActionResult Create([Bind(Include = "ID,_PayPalCheckoutInfo")] PayPalListenerModel payPalListenerModel)
        {
            if (ModelState.IsValid)
            {
                db.PayPalListenerModels.Add(payPalListenerModel);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(payPalListenerModel));
        }
Esempio n. 4
0
        public bool ProcessReservationPayment(PayPalCheckoutInfo info, byte[] parameters)
        {
            var accepted = false;

            var model = new PayPalListenerModel();

            model.PayPalCheckoutInfo = info;

            if (parameters != null)
            {
                model.ProcessParameters(parameters);
            }

            if (model.IsVerified && model.IsPaymentCompleted)
            {
                int reservationId;
                if (!Int32.TryParse(info.custom, out reservationId))
                {
                    SendOrderNotFoundNotification(info);
                    return(accepted);
                }

                var reservation = GetReservation(reservationId);

                if (reservation == null)
                {
                    SendOrderNotFoundNotification(info);
                    return(accepted);
                }
                reservation.TransactionId = info.txn_id;
                reservation.AmountPaid    = info.Total;
                var isPaymentValid = reservation.AmountPaid == reservation.OrderTotal;


                if (!isPaymentValid)
                {
                    reservation.Status = _appdb.RejectedStatus;
                    SendInvalidPaymentNotifications(reservation);
                }
                else
                {
                    reservation.Status = _appdb.AcceptedStatus;
                    accepted           = true;
                    reservation.PaymentCompletedTimestamp = info.TrxnDate;
                    ContactManager.AddContact(reservation.CustomerInfo);
                    //TODO: Brivo API
                }

                _appdb.SaveChanges();
            }

            return(accepted);
        }
Esempio n. 5
0
        public EmptyResult PayPalPaymentNotification(PayPalCheckoutInfo payPalCheckoutInfo)
        {
            PayPalListenerModel model = new PayPalListenerModel();

            model._PayPalCheckoutInfo = payPalCheckoutInfo;
            byte[] parameters = Request.BinaryRead(Request.ContentLength);

            if (parameters != null)
            {
                model.GetStatus(parameters);
            }
            return(new EmptyResult());
        }
Esempio n. 6
0
        // GET: PayPalListenerModels/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PayPalListenerModel payPalListenerModel = db.PayPalListenerModels.Find(id);

            if (payPalListenerModel == null)
            {
                return(HttpNotFound());
            }
            return(View(payPalListenerModel));
        }
Esempio n. 7
0
        public ActionResult Index(PayPalCheckoutInfo payPalCheckoutInfo)
        {
            PayPalListenerModel model = new PayPalListenerModel();

            model._PayPalCheckoutInfo = payPalCheckoutInfo;
            byte[] parameters = Request.BinaryRead(Request.ContentLength);

            if (parameters != null && parameters.Length > 0)
            {
                model.GetStatus(parameters);
                db.PayPalListenerModels.Add(model);
                string request = model._PayPalCheckoutInfo.memo;
                foreach (var z in db.PayPalListenerModels.ToList())
                {
                    if (z._PayPalCheckoutInfo.txn_id == model._PayPalCheckoutInfo.txn_id)
                    {
                        db.PayPalListenerModels.Remove(model);
                    }
                }
                db.SaveChanges();
                return(new EmptyResult());
            }
            return(View());
        }
        public HttpStatusCodeResult IPN(FormCollection result)
        {
            try
            {
                var payPalPaymentInfo = new PayPalPaymentInfo();

                TryUpdateModel(payPalPaymentInfo, result.ToValueProvider());

                var model = new PayPalListenerModel {
                    PayPalPaymentInfo = payPalPaymentInfo
                };

                var parameters = Request.BinaryRead(Request.ContentLength);

                if (parameters.Length > 0)
                {
                    model.GetStatus(parameters);
                    PayPalLog.Debug(payPalPaymentInfo.invoice);
                    PayPalLog.Debug(payPalPaymentInfo.payment_status);

                    try
                    {
                        var order = _orderService.GetOrderByNumber(payPalPaymentInfo.invoice);

                        OrderStatus orderStatus;

                        switch (payPalPaymentInfo.payment_status.ToLower())
                        {
                        case "completed":
                            orderStatus = OrderStatus.Paid;
                            break;

                        default:
                            orderStatus = OrderStatus.Cancelled;
                            break;
                        }

                        order.Status           = orderStatus;
                        order.PaymentReference = payPalPaymentInfo.txn_id;

                        switch (order.Status)
                        {
                        case OrderStatus.Paid:
                            order.PaidAt = DateTime.Now;
                            break;

                        case OrderStatus.Completed:
                            order.CompletedAt = DateTime.Now;
                            break;

                        case OrderStatus.Cancelled:
                            order.CancelledAt = DateTime.Now;
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        PayPalLog.Debug(string.Format("Error saving order [{0}] {1}", payPalPaymentInfo.invoice,
                                                      JsonConvert.SerializeObject(payPalPaymentInfo)));
                        PayPalLog.Error(ex);
                    }
                }
                else
                {
                    PayPalLog.Debug(string.Format("No PayPal return parameters [{0}]",
                                                  JsonConvert.SerializeObject(result)));
                }
            }
            catch (Exception ex)
            {
                PayPalLog.Debug(string.Format("Error unknown [{0}] {1}", ex.Message,
                                              result));
                PayPalLog.Error(ex);
            }
            return(new HttpStatusCodeResult(200, "Success"));
        }