static void Main(string[] args)
        {
            var order = new Order();

            order.LineItems.Add(new Item("ATOMOSV", "Atomos Ninja V", 499), 2);
            order.LineItems.Add(new Item("EOSR", "Canon EOS R", 1799), 1);

            order.SelectedPayments.Add(new Payment
            {
                PaymentProvider = PaymentProvider.Paypal,
                Amount          = 1000
            });

            order.SelectedPayments.Add(new Payment
            {
                PaymentProvider = PaymentProvider.Invoice,
                Amount          = 1797
            });

            Console.WriteLine(order.AmountDue);
            Console.WriteLine(order.ShippingStatus);


            var handler = new PaymentHandler(
                new PaypalHandler(),
                new InvoiceHandler(),
                new CreditCardHandler()
                );

            handler.Handle(order);

            Console.WriteLine(order.AmountDue);
            Console.WriteLine(order.ShippingStatus);
        }
Example #2
0
        public void GivenAPaymentProcessingRequestIsProvided_WhenHandlingItAndTheBankingReturnsAFailedTransactionResponse_ThenItReturnsAFailedPaymentProcessingResponse()
        {
            // Given

            var mockedLogger            = Substitute.For <ILogger <PaymentHandler> >();
            var mockedBankingHandler    = Substitute.For <IBankingHandler>();
            var mockedPaymentRepository = Substitute.For <IPaymentRepository>();

            var realPaymentHandler = new PaymentHandler(mockedLogger, mockedBankingHandler, mockedPaymentRepository);

            var request = new PaymentProcessingRequest();

            mockedBankingHandler
            .Handle(request)
            .Returns(new BankingResponse {
                Success = false, TransactionId = Guid.NewGuid()
            });

            // When

            var response = realPaymentHandler.Handle(request).GetAwaiter().GetResult();

            // Then

            response.Should().NotBeNull();
            response.Should().BeOfType <PaymentProcessingResponse>();
            response.Success.Should().BeFalse();

            mockedPaymentRepository.Received(2).Upsert(Arg.Any <PaymentRecord>());
            mockedBankingHandler.Received(1).Handle(request);
        }
        private async void OnPayClick(object sender, RoutedEventArgs e)
        {
            var product = new Order
            {
                OrderId     = Guid.NewGuid().ToString(),
                Amount      = item.SaleInfo.Price * 100,
                Title       = item.VolumeInfo.Title,
                Description = item.VolumeInfo.Description,
                CustomerKey = App.CustomerKey,
            };

            var paymentListener = new PaymentHandler
            {
                SucceededCallback = paymentId =>
                {
                    Frame.Navigate(typeof(ConfirmationView), item.SaleInfo.Price);
                },
                CancelledCallback = () => { },
                FailedCallback    = async exception =>
                {
                    var messageDialog = new MessageDialog("Платёж отклонён банком. Убедитесь, что на карте достаточно средств и попробуйте снова.", "Платёж отклонён");
                    await messageDialog.ShowAsync();
                }
            };

            await AcquiringUI.ShowPaymentViewAsync(product, paymentListener);
        }
        private async void OnPayClick(object sender, RoutedEventArgs e)
        {
            var items = Items;

            if (!items.Any())
            {
                return;
            }

            var order = new Order
            {
                OrderId     = Guid.NewGuid().ToString(),
                Amount      = total * 100,
                Title       = items.Count == 1 ? items.First().Item.VolumeInfo.Title : "Покупка книг",
                Description = string.Join(", ", items.Select(item => item.Item.VolumeInfo.Description)),
                CustomerKey = App.CustomerKey
            };

            var paymentListener = new PaymentHandler
            {
                SucceededCallback = paymentId =>
                {
                    Items.Clear();
                    Frame.Navigate(typeof(ConfirmationView), total);
                },
                CancelledCallback = () => { },
                FailedCallback    = async exception =>
                {
                    var messageDialog = new MessageDialog("Платёж отклонён банком. Убедитесь, что на карте достаточно средств и попробуйте снова.", "Платёж отклонён");
                    await messageDialog.ShowAsync();
                }
            };

            await AcquiringUI.ShowPaymentViewAsync(order, paymentListener);
        }
