Esempio n. 1
0
        public PaymentRepresentation PayForOrder(string paymentUri, PaymentRepresentation payment)
        {
            var httpClient = GetHttpClient(_baseUri);
            var content    = new ObjectContent <PaymentRepresentation>(payment, new[] { new RestbucksMediaTypeFormatter() });

            content.Headers.ContentType = new MediaTypeHeaderValue(RepresentationBase.RestbucksMediaType);
            var responseMessage = httpClient.Put(paymentUri, content);
            var responseContent = responseMessage.Content.ReadAs <PaymentRepresentation>(new [] { new RestbucksMediaTypeFormatter() });

            return(responseContent);
        }
Esempio n. 2
0
        public Response Pay(int orderId, PaymentRepresentation paymentArgs)
        {
            var order = orderRepository.GetById(orderId);

            if (order == null)
            {
                return(HttpStatusCode.NotFound);
            }
            order.Pay(paymentArgs.CardNumber, paymentArgs.CardOwner);
            return(HttpStatusCode.Created);
        }
        public void AppReturnsBadRequestWhenCancelingPaidOrder()
        {
            var app = new Browser(new Bootstrapper());

              var createdResponse = CreatedOrder(app);
              var orderPath = GetOrderPath(createdResponse);

              var paymentResponse = app.Post(orderPath + "/payment/",
                                     with =>
                                     {
                                       with.HttpRequest();
                                       var xmlString = new PaymentRepresentation { CardNumber = "321", CardOwner = "Jose" }.ToXmlString();
                                       with.Body(xmlString);
                                     });
              Assert.That(paymentResponse.StatusCode, Is.EqualTo(HttpStatusCode.Created));

              var cancelResponse = app.Delete(orderPath);
              Assert.That(cancelResponse.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
        }
        public void WhenOrderExist_ThenCancel()
        {
            //Arrange
              var order = new Order {Id = 123};
              var app = CreateAppProxy(new RepositoryStub<Order>(order));

              // Act
              var response = app.Post("/order/123/payment/",
                              with =>
                              {
                                with.HttpRequest();
                                var xmlString = new PaymentRepresentation {CardNumber = "321", CardOwner = "Jose"}.ToXmlString();
                                with.Body(xmlString);
                              });

              order.Status.Should().Be.EqualTo(OrderStatus.Paid);
              order.Payment.CardOwner.Should().Be.EqualTo("Jose");
              order.Payment.CreditCardNumber.Should().Be.EqualTo("321");
        }
Esempio n. 5
0
        public PaymentRepresentation Pay(int orderId, PaymentRepresentation paymentRepresentation, Uri requestUri)
        {
            var order = _repository.FindById(orderId);

            if (order == null)
            {
                throw new NoSuchOrderException(orderId);
            }
            if (order.Status != OrderStatus.Unpaid)
            {
                throw new UnexpectedOrderStateException(orderId);
            }

            var payment = _paymentMapper.GetDomainObject(paymentRepresentation);

            order.Pay(payment);
            var representation = _paymentMapper.GetRepresentation(order.PaymentInfo);

            representation.OrderLink   = RestbucksResources.GetResourceUri <OrderResource>(requestUri, order.Id.ToString());
            representation.ReceiptLink = RestbucksResources.GetResourceUri <ReceiptResource>(requestUri, orderId.ToString());
            return(representation);
        }
        public void AppReturnsBadRequestWhenCancelingPaidOrder()
        {
            var app = new Browser(new Bootstrapper());

            var createdResponse = CreatedOrder(app);
            var orderPath       = GetOrderPath(createdResponse);

            var paymentResponse = app.Post(orderPath + "/payment/",
                                           with =>
            {
                with.HttpRequest();
                var xmlString = new PaymentRepresentation {
                    CardNumber = "321", CardOwner = "Jose"
                }.ToXmlString();
                with.Body(xmlString);
            });

            Assert.That(paymentResponse.StatusCode, Is.EqualTo(HttpStatusCode.OK));

            var cancelResponse = app.Delete(orderPath);

            Assert.That(cancelResponse.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
        }
        public void WhenOrderExist_ThenCancel()
        {
            //Arrange
            var order = new Order {
                Id = 123
            };
            var app = CreateAppProxy(new RepositoryStub <Order>(order));

            // Act
            var response = app.Post("/order/123/payment/",
                                    with =>
            {
                with.HttpRequest();
                var xmlString = new PaymentRepresentation {
                    CardNumber = "321", CardOwner = "Jose"
                }.ToXmlString();
                with.Body(xmlString);
            });

            order.Status.Should().Be.EqualTo(OrderStatus.Paid);
            order.Payment.CardOwner.Should().Be.EqualTo("Jose");
            order.Payment.CreditCardNumber.Should().Be.EqualTo("321");
        }
Esempio n. 8
0
        static void Main(string[] args)
        {
            //var client = new RestbucksClient("http://restbucks.net");
            var client = new RestbucksClient("http://localhost/Restbucks");

            System.Console.WriteLine("Press enter to send order");
            System.Console.ReadLine();
            var order = client.CreateOrder(CreateOrder());

            System.Console.WriteLine("Order total: {0}", order.Cost);
            System.Console.WriteLine("Press enter to check order state");
            order = client.GetOrder(order.SelfLink);
            System.Console.WriteLine("Order state: {0}", order.Status);
            System.Console.WriteLine("Press enter to pay for the order");
            System.Console.ReadLine();
            var payment = new PaymentRepresentation
            {
                Amount         = 2.8m,
                CardholderName = "Szymon",
                CardNumber     = "XXX",
                ExpiryMonth    = 12,
                ExpiryYear     = 12
            };

            payment = client.PayForOrder(order.PaymentLink, payment);
            System.Console.WriteLine("Press enter to get the receipt");
            System.Console.ReadLine();
            var receipt = client.GetReceipt(payment.ReceiptLink);

            System.Console.WriteLine("You paid ${0} at {1} UTC", receipt.AmountPaid, receipt.PaymentDate);
            System.Console.WriteLine("Press enter to complete order");
            System.Console.ReadLine();
            client.TakeCoffee(receipt.CompleteLink);
            System.Console.WriteLine("Press enter to exit");
            System.Console.ReadLine();
        }
 public PaymentInformation GetDomainObject(PaymentRepresentation paymentRepresentation)
 {
     return(new PaymentInformation(paymentRepresentation.Amount, paymentRepresentation.CardholderName,
                                   paymentRepresentation.CardNumber, paymentRepresentation.ExpiryMonth,
                                   paymentRepresentation.ExpiryYear));
 }