コード例 #1
0
        void _paymentWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            var reservation    = (VolarisReservation)e.Argument;
            var creditCardinfo = reservation.Payment.CreditCardInformation;

            if (PaymentFactory.ContainsKey(creditCardinfo.Type))
            {
                var payment = PaymentFactory[creditCardinfo.Type]();
                payment.ServiceManager.OnWebServiceCallStart     += OnWebServiceCallStartDelegate;
                payment.ServiceManager.OnWebServiceCallCompleted += OnWebServiceCallCompletedDelegate;;
                payment.Commit(reservation);
            }
        }
コード例 #2
0
 public void GenerateRecipt()
 {
     recipt  = ReciptFactory.ReciptFact(ReciptType.duplicate.ToString());
     payment = PaymentFactory.PaymentFact("agent");
     Console.WriteLine(recipt.GenerateRecipt());
     Console.WriteLine(payment.GenerateComission());
 }
コード例 #3
0
 public void TestBookCommission()
 {
     payment    = PaymentFactory.GetPayment(PaymentTypeEnum.Book);
     commission = payment as ICommission;
     returnMsg  = commission.GenerateCommission();
     Assert.AreEqual(returnMsg, "Book Commission");
 }
コード例 #4
0
 public void TestMembershipEmail()
 {
     payment   = PaymentFactory.GetPayment(PaymentTypeEnum.Membership);
     email     = payment as IEmail;
     returnMsg = email.SendMail();
     Assert.AreEqual(returnMsg, "Membership Email");
 }
コード例 #5
0
ファイル: Program.cs プロジェクト: Rimon89/ShoppingList
        private static void SetPayment(string paymentType, string bankCard)
        {
            var type = PaymentFactory.CreatePaymentFactory(paymentType);
            var card = type.GetPayment(bankCard);

            Console.WriteLine(card.Payment() + "\n----------------------------------");
        }
コード例 #6
0
            public void SetUp()
            {
                _mockAcquirerService = new Mock <IAcquirerService>();
                _mockValidator       = new Mock <IValidator <PaymentRequest> >();

                //setup valid _request
                var card = new Card
                {
                    CardNumber = "4459432156788765",
                    Cvv        = "123",
                    ExpiryDate = "0220",
                    Name       = "Mr J Bloggs"
                };

                _request = new PaymentRequest
                {
                    Card     = card,
                    Amount   = 100,
                    Currency = "GBP"
                };

                var factory = new PaymentFactory(new CardMapper(), _mockAcquirerService.Object);

                _stubPaymentStore = new StubPaymentStore();

                _sut = new PaymentController(_mockValidator.Object, factory, _stubPaymentStore);
            }
コード例 #7
0
        private object DoPay(int companyId, string storeId, string machineSn, string deviceSn, string orderSn, PayRequest requestParams, DateTime createDt, Action <IPay> callback)
        {
            PayMode payMode;

            if (requestParams.Payway.Count() > 1)
            {
                payMode = PayMode.Multiply;
            }
            else
            {
                payMode = (PayMode)requestParams.Payway.FirstOrDefault().Type;
            }
            List <PayDetails> payway = new List <PayDetails>();
            IPay pay;

            foreach (var item in requestParams.Payway)
            {
                payway.Add(new PayDetails()
                {
                    Amount     = item.Amount,
                    ApiOrderSn = item.PayOrderSn,
                    PaySn      = orderSn,
                    CardNo     = item.CardNo,
                    WipeZero   = item.WipeZero,
                    Change     = item.Change,
                    Receive    = item.Receive,
                    CreateDt   = createDt,
                    Mode       = (PayMode)item.Type
                });
            }
            pay = PaymentFactory.Factory(companyId, storeId, machineSn, deviceSn, payMode, payway, requestParams.Receivable, callback);
            pay.SavePayInfomactions();
            return(createDt);
        }