Example #5
0
        public void GivenABankingExceptionIsThrown_WhenHandlingIt_ThenItReturnsAPaymentProcessingException()
        {
            // Given

            var mockedLogger            = Substitute.For <ILogger <PaymentHandler> >();
            var mockedBankingHandler    = Substitute.For <IBankingHandler>();
            var mockedPaymentRepository = Substitute.For <IPaymentRepository>();

            var realPaymentHandler = new PaymentHandler(mockedLogger, mockedBankingHandler, mockedPaymentRepository);

            var request = new PaymentProcessingRequest();

            var exception = new BankingException("test");

            mockedBankingHandler
            .Handle(request)
            .Throws(exception);

            // When

            var response = Assert.Throws <PaymentProcessingException>(() => realPaymentHandler.Handle(request).GetAwaiter().GetResult());


            // Then

            response.Should().NotBeNull();
            response.Should().BeOfType <PaymentProcessingException>();
            response.Message.Should().Be($"There was an issue when processing the transaction with the bank. Details: {exception.Message}");

            mockedPaymentRepository.Received(1).Upsert(Arg.Any <PaymentRecord>());
            mockedBankingHandler.Received(1).Handle(request);
        }
        public void PaytmTest()
        {
            //Arrange
            UserDetails          userDetails;
            PaymentMethodDetails paymentMethodDetails, returnedDetails;

            //Act

            userDetails           = new UserDetails();
            userDetails._userName = "******";
            userDetails._registeredMobileNumber = "8975759698";

            string paymentMethod = "paytm";

            paymentMethodDetails = new PaymentMethodDetails(userDetails, paymentMethod);

            PaymentHandler paymentHandler = new PaymentHandler(paymentMethodDetails);

            returnedDetails = paymentHandler.DoPayment();

            paymentMethodDetails.confirmationStatus   = true;
            paymentMethodDetails.paymentReceiptStatus = true;

            //Assert
            Assert.Equal(paymentMethodDetails.confirmationStatus, returnedDetails.confirmationStatus);
            Assert.Equal(paymentMethodDetails.paymentMethod, returnedDetails.paymentMethod);
            Assert.Equal(paymentMethodDetails.userDetails._registeredMobileNumber, returnedDetails.userDetails._registeredMobileNumber);
            Assert.Equal(paymentMethodDetails.userDetails._userName, returnedDetails.userDetails._userName);
            Assert.Equal(paymentMethodDetails.userDetails._upiPaymentId, returnedDetails.userDetails._upiPaymentId);
            Assert.Equal(paymentMethodDetails.userDetails._cardNumber, returnedDetails.userDetails._cardNumber);
        }
 private PurchaseManagement(PaymentHandler paymentHandler, DeliveryHandler deliveryHandler)
 {
     ClearAll();
     this.storeManagment  = StoreManagment.Instance;
     this.paymentHandler  = paymentHandler;
     this.deliveryHandler = deliveryHandler;
     this.userManager     = UserManager.Instance;
 }
        public void IfUPIPaymenttMethodSucceeds()
        {
            UserDetails    UPIUserDetails = new UserDetails("Shravan", "", "1234", "");
            PaymentHandler paymentHandler = new PaymentHandler(new UPIPayment(), UPIUserDetails);

            string notificationMessage = paymentHandler.GetPaymentConfirmation();

            Assert.AreEqual("Payment done using UPI", notificationMessage);
        }
Example #9
0
 public void Setup()
 {
     _payRepository           = new Mock <IRepository <PayDetails> >();
     _payStatusRepository     = new Mock <IRepository <PaymentStatus> >();
     _cheapPaymentGateway     = new Mock <ICheapPaymentGateway>();
     _expensivePaymentGateway = new Mock <IExpensivePaymentGateway>();
     _premiumPaymentGateway   = new Mock <IPremiumPaymentGateway>();
     _handler = new PaymentHandler(_payRepository.Object, _payStatusRepository.Object, _cheapPaymentGateway.Object, _expensivePaymentGateway.Object, _premiumPaymentGateway.Object);
 }
