public static bool Charge(Customer customer, CreditCard creditCard, decimal amount)
        {
            var chargeDetails = new StripeChargeCreateOptions();
            chargeDetails.Amount = (int)amount * 100;
            chargeDetails.Currency = "usd";

            chargeDetails.Source = new StripeSourceOptions
            {
                Object = "card",
                Number = creditCard.CcNumber,
                ExpirationMonth = creditCard.ExpireDate.Month.ToString(),
                ExpirationYear = creditCard.ExpireDate.Year.ToString(),
                Cvc = creditCard.CVCCode
            };

            var chargeService = new StripeChargeService(stripeApiKey);

            var response = chargeService.Create(chargeDetails);

            if(response.Paid == false)
            {
                throw new Exception(response.FailureMessage);
            }

            return response.Paid;
        }
        public StripeObject CreateCardToken(CreditCard card)
        {
            Require.Argument("card", card);
            ((ICreditCard)card).Validate();

            var request = new RestRequest();
            request.Method = Method.POST;
            request.Resource = "tokens";

            ((ICreditCard)card).AddParametersToRequest(request);

            return ExecuteObject(request);
        }
        public StripeObject CreateCard(string customerId, CreditCard card)
        {
            Require.Argument("customerId", customerId);
            Require.Argument("card", card);

            if (card != null) ((ICreditCard)card).Validate();

            var request = new RestRequest();
            request.Method = Method.POST;
            request.Resource = "customers/{customerId}/cards";

            request.AddUrlSegment("customerId", customerId);

            ((ICreditCard)card).AddParametersToRequest(request);

            return ExecuteObject(request);
        }
        public static void Main()
        {
            var apiKey = "Your API Key"; // can be found here https://manage.stripe.com/#account/apikeys
            var api = new StripeClient(apiKey); // you can learn more about the api here https://stripe.com/docs/api

            var card = new CreditCard {
                Number = "4111111111111111",
                ExpMonth = 3,
                ExpYear = 2015
            };

            dynamic response = api.CreateCharge(
                amount: 10000, // $100
                currency: "usd",
                card: card);

            if (response.Paid)
                Console.WriteLine("Whoo Hoo...  We made our first sale!");
            else
                Console.WriteLine("Payment failed. :(");

            Console.Read();
        }
        public StripeObject CreateCardToken(CreditCard card, decimal? amount = null, string currency = null)
        {
            Require.Argument("card", card);
            ((ICreditCard)card).Validate();

            if (amount.HasValue || currency.HasValue())
            {
                Require.Argument("amount", amount);
                Require.Argument("currency", currency);

                if (amount < 0.5M)
                    throw new ArgumentOutOfRangeException("amount", amount, "Amount must be at least 50 cents");
            }

            var request = new RestRequest();
            request.Method = Method.POST;
            request.Resource = "tokens";

            if (amount.HasValue) request.AddParameter("amount", Convert.ToInt32(amount * 100M));
            if (currency.HasValue()) request.AddParameter("currency", currency);
            ((ICreditCard)card).AddParametersToRequest(request);

            return ExecuteObject(request);
        }