Esempio n. 1
0
 public void InsertCustomerSubscription(UserSubscriptionsAddRequest model)
 {
     DataProvider.ExecuteNonQuery("dbo.UserSubscriptions_Insert",
                                  inputParamMapper: (SqlParameterCollection inputs) =>
     {
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@CustomerId", model.CustomerId, SqlDbType.NVarChar, 50));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@CustomerName", model.CustomerName, SqlDbType.NVarChar));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@CustomerEmail", model.CustomerEmail, SqlDbType.NVarChar));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@PlanName", model.PlanName, SqlDbType.NVarChar));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@DurationName", model.DurationName, SqlDbType.NVarChar));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@DiscountPercent", model.DiscountPercent, SqlDbType.Decimal));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@Price", model.Price, SqlDbType.Decimal));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@Currency", model.Currency, SqlDbType.NVarChar, 10));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@StartDate", model.StartDate, SqlDbType.DateTime));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@NextBillingDate", model.NextBillingDate, SqlDbType.DateTime));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@UserBaseId", model.UserBaseId, SqlDbType.Int));
         //isActive automatically true when user is charged
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@IsActive", model.IsActive, SqlDbType.Bit));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@CurrentCard", model.CurrentCard, SqlDbType.NVarChar, 4));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@CardExpMonth", model.CardExpMonth, SqlDbType.Int));
         inputs.Add(SqlDbParameter.Instance.BuildParameter("@CardExpYear", model.CardExpYear, SqlDbType.Int));
     });
 }
Esempio n. 2
0
        //CHARGE CUSTOMER (recurring)
        public void ChargeCustomer(ChargeRequest model)
        {
            StripeConfiguration.SetApiKey("");

            //Create customer for recurring charges
            var customerOptions = new StripeCustomerCreateOptions
            {
                SourceToken = model.SourceTokenOrExistingSourceId,
                Email       = model.Email
            };
            var            customerService = new StripeCustomerService();
            StripeCustomer customer        = customerService.Create(customerOptions);

            //Charge the customer
            var chargeOptions = new StripeChargeCreateOptions
            {
                Amount     = (int)(model.Amount * 100), //Stripe arg in units of cents (usd)
                Currency   = model.Currency,
                CustomerId = customer.Id
            };

            var          chargeService = new StripeChargeService();
            StripeCharge charge        = chargeService.Create(chargeOptions);

            //insert into transaction table
            TransactionsAddRequest transactionModel = new TransactionsAddRequest
            {
                UserBaseId      = model.UserBaseId,
                PlanId          = model.PlanId,
                DurationTypeId  = model.DurationTypeId,
                DiscountPercent = model.DiscountPercent,
                ChargeId        = charge.Id,
                AmountPaid      = model.Amount,
                Currency        = model.Currency,
                CardId          = charge.Source.Card.Id,
                ExpMonth        = charge.Source.Card.ExpirationMonth,
                ExpYear         = charge.Source.Card.ExpirationYear,
                CardLast4       = charge.Source.Card.Last4,
                NetworkStatus   = charge.Outcome.NetworkStatus,
                Type            = charge.Outcome.Type,
                isPaid          = charge.Paid,
                CreatedDate     = charge.Created
            };

            InsertTransaction(transactionModel);

            //insert into customer subscription table
            DateTime _nextBillingDate = (customer.Created).AddMonths(model.DurationMonths);

            UserSubscriptionsAddRequest usersubModel = new UserSubscriptionsAddRequest
            {
                CustomerId      = customer.Id,
                CustomerName    = model.Name,
                CustomerEmail   = model.Email,
                PlanName        = model.PlanName,
                DurationName    = model.DurationName,
                DiscountPercent = model.DiscountPercent,
                Price           = model.Amount,
                Currency        = model.Currency,
                StartDate       = customer.Created,
                NextBillingDate = _nextBillingDate,
                UserBaseId      = model.UserBaseId,
                PlanId          = model.PlanId,
                DurationTypeId  = model.DurationTypeId,
                DurationMonths  = model.DurationMonths,
                IsActive        = true,
                CurrentCard     = charge.Source.Card.Last4,
                CardExpMonth    = charge.Source.Card.ExpirationMonth,
                CardExpYear     = charge.Source.Card.ExpirationYear
            };

            InsertCustomerSubscription(usersubModel);
        }