コード例 #8
0
        public virtual JsonResult Pay(int orderId, int paymentGatewayId, string code)
        {
            var shortlink = _shortLinkBusiness.Value.Find(code);

            if (shortlink == null)
            {
                return(Json(new { IsSuccessful = false, Message = LocalMessage.RecordsNotFound }));
            }

            var gatewayRep = _paymentGatewayBusiness.GetPaymentGateway(paymentGatewayId);

            if (!gatewayRep.IsSuccessful)
            {
                return(Json(new { IsSuccessful = false, Message = LocalMessage.RecordsNotFound }));
            }
            var order  = _orderBusiness.Find(orderId, "OrderItems,Transactions");
            var result = PaymentFactory.GetInstance(gatewayRep.Result.BankName).Do(gatewayRep.Result, new TransactionModel
            {
                OrderId          = orderId,
                PaymentGatewayId = paymentGatewayId,
                Price            = order.TotalPrice() - order.Transactions.Where(x => x.IsSuccess).Sum(x => x.Price),
                UserId           = shortlink.UserId
            });

            return(Json(result));
        }
コード例 #9
0
        public virtual ViewResult PasargadVerify(int IN, string tref, string id)
        {
            ViewBag.PaymentGateway = BankNames.Pasargad;
            var transaction = _transactionBusiness.Find(IN);

            ViewBag.ReturnUrl = Url.Action(MVC.Home.ActionNames.AddOrder, MVC.Home.Name);
            if (transaction.IsNull())
            {
                ViewBag.ErrorMessage = LocalMessage.PaymentException;
                return(View(viewName: MVC.Transaction.Views.Failed, model: transaction));
            }

            var gateWay = _paymentGatewayBusiness.Find(transaction.PaymentGatewayId);

            if (gateWay.IsNull())
            {
                ViewBag.ReturnUrl    = $"/Home/{transaction.OrderId}/{transaction.Order.UserId}";
                ViewBag.ErrorMessage = LocalMessage.OperationFailed;
                return(View(viewName: MVC.Transaction.Views.Failed, transaction));
            }

            var result = PaymentFactory.GetInstance(gateWay.BankName).Verify(gateWay, transaction, tref);

            if (!result.IsSuccessful)
            {
                ViewBag.ReturnUrl      = $"/Home/{transaction.OrderId}/{transaction.Order.UserId}";
                transaction.TrackingId = "0";
                ViewBag.ErrorMessage   = result.Message;
                return(View(viewName: MVC.Transaction.Views.Failed, model: transaction));
            }
            return(View(viewName: MVC.Transaction.Views.Success, model: transaction));
        }
コード例 #10
0
        public virtual ViewResult PayVerify(PayRedirectModel model)
        {
            ViewBag.PaymentGateway = BankNames.Pay;
            if (model.IsNotNull())
            {
                var transaction = _transactionBusiness.Find(model.factorNumber);
                if (transaction.IsNull())
                {
                    ViewBag.ErrorMessage = LocalMessage.PaymentException;
                    return(View(viewName: MVC.Transaction.Views.Failed, model: transaction));
                }

                var gateWay = _paymentGatewayBusiness.Find(transaction.PaymentGatewayId);
                if (gateWay.IsNull())
                {
                    return(View(viewName: MVC.Transaction.Views.Failed, model: LocalMessage.PaymentException));
                }
                var result = PaymentFactory.GetInstance(gateWay.BankName).Verify(gateWay, transaction, model);
                if (result.IsSuccessful)
                {
                    return(View(viewName: MVC.Transaction.Views.Success, model: transaction));
                }

                transaction.TrackingId = "0";
                ViewBag.ErrorMessage   = result.Message;
                return(View(viewName: MVC.Transaction.Views.Failed, model: transaction));
            }
            ViewBag.ErrorMessage = LocalMessage.RedirectException;
            return(View(viewName: MVC.Transaction.Views.Failed, model: LocalMessage.RedirectException));
        }