Example #10
0
 private IEnumerable <BankTran> FilterTransactions(PaymentHandler filter, IEnumerable <BankTran> trans)
 {
     foreach (var item in trans)
     {
         if (filter(item.RecoveryPaymentType))
         {
             yield return(item);
         }
     }
 }
 /// <summary>
 /// Setup the dependencies of this class for tests purposes
 /// </summary>
 public void SetupDependencies(
     StoreManagment storeManagment,
     PaymentHandler paymentHandler,
     DeliveryHandler deliveryHandler,
     UserManager userManager)
 {
     this.storeManagment  = storeManagment;
     this.userManager     = userManager;
     this.paymentHandler  = paymentHandler;
     this.deliveryHandler = deliveryHandler;
 }
Example #12
0
        public void IfPayTmPaymentMethodSucceeds()
        {
            UserDetails PayTmUserDetails = new UserDetails("Shravan", "9763328133", "", "");

            PaymentHandler paymentHandler = new PaymentHandler(new PayTm(), PayTmUserDetails);

            string notificationMessage = paymentHandler.GetPaymentConfirmation();
            string message             = "Payment done using Paytm";
            string m2 = message.ToLowerInvariant();

            Assert.AreEqual(message, notificationMessage);
        }
Example #13
0
 public HomeController()
 {
     configuration = new NGeniusConfiguration()
     {
         IsTest      = true,
         APIKey      = "xxxxxxxxxxx",
         OutletId    = "xxxxx",
         RedirectUrl = "http://sriajith.info/redirect",
         CancelUrl   = "http://sriajith.info/cancel"
     };
     paymentHandler = new PaymentHandler();
 }
        /// <summary>
        /// Открывает экран оплаты. Позволяет посмотреть данные платежа, ввести данные карты для оплаты, проходить в случае необходимости 3DS, управлять ранее сохраненными картами.
        /// </summary>
        /// <param name="order">Параметры заказа.</param>
        /// <param name="handler">Обработчик результата платежа.</param>
        /// <returns>
        /// The asynchronous results of the operation. Use this to determine when the async call is complete.
        /// </returns>
        public static async Task ShowPaymentViewAsync(Order order, PaymentHandler handler)
        {
            if (shown)
            {
                throw new InvalidOperationException("The dialog is already shown.");
            }
            await SetStatusBar();

            try
            {
                shown = true;

                Subscribe();

                dismissTaskSource = new TaskCompletionSource <object>();
                var container = new Grid();
                var frame     = new Frame();
                container.Children.Add(frame);
                popup = new Popup
                {
                    Child = container,
                    IsLightDismissEnabled = false,
                    IsOpen = true
                };
                ResizeLayoutRoot();
                if (frame.Navigate(typeof(PaymentView), order))
                {
                    var paymentView = (PaymentView)frame.Content;
                    if (paymentView != null)
                    {
                        paymentView.Succeeded += async _ => await HideAsync();

                        paymentView.Succeeded += handler.SucceededCallback;
                        paymentView.Cancelled += async() => await HideAsync();

                        paymentView.Cancelled += handler.CancelledCallback;
                        paymentView.Failed    += async _ => await HideAsync();

                        paymentView.Failed += handler.FailedCallback;
                        await dismissTaskSource.Task;
                    }
                }
            }
            finally
            {
                popup.IsOpen = false;
                popup.Child  = null;
                popup        = null;
                Unsubscribe();
                shown = false;
            }
        }
Example #15
0
        public static Response DeletePaymentType(int id)
        {
            PaymentType pt = PaymentHandler.DeletePaymentType(id);

            if (pt == null)
            {
                return(new Response(false, "to-be-deleted product cannot be referenced in another table in the database"));
            }
            else
            {
                return(new Response(true));
            }
        }
