Esempio n. 1
0
        public void CreateCharge_Using_Token()
        {
            dynamic token    = _client.CreateCardToken(_card);
            dynamic response = _client.CreateChargeWithToken(100M, token.Id);

            Assert.NotNull(response);
            Assert.False(response.IsError);
            Assert.True(response.Paid);
        }
        public ActionResult SubmitPayment(int orderId, CheckoutViewModel model)
        {
            var order = db.Orders.SingleOrDefault(o => o.OrderId == orderId);

            if (order == null)
            {
                throw new Exception("Invalid Order");
            }

            order.DeliveryAddress1 = model.DeliveryAddress;
            order.IsRecurring      = false;
            order.RecurFrequency   = RecurFrequency.None;

            order.ScheduledDeliveryDate = DateTime.Parse($"{model.Day} {model.Time}");

            Customer customer = new Customer()
            {
                Address1     = model.DeliveryAddress,
                EmailAddress = model.Email,
                Phone        = model.Phone,
                FirstName    = model.Name.Substring(0, model.Name.IndexOf(' ')),
                LastName     = model.Name.Substring(model.Name.IndexOf(' ') + 1),
                Orders       = new List <Order>()
                {
                    order
                }
            };

            db.Customers.Add(customer);

            db.SaveChanges();

            //new StripeClient(db.Store.First().StripeKey)
            var stripeClient = new StripeClient(db.Store.First().StripePrivateKey.GetDecryptedString(db.Store.First().StripeIV, db.Store.First().StripeKey));

            dynamic response = stripeClient.CreateChargeWithToken(order.GrandTotal, model.StripeToken);

            order.Status = OrderStatus.Paid;
            db.SaveChanges();

            StringBuilder emailBody = new StringBuilder();

            emailBody.AppendLine("--Order Details--");
            emailBody.AppendLine($"Customer Name: {customer.FirstName} {customer.LastName}");
            emailBody.AppendLine($"Phone: {customer.Phone}");

            emailBody.AppendLine($"Delivery Address: {order.DeliveryAddress1} {order.DeliveryAddress2} {order.DeliveryAddress3}");
            emailBody.AppendLine($"Delivery Time: {order.ScheduledDeliveryDate.Value.ToShortDateString()} {order.ScheduledDeliveryDate.Value.ToShortTimeString()}");
            emailBody.AppendLine($"Delivery Charge: ${order.DeliveryCharge}");

            foreach (var orderedProducts in order.OrderedProducts)
            {
                emailBody.AppendLine($"{orderedProducts.Product.DisplayName} x {orderedProducts.QuantityOrdered} @ ${orderedProducts.Product.BasePrice}");
            }

            emailBody.AppendLine();
            emailBody.AppendLine($"Order Total: ${order.GrandTotal}");

            var smtpClient = new SmtpClient()
            {
                Port        = 587,
                Host        = db.Store.First().EmailHost,
                Credentials = new System.Net.NetworkCredential(db.Store.First().EmailUsername, db.Store.First().EmailPassword.GetDecryptedString(db.Store.First().EmailPasswordIV, db.Store.First().EmailPasswordKey)),
            };

            smtpClient.Send(db.Store.First().OrderConfirmationFromAddress, order.Customer.EmailAddress, $"{db.Store.First().DisplayName} Order Confirmation", emailBody.ToString());

            return(View("OrderComplete", model));
        }