コード例 #11
0
        public virtual ViewResult ZarinPalVerify(string Status, string Authority)
        {
            ViewBag.PaymentGateway = BankNames.ZarinPal;

            if (!string.IsNullOrEmpty(Status) && !string.IsNullOrEmpty(Authority))
            {
                var transaction = _transactionBusiness.Find(Authority.Trim());
                if (transaction.IsNull())
                {
                    ViewBag.ErrorMessage = LocalMessage.PaymentException;
                    return(View(viewName: MVC.Transaction.Views.Failed, model: transaction));
                }

                var _order  = _orderBusiness.Find(transaction.OrderId);
                var gateWay = _paymentGatewayBusiness.Find(transaction.PaymentGatewayId);
                if (gateWay.IsNull())
                {
                    ViewBag.ErrorMessage = LocalMessage.PaymentException;
                    return(View(viewName: MVC.Transaction.Views.Failed, model: transaction));
                }
                var result = PaymentFactory.GetInstance(gateWay.BankName).Verify(gateWay, transaction);
                if (result.IsSuccessful)
                {
                    return(View(viewName: MVC.Transaction.Views.Success, model: transaction));
                }
                ViewBag.ErrorMessage = result.Message;
                return(View(viewName: MVC.Transaction.Views.Failed, model: transaction));
            }
            ViewBag.ErrorMessage = LocalMessage.RedirectException;

            return(View(viewName: MVC.Transaction.Views.Failed, model: new Transaction()));
        }
コード例 #12
0
        public virtual ViewResult SadadVerify(SadadPurchaseResult model)
        {
            // FileLoger.Info(JsonConvert.SerializeObject(model), GlobalVariable.LogPath);

            ViewBag.PaymentGateway = BankNames.Melli;
            if (model.IsNotNull())
            {
                var transaction = _transactionBusiness.Find(model.OrderId);
                if (transaction.IsNull())
                {
                    ViewBag.ErrorMessage = LocalMessage.PaymentException;
                    return(View(viewName: MVC.Transaction.Views.Failed, model: transaction));
                }

                var gateWay = _paymentGatewayBusiness.Find(transaction.PaymentGatewayId);
                if (gateWay.IsNull())
                {
                    return(View(viewName: MVC.Transaction.Views.Failed, model: LocalMessage.PaymentException));
                }
                var result = PaymentFactory.GetInstance(gateWay.BankName).Verify(gateWay, transaction, model);
                if (result.IsSuccessful)
                {
                    return(View(viewName: MVC.Transaction.Views.Success, model: transaction));
                }

                transaction.TrackingId = "0";
                ViewBag.ErrorMessage   = result.Message;
                return(View(viewName: MVC.Transaction.Views.Failed, model: transaction));
            }
            ViewBag.ErrorMessage = LocalMessage.RedirectException;
            return(View(viewName: MVC.Transaction.Views.Failed, model: LocalMessage.RedirectException));
        }
コード例 #13
0
        private IOrderProcess GetHandlerByPaymentType(PaymentType options)
        {
            IOrderProcess handler;

            handler = PaymentFactory.GetOrderProcessor(options);
            return(handler);
        }
コード例 #14
0
        /// <summary>
        /// Gets all <see cref="IPayment"/>.
        /// </summary>
        /// <param name="keys">
        /// The keys.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{IPayment}"/>.
        /// </returns>
        protected override IEnumerable <IPayment> PerformGetAll(params Guid[] keys)
        {
            var dtos = new List <PaymentDto>();

            if (keys.Any())
            {
                // This is to get around the WhereIn max limit of 2100 parameters and to help with performance of each WhereIn query
                var keyLists = keys.Split(400).ToList();

                // Loop the split keys and get them
                foreach (var keyList in keyLists)
                {
                    dtos.AddRange(Database.Fetch <PaymentDto>(GetBaseQuery(false).WhereIn <PaymentDto>(x => x.Key, keyList, SqlSyntax)));
                }
            }
            else
            {
                dtos = Database.Fetch <PaymentDto>(GetBaseQuery(false));
            }

            var factory = new PaymentFactory();

            foreach (var dto in dtos)
            {
                yield return(factory.BuildEntity(dto));
            }
        }
コード例 #15
0
        public SetOrderPaymentResponse SetOrderPayment(SetOrderPaymentRequest paymentRequest)
        {
            SetOrderPaymentResponse paymentResponse = new SetOrderPaymentResponse();

            Order order = _orderRepository.FindBy(paymentRequest.OrderId);

            try
            {
                order.SetPayment(PaymentFactory.CreatePayment(paymentRequest.PaymentToken,
                                                              paymentRequest.Amount, paymentRequest.PaymentMerchant
                                                              ));

                _orderRepository.Save(order);
                _uow.Commit();
            }
            catch (OrderAlreadyPaidForException ex)
            {
                //  Out of scope of case study: Refund the payment using the payment service...
                LoggingFactory.GetLogger().Log(ex.Message);
            }
            catch (PaymentAmountDoesNotEqualOrderTotalException ex)
            {
                //  Out of scope of case study: Refund the payment using the payment service...
                LoggingFactory.GetLogger().Log(ex.Message);
            }

            paymentResponse.Order = order.ConvertToOrderView();

            return(paymentResponse);
        }
コード例 #16
0
        public MainViewModel()
        {
            _coffeeStrength = Strength.Normal;
            _sugarAmount    = Amount.Normal;
            _milkAmount     = Amount.Normal;

            LogText = new ObservableCollection <string>();
            LogText.Add("Starting up...");
            LogText.Add("Done, what would you like to drink?");

            drinkFactory       = new DrinkFactory();
            paymentFactory     = new PaymentFactory();
            teaBlendRepository = new TeaBlendRepository();
            deserializer       = new Deserializer();


            Blends         = new List <string>(teaBlendRepository.BlendNames);
            KoffieSpecials = new List <string>();

            foreach (var item in deserializer.GetSpecialCoffees())
            {
                KoffieSpecials.Add(item.Naam);
            }

            card = (CardPayment)paymentFactory.CreatePayment("Card", 0, null);

            PaymentCardUsernames        = new ObservableCollection <string>(card.CashOncards.Keys);
            SelectedPaymentCardUsername = PaymentCardUsernames[0];
        }
コード例 #17
0
        public async override Task <CommandExecutionResult> ExecuteAsync()
        {
            var totalAmount = OrderItems.Sum(item => item.Price * item.Quantity);

            var orderItems = OrderItems.Select(items => new OrderItem(items.ProductId,
                                                                      items.Quantity,
                                                                      items.Price * items.Quantity,
                                                                      PaymentMethod));

            var paymentDetails = new PaymentDetails(CashAmount,
                                                    CardNumber,
                                                    CardOwner,
                                                    totalAmount,
                                                    PaymentMethod);

            var paymentFactory = PaymentFactory.Create(paymentDetails);
            var paymentResult  = paymentFactory.Pay(paymentDetails);

            if (!paymentResult.IsSuccess)
            {
                return(await FailAsync(ErrorCode.PaymentUnsuccesfull));
            }

            var order = new Domain.OrderManagement.Order(BoothId,
                                                         totalAmount,
                                                         OrderStatus.Placed,
                                                         orderItems.ToList());

            await SaveAsync(order, _orderRepository);

            return(await OkAsync(DomainOperationResult.CreateEmpty()));
        }