Example #16
0
    public static CompletedPaymentLog GetTransactionIfExistsCreateOtherwise(PaymentProcessor paymentProcessor, string transactionId,
                                                                            string paidFor, string username, Money amount, Money fees, string cryptoCurrencyInfo)
    {
        var CompletedPaymentLog = PaymentHandler.GetTransaction(paymentProcessor, transactionId);

        if (CompletedPaymentLog == null)
        {
            CompletedPaymentLog = CompletedPaymentLog.Create(paymentProcessor, paidFor,
                                                             transactionId, false, username, amount, fees, false, cryptoCurrencyInfo);
        }

        return(CompletedPaymentLog);
    }
        public void IfCardPaymenttMethodSucceeds()
        {
            UserDetails    cardUserDetails = new UserDetails("Shravan", "", "", "1234 4567 5678 9876");
            PaymentHandler paymentHandler  = new PaymentHandler(new CardPayment(), cardUserDetails);

            string notificationMessage = paymentHandler.GetPaymentConfirmation();
            string message             = "Payment done using Card";
            string m2 = message.ToLowerInvariant();

            Assert.AreEqual(message, notificationMessage);

            //Assert.AreEqual("Payment done using Card", notificationMessage);
        }
Example #18
0
        /// <function cref ="eCommerce_14a.DeliveryHandler.checkconnection()
        /// <function cref ="eCommerce_14a.PaymentHandler.checkconnection()
        public void ConnectToHandlers()
        {
            DeliveryHandler dh = DeliveryHandler.Instance;
            PaymentHandler  ph = PaymentHandler.Instance;

            dh.setConnection(false);
            ph.setConnections(false);
            Assert.IsFalse(dh.checkconnection());
            Assert.IsFalse(dh.checkconnection());
            dh.setConnection(true);
            ph.setConnections(true);
            Assert.IsTrue(dh.checkconnection());
            Assert.IsTrue(dh.checkconnection());
        }
        public static Response InsertPaymentType(string name)
        {
            if (name == "")
            {
                return(new Response(false, "Type must be filled"));
            }
            if (name.Length < 3)
            {
                return(new Response(false, "Type must consists of 3 characters or more"));
            }

            Response response = PaymentHandler.InsertPaymentType(name);

            return(response);
        }
Example #20
0
        private HandleFileResult HandleFile(string filePath)
        {
            var result = new HandleFileResult();
            var mockedReceiver = new StubIPaymentReceiver()
            {
                StartPaymentBundleStringDateTimeString = (s1, dt1, s2) => { result.BundlesOpenedCount++; },
                EndPaymentBundle = () => { result.BundlesClosedCount++; },
                PaymentDecimalString = (d1, s1) => { result.PaymentsSentCount++; }
            };

            var handler = new PaymentHandler();
            handler.HandleFile(filePath, mockedReceiver);

            return result;
        }
        public static Response UpdatePayment(int ID, string newType)
        {
            if (newType == "")
            {
                return(new Response(false, "Type must be filled"));
            }
            if (newType.Length < 3)
            {
                return(new Response(false, "Type must consists of 3 characters or more"));
            }

            Response response = PaymentHandler.UpdatePayment(ID, newType);

            return(response);
        }
Example #22
0
 public static Response UpdatePaymentType(int id, string type)
 {
     if (type == "")
     {
         return(new Response(false, "must be filled"));
     }
     if (type.Length < 3)
     {
         return(new Response(false, "must consist of 3 characters or more"));
     }
     else
     {
         Response respond = PaymentHandler.UpdatePaymentType(id, type);
         return(respond);
     }
 }
Example #23
0
 public void Setup()
 {
     // mailMoq = new Mock<IMailService>();
     packingSlipBuilderMoq = new Mock <IPackingSlipBuilder>();
     productCatalogMoq     = new Mock <IProductCatalog>();
     membershipMoq         = new Mock <IMembershipService>();
     commissionMoq         = new Mock <ICommisionService>();
     paymentHandler        = new PaymentHandler(
         () => { return(packingSlipBuilderMoq.Object); },
         productCatalogMoq.Object,
         membershipMoq.Object,
         commissionMoq.Object);
     defaultPaymentAccout = new PaymentAccount()
     {
     };
 }
