Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }