public AccountPaymentMethod CreateCreditCardPaymentMethod(string cardNumber, long cardExpYear, long cardExpMonth, string cardCvc, byte usedFor) { try { /* var options = new PaymentMethodCreateOptions */ /* { */ /* Type = "card", */ /* Card = new PaymentMethodCardOptions */ /* { */ /* Number = cardNumber, */ /* ExpMonth = cardExpMonth, */ /* ExpYear = cardExpYear, */ /* Cvc = cardCvc */ /* }, */ /* }; */ /* var service = new PaymentMethodService(); */ /* PaymentMethod pm = service.Create(options); */ var tokenOptions = new TokenCreateOptions { Card = new CreditCardOptions { Number = cardNumber, ExpYear = cardExpYear, ExpMonth = cardExpMonth, Cvc = cardCvc } }; var tokenService = new TokenService(); Token token = tokenService.Create(tokenOptions); var stripeCustomer = GetStripeCustomer(); var cardOptions = new CardCreateOptions { Source = token.Id }; var service = new CardService(); Card card = service.Create(stripeCustomer.Id, cardOptions); using (FlyJetsDbContext dbContext = new FlyJetsDbContext(_config)) { var paymentMehtod = new AccountPaymentMethod() { Id = Guid.NewGuid(), AccountId = _accountId, PaymentMethod = (byte)PaymentMethods.CreditCard, TokenId = token.Id, CreditCardBrand = token.Card.Brand, CreditCardLast4 = token.Card.Last4, CreditCardExpMonth = token.Card.ExpMonth, CreditCardExYear = token.Card.ExpYear, UsedFor = usedFor, ReferencePaymentMethodId = card.Id, CreatedOn = DateTime.UtcNow }; dbContext.AccountPaymentMethods.Add(paymentMehtod); dbContext.SaveChanges(); return(paymentMehtod); } } catch (StripeException e) { switch (e.StripeError.ErrorType) { case "card_error": Console.WriteLine("Code: " + e.StripeError.Code); Console.WriteLine("Message: " + e.StripeError.Message); break; case "api_connection_error": Console.WriteLine("Code: " + e.StripeError.Code); Console.WriteLine("Message: " + e.StripeError.Message); break; case "api_error": Console.WriteLine("Code: " + e.StripeError.Code); Console.WriteLine("Message: " + e.StripeError.Message); break; case "authentication_error": Console.WriteLine("Code: " + e.StripeError.Code); Console.WriteLine("Message: " + e.StripeError.Message); break; case "invalid_request_error": Console.WriteLine("Code: " + e.StripeError.Code); Console.WriteLine("Message: " + e.StripeError.Message); break; case "rate_limit_error": Console.WriteLine("Code: " + e.StripeError.Code); Console.WriteLine("Message: " + e.StripeError.Message); break; case "validation_error": Console.WriteLine("Code: " + e.StripeError.Code); Console.WriteLine("Message: " + e.StripeError.Message); break; default: Console.WriteLine("Code: " + e.StripeError.Code); Console.WriteLine("Message: " + e.StripeError.Message); break; } return(null); } }
public AccountPaymentMethod CreateBankAccountPaymentMethod(string accountHolderName, string accountHolderType, string routingNumber, string accountNumber, byte usedFor) { try { var tokenOptions = new TokenCreateOptions { BankAccount = new BankAccountOptions { Country = "US", Currency = "usd", AccountHolderName = accountHolderName, AccountHolderType = accountHolderType, RoutingNumber = routingNumber, AccountNumber = accountNumber } }; var tokenService = new TokenService(); Token token = tokenService.Create(tokenOptions); var stripeCustomer = GetStripeCustomer(); var bankAccountOptions = new BankAccountCreateOptions { Source = token.Id, }; var bankAccountService = new BankAccountService(); BankAccount bankAccount = bankAccountService.Create(stripeCustomer.Id, bankAccountOptions); using (FlyJetsDbContext dbContext = new FlyJetsDbContext(_config)) { var paymentMehtod = new AccountPaymentMethod() { Id = Guid.NewGuid(), AccountId = _accountId, PaymentMethod = (byte)PaymentMethods.BankTransfer, TokenId = token.Id, BankName = token.BankAccount.BankName, RoutingNumber = token.BankAccount.RoutingNumber, HolderName = token.BankAccount.AccountHolderName, AccountLast4 = token.BankAccount.Last4, UsedFor = usedFor, ReferencePaymentMethodId = bankAccount.Id, CreatedOn = DateTime.UtcNow }; dbContext.AccountPaymentMethods.Add(paymentMehtod); dbContext.SaveChanges(); return(paymentMehtod); } } catch (StripeException e) { switch (e.StripeError.ErrorType) { case "card_error": break; case "api_connection_error": break; case "api_error": break; case "authentication_error": break; case "invalid_request_error": break; case "rate_limit_error": break; case "validation_error": break; default: break; } return(null); } }