Example #24
0
        public ActionResult AddMoney(WalletModel.AddMoney AddMoney)
        {
            int        Amount = AddMoney.EnterMoney;
            PaypalItem p      = new PaypalItem();

            p.currency = "NZD";
            p.sku      = Session[KeyList.SessionKeys.UserID].ToString();
            p.price    = Convert.ToDouble(Amount);

            List <PaypalItem> ListPay = new List <PaypalItem>();

            ListPay.Add(p);
            PaymentHandler ph = new PaymentHandler(ListPay, Convert.ToInt32(Session[KeyList.SessionKeys.UserID]));

            return(View());
        }
Example #25
0
        public void HandlePayza(string ipnResponse)
        {
            var data = NameValuePairs.Parse(ipnResponse);

            string[] args = new string[] { data["apc_2"], data["apc_3"], data["apc_4"], data["apc_5"], data["apc_6"] };

            if (AppSettings.Site.CurrencyCode.Equals(data["ap_currency"], StringComparison.OrdinalIgnoreCase) &&
                "Success".Equals(data["ap_status"], StringComparison.OrdinalIgnoreCase))
            {
                PaymentHandler.CheckIfNotDoneYet(PaymentProcessor.Payza, data["ap_referencenumber"]);
                handle(args, data["ap_referencenumber"], data["ap_totalamount"], "Payza");
            }
            else
            {
                ErrorLogger.Log("Payza IPN: Problems with response: " + ipnResponse, LogType.Payza);
            }
        }
Example #26
0
        public void HandlePayPal(string ipnResponse)
        {
            var data = NameValuePairs.Parse(ipnResponse);

            string[] args = data["invoice"].Split(PayPalButtonGenerationStrategy.ArgsDelimeter);

            if (AppSettings.Site.CurrencyCode.Equals(data["mc_currency"], StringComparison.OrdinalIgnoreCase) &&
                "Completed".Equals(data["payment_status"], StringComparison.OrdinalIgnoreCase))
            {
                PaymentHandler.CheckIfNotDoneYet(PaymentProcessor.PayPal, data["txn_id"]);
                handle(args, data["txn_id"], data["mc_gross"], "PayPal");
            }
            else
            {
                ErrorLogger.Log("PayPal IPN: Problems with response: " + ipnResponse, LogType.PayPal);
            }
        }
Example #27
0
        public bool DoPaymet(Order order)
        {
            var paymentHandler = new PaymentHandler
                                 (
                new CreditCardHandler(),
                new SnapScanHandler(),
                new InvoiceHandler()
                                 );

            paymentHandler.Handle(order);


            //paymentHandler.SetNext(new CreditCardHandler());
            //paymentHandler.SetNext(new SnapScanHandler());
            //paymentHandler.SetNext(new InvoiceHandler());
            //paymentHandler.Handle(order);

            return(true);
        }
Example #28
0
        public void it_process_payment_based_chain_of_responsibility()
        {
            // Arrange
            var order = new Order();

            order.LineItems.Add(new Item("ATOMOSV", "Atomos Ninja V", 499), 2);
            order.LineItems.Add(new Item("EOSR", "Canon EOS R", 1799), 1);

            order.SelectedPayments.Add(new Payment
            {
                PaymentProvider = PaymentProvider.Paypal,
                Amount          = 1000
            });

            order.SelectedPayments.Add(new Payment
            {
                PaymentProvider = PaymentProvider.Invoice,
                Amount          = 1797
            });

            _testOutputHelper.WriteLine($"Order Amount Due : {order.AmountDue}");
            _testOutputHelper.WriteLine($"Order Shipping Status : {order.ShippingStatus}");

            // Handle payment...Paypal --> Invoice --> Credit Card
            var receivers = new List <IReceiver <Order> >
            {
                new PaypalHandler(),
                new CreditCardHandler(),
                new InvoiceHandler()
            };

            PaymentHandler handler = new PaymentHandler(receivers);

            handler.Handle(order);

            _testOutputHelper.WriteLine($"Order Amount Due : {order.AmountDue}");
            _testOutputHelper.WriteLine($"Order Shipping Status : {order.ShippingStatus}");
        }