コード例 #18
0
        public void ShouldConvertJsonToSpecifiedFormat()
        {
            string jsonFromDb      = "{\"numero_pedido\":\"OR1234\",\"comprador\":{\"aniversario\":\"1991-05-20T00:00:00\",\"documento\":\"12345678900\",\"email\":\"[email protected]\",\"telefone\":\"552122225555\",\"celular\":\"5521999995555\",\"nome\":\"Fulano Silva\",\"tipo\":\"pessoa_fisica\",\"endereco\":{\"cidade\":\"Rio de Janeiro\",\"complemento\":\"Apto 1011\",\"pais\":\"Brazil\",\"bairro\":\"Centro\",\"numero\":\"123\",\"estado\":\"RJ\",\"logradouro\":\"Rua Souza\",\"cep\":\"23021130\"}},\"pagamento\":{\"valor\":210,\"parcelas\":\"5\",\"endereco_cobranca\":{\"cidade\":\"Rio de Janeiro\",\"complemento\":\"Apto 1011\",\"pais\":\"Brazil\",\"bairro\":\"Centro\",\"numero\":\"123\",\"estado\":\"RJ\",\"logradouro\":\"Rua Souza\",\"cep\":\"23021130\"},\"cartao\":{\"bandeira\":\"Visa\",\"numero_cartao\":\"4000000000000010\",\"mes_vencimento\":\"10\",\"ano_vencimento\":\"2022\",\"nome_cartao\":\"FULANO SILVA\",\"cvv\":\"321\"}},\"entrega\":{\"endereco_entrega\":{\"cidade\":\"Rio de Janeiro\",\"complemento\":\"Apto 1011\",\"pais\":\"Brazil\",\"bairro\":\"Centro\",\"numero\":\"123\",\"estado\":\"RJ\",\"logradouro\":\"Rua Souza\",\"cep\":\"23021130\"},\"frete\":10,\"shipping_company\":\"Correios\"},\"carriinho\":{\"items\":[{\"produto\":\"Discos Vinil\",\"quantidade\":10,\"valor_unit\":10},{\"produto\":\"Toca Viniil\",\"quantidade\":1,\"valor_unit\":100}]}}";
            string jsonFromRequest = "{\"numero_pedido\":\"OR1235\",\"comprador\":{\"aniversario\":\"1991-05-20T00:00:00\",\"documento\":\"12345678900\",\"email\":\"[email protected]\",\"telefone\":\"552122225555\",\"celular\":\"5521999995555\",\"nome\":\"Fulano Silva\",\"tipo\":\"pessoa_fisica\",\"endereco\":{\"cidade\":\"Rio de Janeiro\",\"complemento\":\"Apto 1011\",\"pais\":\"Brazil\",\"bairro\":\"Centro\",\"numero\":\"123\",\"estado\":\"RJ\",\"logradouro\":\"Rua Souza\",\"cep\":\"23021130\"}},\"pagamento\":{\"valor\":210,\"parcelas\":\"5\",\"endereco_cobranca\":{\"cidade\":\"Rio de Janeiro\",\"complemento\":\"Apto 1011\",\"pais\":\"Brazil\",\"bairro\":\"Centro\",\"numero\":\"123\",\"estado\":\"RJ\",\"logradouro\":\"Rua Souza\",\"cep\":\"23021130\"},\"cartao\":{\"bandeira\":\"Visa\",\"numero_cartao\":\"4000000000000010\",\"mes_vencimento\":\"10\",\"ano_vencimento\":\"2022\",\"nome_cartao\":\"FULANO SILVA\",\"cvv\":\"321\"}},\"entrega\":{\"endereco_entrega\":{\"cidade\":\"Rio de Janeiro\",\"complemento\":\"Apto 1011\",\"pais\":\"Brazil\",\"bairro\":\"Centro\",\"numero\":\"123\",\"estado\":\"RJ\",\"logradouro\":\"Rua Souza\",\"cep\":\"23021130\"},\"frete\":10,\"shipping_company\":\"Correios\"},\"carriinho\":{\"items\":[{\"produto\":\"Discos Vinil\",\"quantidade\":10,\"valor_unit\":10},{\"produto\":\"Toca Viniil\",\"quantidade\":1,\"valor_unit\":100}]}}";

            //string jsonFromRequest = "{\"numero_pedido\":\"OR1234\",\"comprador\":{\"aniversario\":\"1991-05-20T00:00:00\",\"documento\":\"12345678900\",\"email\":\"[email protected]\",\"telefone\":\"552122225555\",\"celular\":\"5521999995555\",\"nome\":\"Fulano Silva\",\"tipo\":\"pessoa_fisica\",\"endereco\":{\"cidade\":\"Rio de Janeiro\",\"complemento\":\"Apto 1011\",\"pais\":\"BR\",\"bairro\":\"Centro\",\"numero\":\"123\",\"estado\":\"RJ\",\"logradouro\":\"Rua Souza\",\"cep\":\"23021130\"}},\"pagamento\":{\"valor\":210,\"parcelas\":\"5\",\"endereco_cobranca\":{\"cidade\":\"Rio de Janeiro\",\"complemento\":\"Apto 1011\",\"pais\":\"BR\",\"bairro\":\"Centro\",\"numero\":\"123\",\"estado\":\"RJ\",\"logradouro\":\"Rua Souza\",\"cep\":\"23021130\"},\"cartao\":{\"bandeira\":\"Visa\",\"numero_cartao\":\"4000000000000010\",\"mes_vencimento\":\"10\",\"ano_vencimento\":\"2022\",\"nome_cartao\":\"FULANO SILVA\",\"cvv\":\"321\"}},\"entrega\":{\"endereco_entrega\":{\"cidade\":\"Rio de Janeiro\",\"complemento\":\"Apto 1011\",\"pais\":\"BR\",\"bairro\":\"Centro\",\"numero\":\"123\",\"estado\":\"RJ\",\"logradouro\":\"Rua Souza\",\"cep\":\"23021130\"},\"frete\":10,\"shipping_company\":\"Correios\"},\"carriniho\":{\"items\":[{\"produto\":\"Discos Vinil\",\"quantidade\":10,\"valor_unit\":10},{\"produto\":\"Toca Viniil\",\"quantidade\":1,\"valor_unit\":100}]}}";

            Assert.True(jsonFromRequest.HasSameKeys(jsonFromDb));

            var jsonDataDictionary = jsonFromRequest.GetKeyAndValuesToDictionary();

            Assert.True(jsonDataDictionary.CanBeMappedTo(_customerPropertyMappings));
            Assert.True(jsonDataDictionary.CanBeMappedTo(_itemPropertyMappings));
            Assert.True(jsonDataDictionary.CanBeMappedTo(_paymentPropertyMappings));

            var mundiPaggOrder = new MundiPaggOrder();

            var payment = PaymentFactory.Create(jsonDataDictionary, _paymentPropertyMappings);

            mundiPaggOrder.Payments.Add(payment);

            var customer = CustomerFactory.Create(jsonDataDictionary, _customerPropertyMappings);

            mundiPaggOrder.Customer = customer;

            var itens = ItensFactory.CreateList(jsonDataDictionary, _itemPropertyMappings);

            mundiPaggOrder.Items = itens;

            Assert.True(mundiPaggOrder.Items.Any() && mundiPaggOrder.Payments.Any() && !string.IsNullOrEmpty(mundiPaggOrder.Customer.Name));
        }
