public void UpdatePaymentIntent(string paymentIntentSecret, string customerId) { _paymentIntentService.Update( paymentIntentSecret, new PaymentIntentUpdateOptions { Customer = customerId, }); }
/// <inheritdoc /> /// <exception cref="UserNotFoundException">Thrown if the user is not found</exception> /// <exception cref="Exception">Thrown if error</exception> public async Task <TransactionViewModel> InjectPaymentMethod(InjectPaymentMethodBody injectPaymentMethodBody) { var user = await ApplicationContext.Users .Include(x => x.PaymentMethods) .FirstOrDefaultAsync(x => x.Id == injectPaymentMethodBody.UserId); var transaction = await ApplicationContext.Transactions.FirstOrDefaultAsync(x => x.StripeIntentId == injectPaymentMethodBody.IntentId); if (user == null) { Logger.LogInformation("User was not found"); throw new UserNotFoundException(); } if (user.PaymentMethods.All(x => x.StripeCardId != injectPaymentMethodBody.CardId)) { throw new Exception("User doesn't own card"); } if (transaction == null) { throw new Exception("Transaction not found"); } var service = new PaymentIntentService(); try { // request the to Stripe api with card id var intent = service.Update(injectPaymentMethodBody.IntentId, new PaymentIntentUpdateOptions { PaymentMethod = injectPaymentMethodBody.CardId }); // update transaction using Stripe response transaction.Updated = DateTime.Now; transaction.Status = Enum.Parse <PaymentStatus>(intent.Status, true); if (transaction.Status == PaymentStatus.succeeded) { transaction.Paid = true; transaction.End = DateTime.Now; } await ApplicationContext.SaveChangesAsync(); return(Mapper.Map <TransactionViewModel>(transaction)); } catch (Exception e) { Console.WriteLine(e); throw; } }
public string SendInvoice( string customerEmail, decimal amountToPay, string currency, string description = "", bool sendInvoice = true) { try { CustomerCreateOptions customerInfo = new CustomerCreateOptions { Email = customerEmail, //PaymentMethod = "card", }; var customerService = new CustomerService(); var customer = customerService.Create(customerInfo); var invoiceItemOption = new InvoiceItemCreateOptions { Customer = customer.Id, Amount = Convert.ToInt32(amountToPay * 100), Currency = currency, }; var invoiceItemService = new InvoiceItemService(); var invoiceItem = invoiceItemService.Create(invoiceItemOption); var invoiceOptions = new InvoiceCreateOptions { Customer = customer.Id, CollectionMethod = "send_invoice", DaysUntilDue = 30, Description = description, AutoAdvance = true }; var service = new InvoiceService(); var invoice = service.Create(invoiceOptions); invoice = service.FinalizeInvoice(invoice.Id); try { var paymentIntentService = new PaymentIntentService(); var paymentIntent = paymentIntentService.Get(invoice.PaymentIntentId); var paymentIntentUpdateOptions = new PaymentIntentUpdateOptions { Description = description }; paymentIntentService.Update(paymentIntent.Id, paymentIntentUpdateOptions); } catch (Exception) { //continue } if (sendInvoice) { invoice = service.SendInvoice(invoice.Id); } return(invoice.Id); } catch (Exception e) { Console.WriteLine(e); return(null); } }
public InvoiceInfo GeneratePayNowLink( string customerEmail, decimal amountToPay, string currency, string description = "") { try { CustomerCreateOptions customerInfo = new CustomerCreateOptions { Email = customerEmail, //PaymentMethod = "card", }; var customerService = new CustomerService(); var customer = customerService.Create(customerInfo); var invoiceItemOption = new InvoiceItemCreateOptions { Customer = customer.Id, Amount = Convert.ToInt32(amountToPay * 100), Currency = currency, }; var invoiceItemService = new InvoiceItemService(); var invoiceItem = invoiceItemService.Create(invoiceItemOption); var invoiceOptions = new InvoiceCreateOptions { Customer = customer.Id, CollectionMethod = "send_invoice", DaysUntilDue = 30, Description = description }; var service = new InvoiceService(); var invoice = service.Create(invoiceOptions); invoice = service.FinalizeInvoice(invoice.Id); try { var paymentIntentService = new PaymentIntentService(); var paymentIntent = paymentIntentService.Get(invoice.PaymentIntentId); var paymentIntentUpdateOptions = new PaymentIntentUpdateOptions { Description = description }; paymentIntentService.Update(paymentIntent.Id, paymentIntentUpdateOptions); } catch (Exception) { //continue } var result = new InvoiceInfo { Url = invoice.HostedInvoiceUrl, Id = invoice.Id }; return(result); } catch (Exception e) { Console.WriteLine(e); return(null); } }