Esempio n. 1
0
 public StripeAdapter()
 {
     _customerService      = new Stripe.CustomerService();
     _subscriptionService  = new Stripe.SubscriptionService();
     _invoiceService       = new Stripe.InvoiceService();
     _paymentMethodService = new Stripe.PaymentMethodService();
     _taxRateService       = new Stripe.TaxRateService();
     _taxIdService         = new Stripe.TaxIdService();
     _chargeService        = new Stripe.ChargeService();
     _refundService        = new Stripe.RefundService();
     _cardService          = new Stripe.CardService();
     _bankAccountService   = new Stripe.BankAccountService();
 }
Esempio n. 2
0
        public async Task <IActionResult> Payment(string stripeEmail, string stripeToken)
        {
            var customers = new Stripe.CustomerService();
            var charges   = new Stripe.ChargeService();
            var user      = _userManager.GetUserAsync(User).Result;

            int.TryParse(HttpContext.Request.Cookies["counter"], out int counter);
            var orderProducts = await GetOrderProductsList(counter);

            decimal price = 0;

            foreach (var item in orderProducts)
            {
                var stock = await _context.Stock.FirstAsync(x => x.Id == item.StockId);

                stock.Qty -= item.Qty;
                for (int i = 0; i < item.Qty; i++)
                {
                    price += item.Product.Price;
                }

                if (stock.Qty == 0)
                {
                    stock.IsLastElementOrdered = true;
                }

                _context.Update(stock);
                await _context.OrderProducts.AddAsync(item);
            }

            var customer = customers.Create(new Stripe.CustomerCreateOptions
            {
                Email   = stripeEmail,
                Source  = stripeToken,
                Name    = user.FirstName + " " + user.LastName,
                Address = new Stripe.AddressOptions {
                    City = user.City, Country = "Poland", PostalCode = user.PostCode, Line1 = user.Address1, Line2 = user.Address2
                },
                Phone = user.PhoneNumber,
            });

            var charge = charges.Create(new Stripe.ChargeCreateOptions
            {
                Amount       = Convert.ToInt64(price * 100),
                Description  = "Sample Charge",
                Currency     = "PLN",
                Customer     = customer.Id,
                ReceiptEmail = stripeEmail,
            });

            System.Diagnostics.Debug.WriteLine($"Zamówienie użytkownika {user.UserName} o id = {user.   Id}");


            //można to zrobić mapperem ale trzeba go dokładnie skonfigurować
            var order = new Order
            {
                FirstName     = user.FirstName,
                LastName      = user.LastName,
                Email         = user.Email,
                Address1      = user.Address1,
                Address2      = user.Address2,
                City          = user.City,
                PostCode      = user.PostCode,
                OrderProducts = orderProducts,
                OrderDate     = DateTime.Now,
                UserId        = user.Id,
                ChargeId      = charge.Id
            };

            await _context.AddAsync(order);

            // czyszczenie koszyka
            HttpContext.Response.Cookies.Delete("counter");

            // todo dodanie zamówienia do tabeli orders i przypisywać je danemu użytkownikowi

            await _context.SaveChangesAsync();

            System.Diagnostics.Debug.WriteLine("Poprawne zamowienie");

            return(RedirectToAction("OrdersHistory", "Account"));
        }
Esempio n. 3
0
        public ActionResult Charge()
        {
            var utente = Session["User"] as MyCommerceDemo.Database.tuteweb;
            var cart   = Session["Cart"] as Dictionary <Product, int>;


            var myCharge = new Stripe.ChargeCreateOptions
            {
                Amount       = (long)cart.Sum(item => item.Key.DiscountPrice * item.Value) * 100,
                Currency     = "EUR",
                ReceiptEmail = Request.Form["stripeEmail"],
                Description  = Const.Title,
                Source       = Request.Form["stripeToken"],
                Capture      = true
            };
            var chargeService = new Stripe.ChargeService();

            Stripe.Charge stripeCharge = chargeService.Create(myCharge);

            if (stripeCharge.Status == "succeeded")
            {
                long idCliente = 0;
                if (Session["User"] != null)
                {
                    idCliente = (long)(Session["User"] as MyCommerceDemo.Database.tuteweb).idcliente;
                }
                CLIENTI model;
                if (idCliente == 0)
                {
                    model = new CLIENTI();
                }
                else
                {
                    model = _db.CLIENTI.Where(i => i.idcliente == idCliente).FirstOrDefault();
                }

                var nome         = Request["nome"];
                var ragsoc       = Request["ragsoc"];
                var piva         = Request["piva"];
                var indirizzo    = Request["indirizzo"];
                var comune       = Request["comune"];
                var cap          = Request["cap"];
                var citta        = Request["citta"];
                var sigla        = Request["sigla"];
                var telefono     = Request["telefono"];
                var email        = Request["email"];
                var dataconsegna = Request["dataconsegna"];

                model.denominazione   = ragsoc;
                model.contauno        = nome;
                model.PIVA            = piva;
                model.indirizzolegale = indirizzo;
                model.comunelegale    = comune;
                model.caplegale       = cap;
                model.cittàlegale     = citta;
                model.siglalegale     = sigla;
                model.telefono1legale = telefono;
                model.mailcontauno    = email;
                model.clientecontatto = "Contatto";
                //model.escludidaelencoclienti
                if (idCliente == 0)
                {
                    _db.CLIENTI.Add(model);
                }
                _db.SaveChanges();

                var user = (Session["User"] as MyCommerceDemo.Database.tuteweb);
                user.idcliente  = model.idcliente;
                Session["User"] = user;



                // Carrello in ordine

                var ordine = new MyCommerceDemo.Database.datiordineclienteweb()
                {
                    idcliente            = idCliente,
                    cliente              = ragsoc,
                    totaleivaesclusa     = cart.Sum(item => item.Key.DiscountPrice * item.Value),
                    dataconsegnaprevista = DateTime.Parse(dataconsegna),
                    idaziendamaster      = Const.IdAziendaMaster,
                    statoordine          = "Attesa convalida",
                    dataordine           = DateTime.Now,
                    metodoconsegna       = "Ritira il cliente",
                    descrizioneordine    = ""
                };
                _db.datiordineclienteweb.Add(ordine);
                _db.SaveChanges();

                foreach (var item in cart)
                {
                    var riga = new MyCommerceDemo.Database.articoliordineclienteweb()
                    {
                        unitàmisura              = item.Key.unitàmisura,
                        codicearticolo           = item.Key.codicearticolo,
                        descrizionebrevearticolo = item.Key.descrizionebrevearticolo,
                        codiceabarrearticolo     = item.Key.codicearticolo,
                        quantità         = item.Value,
                        idaziendamaster  = Const.IdAziendaMaster,
                        idlistino        = item.Key.idlistino,
                        idordine         = ordine.idordine,
                        dataordine       = ordine.dataordine,
                        idcliente        = ordine.idcliente,
                        prezzounitario   = item.Key.DiscountPrice,
                        totaleivaesclusa = item.Key.DiscountPrice * item.Value,
                        coefk            = 0
                    };
                    _db.articoliordineclienteweb.Add(riga);
                }
                _db.SaveChanges();

                return(RedirectToAction("Orders", "User"));
            }

            return(RedirectToAction("Orders", "User"));
        }