コード例 #19
0
        public void TestPaymentFactoryForCardPayment()
        {
            PaymentFactory paymentFactory = new PaymentFactory();
            IPayment       actualObject   = paymentFactory.GetPaymentMethod("card");

            Assert.IsType <CardPayment>(actualObject);
        }
コード例 #20
0
        public object BackgroundPayment([FromBody] BackgroundPaymentRequest requestParams)
        {
            var pay = PaymentFactory.Factory(
                requestParams.CID,
                requestParams.StoreId,
                requestParams.MachineSn,
                requestParams.DeviceSn,
                requestParams.Mode,
                new PayDetails()
            {
                CardNo       = requestParams.CardNo,
                CardPassword = requestParams.CardPassword,
                Amount       = requestParams.Amount
            },
                requestParams.Amount);

            if (pay is IBackgroundPayment)
            {
                return(((IBackgroundPayment)pay).RequestPay());
            }
            else if (pay is IBackgroundPaymentWithoutWait)
            {
                return(((IBackgroundPaymentWithoutWait)pay).RequestPay());
            }
            return(null);
        }
コード例 #21
0
        public void TestPaymentFactoryForPayTmPayment()
        {
            PaymentFactory paymentFactory = new PaymentFactory();
            IPayment       actualObject   = paymentFactory.GetPaymentMethod("PayTm");

            Assert.IsType <PayTmPayment>(actualObject);
        }
コード例 #22
0
        public void TestMethod1()
        {
            var mockEmployeeBusiness = new Mock <IEmployeeBusiness>();
            var mockRepo             = new Mock <IGenericRepository <Employee> >();

            AutoMapperProfile.Run();
            var mockMapper = new Mock <IMapper>();



            IQueryable <Employee> employees = new Employee[] { new Employee()
                                                               {
                                                                   FirstName = "Alejandro", Id = 1, ContractType = new ContractType {
                                                                       Id = 1
                                                                   }, Salary = 200
                                                               } }.AsQueryable();

            mockRepo.Setup(repo => repo.GetAll()).Returns(employees);
            IPaymentFactory   paymentFac        = new PaymentFactory();
            IEmployeeBusiness _employeeBusiness = new EmployeeBusiness(mockRepo.Object, paymentFac);
            var model = _employeeBusiness.Get(1);

            //Salary = 200
            //MonthlySalary (MonthtlySalary * 12)
            // 200 * 12 = 2400
            Assert.IsTrue(model.AnnualSalary.Equals(2400));
        }