Example #29
0
        private static void Main()
        {
            var order = new Order();

            order.AddLineItem(new LineItem("GUID 1", "Product Name One", 499), 2);
            order.AddLineItem(new LineItem("GUID 2", "Product Name Two", 799), 1);

            order.AddPayment(new Payment
            {
                PaymentProvider = PaymentProvider.Paypal,
                Amount          = 1000
            });

            order.AddPayment(new Payment
            {
                PaymentProvider = PaymentProvider.Invoice,
                Amount          = 797
            });

            Console.WriteLine($"Amount Due:      \t {order.AmountDue}");
            Console.WriteLine($"Shipping Status: \t {order.ShippingStatus}");


            //var handler = new PaymentHandler(
            //    new PaypalHandler(),
            //    new InvoiceHandler(),
            //    new CreditCardHandler()
            //);
            var handler = new PaymentHandler()
                          .SetNext(new PaypalHandler())
                          .SetNext(new InvoiceHandler())
                          .SetNext(new CreditCardHandler());

            handler.Handle(order);

            Console.WriteLine($"Amount Due:      \t {order.AmountDue}");
            Console.WriteLine($"Shipping Status: \t {order.ShippingStatus}");
        }
Example #30
0
        protected void Checkoutt_Click(object sender, EventArgs e)
        {
            if (cartitems == null)
            {
                db = new BetaDB();
                var email = Session["email"].ToString();
                userId    = db.Logins.Where(x => x.Email == email).Select(x => x.ID).FirstOrDefault();
                cartitems = db.Carts.Where(x => x.UserId == userId).ToList <Cart>();
            }
            List <PaypalItem> approvedItems = new List <PaypalItem>();

            foreach (Cart ci in cartitems)
            {
                var product = db.Products.Where(x => x.ProductID == ci.ProductID).SingleOrDefault();
                var stock   = db.Stocks.Where(x => x.ProductID == ci.ProductID && x.ProductSizeName == ci.Size).FirstOrDefault();
                if (stock.StockCount < ci.Quantity)
                {
                    outofstocklbl.Text = "Some Products are Out of Stock";
                }
                else
                {
                    PaypalItem pi = new PaypalItem
                    {
                        ProductId = product.ProductID,
                        name      = product.ProductName,
                        currency  = "NZD",
                        price     = Convert.ToDouble(product.ProductPrice),
                        quantity  = (int)ci.Quantity,
                        size      = ci.Size,
                        sku       = product.ProductID.ToString()
                    };
                    approvedItems.Add(pi);
                }
            }

            PaymentHandler ph = new PaymentHandler(approvedItems, userId);
        }
Example #31
0
        public void Setup()
        {
            // mailMoq = new Mock<IMailService>();
            packingSlipBuilderMoq = new Mock <IPackingSlipBuilder>();
            productCatalogMoq     = new Mock <IProductCatalog>();
            membershipMoq         = new Mock <IMembershipService>();
            commissionMoq         = new Mock <ICommisionService>();
            paymentServiceMoq     = new Mock <IPaymentService>();
            paymentHandler        = new PaymentHandler(
                () => { return(packingSlipBuilderMoq.Object); },
                productCatalogMoq.Object,
                membershipMoq.Object,
                commissionMoq.Object);
            paymentAccount = new PaymentAccount()
            {
                Id = 50
            };
            payment = new Payment()
            {
                Id             = 40,
                PaymentAccount = paymentAccount,
                Amount         = 20.01M
            };
            productId = 3;
            orderId   = 100;
            order     = new Order()
            {
                OrderId   = orderId,
                ProductId = productId,
                Payment   = payment
            };

            orderRepository = new OrderRepository(paymentHandler,
                                                  productCatalogMoq.Object,
                                                  paymentServiceMoq.Object);
        }