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(); }
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")); }
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")); }