コード例 #23
0
 public void TestUpgradeEmail()
 {
     payment   = PaymentFactory.GetPayment(PaymentTypeEnum.Upgrade);
     email     = payment as IEmail;
     returnMsg = email.SendMail();
     Assert.AreEqual(returnMsg, "Upgrade Email");
 }
コード例 #24
0
		public static void Run()
		{
			var products = new List<Product>
			{
				new Product
				{
					Name = "Spotify Signature",
					Value = new Random().Next(50)
				},
				new Product
				{
					Name = "Airline ticket",
					Value = new Random().Next(3000)
				},
				new Product
				{
					Name = "IPhone",
					Value = new Random().Next(8000)
				},
			};

			var order = new Order
			{
				ID = Guid.NewGuid(),
				Products = products
			};

			var creditCardPayment = new Payment
			{
				PaymentMethod = PaymentMethod.CreditCard,
				CreditCard = "3333 6666 9999 1111"
			};

			var ticketPayment = new Payment
			{
				PaymentMethod = PaymentMethod.Ticket,
			};

			var bankTransactionPayment = new Payment
			{
				PaymentMethod = PaymentMethod.BankTransaction,
			};

			var orderWithCreditCard = new OrderService(PaymentFactory.CreatePayment(creditCardPayment.PaymentMethod));
			var paymentCreditCard = orderWithCreditCard.Pay(order, creditCardPayment);
			Console.WriteLine(paymentCreditCard.Status);

			Console.WriteLine("-------------------------------------------------------");

			var orderWithTicket = new OrderService(PaymentFactory.CreatePayment(ticketPayment.PaymentMethod));
			var paymentWithTicket = orderWithTicket.Pay(order, ticketPayment);
			Console.WriteLine(paymentWithTicket.Status);

			Console.WriteLine("-------------------------------------------------------");

			var orderBankTransaction = new OrderService(PaymentFactory.CreatePayment(bankTransactionPayment.PaymentMethod));
			var paymentBankTransaction = orderBankTransaction.Pay(order, bankTransactionPayment);
			Console.WriteLine(paymentBankTransaction.Status);
		}
コード例 #25
0
        public void PaymentFactory_Should_Generate_FreeVideoSlip()
        {
            int      video         = PaymentType.Video.GetHashCode();
            IPayment paymentObject = PaymentFactory.GetPaymentObject(video);
            bool     result        = paymentObject.ProcessPayment();

            Assert.AreEqual(result, true);
        }
コード例 #26
0
        public void PaymentFactory_Create_DuplicatePackagingSlip_RoyaltyDep_ForBook()
        {
            int      book          = PaymentType.Employee.GetHashCode();
            IPayment paymentObject = PaymentFactory.GetPaymentObject(book);
            bool     result        = paymentObject.ProcessPayment();

            Assert.AreEqual(result, true);
        }
コード例 #27
0
        public void PaymentFactory_Should_ActiavteMembership()
        {
            int      activate      = PaymentType.EmployeeMemeberActivate.GetHashCode();
            IPayment paymentObject = PaymentFactory.GetPaymentObject(activate);
            bool     result        = paymentObject.ProcessPayment();

            Assert.AreEqual(result, true);
        }
コード例 #28
0
        public void PaymentFactory_Should_UpgradeMembership()
        {
            int      upgrade       = PaymentType.MembershipUpgrade.GetHashCode();
            IPayment paymentObject = PaymentFactory.GetPaymentObject(upgrade);
            bool     result        = paymentObject.ProcessPayment();

            Assert.AreEqual(result, true);
        }
コード例 #29
0
        public void Should_have_an_initial_status_set_to_pending()
        {
            // Act
            var aggregate = PaymentFactory.Create(_dateProvider);

            // Assert
            aggregate.Status.Should().Be(PaymentStatus.Pending);
        }
コード例 #30
0
 public IEnumerable <IPay> PaysStatus([FromBody] PaysStatusRequest requestParams)
 {
     return(PaymentFactory.GetPaysStatus(
                requestParams.CID,
                requestParams.StoreId,
                requestParams.MachineSn,
                requestParams.DeviceSn));
 }