public static ISubscriptionRequest CreateAuthorizeDotNetSubscriptionRequest(CreditCard creditCard, SubscriptionType subscriptionType, WebSite.Models.User user) { ISubscriptionRequest request = SubscriptionRequest.CreateNew(); // Billing address information DatabaseContext db = System.Web.Mvc.DependencyResolver.Current.GetService(typeof(DatabaseContext)) as DatabaseContext; string countryName = db.Countries.Find(creditCard.BillingAddress.CountryId).Name; SetSubscriptionBillingAddress(request, creditCard, countryName); // Subscription information SetSubscriptionBasics(request, subscriptionType); // Credit card information SetSubscriptionCreditCardInformation(request, creditCard); // Customer information request.CustomerEmail = user.EmailAddress; request.CustomerID = user.UserId.ToString(); return(request); }
private ISubscriptionRequest CreateAuthorizeDotNetSubscriptionRequest(SubscriptionRegistration registrationInformation, WebSite.Models.User user, DateTime startsOn) { ISubscriptionRequest subscriptionRequest = SubscriptionRequest.CreateNew(); // Billing address information string countryName = _db.Countries.Find(registrationInformation.CreditCard.BillingAddress.CountryId).Name; subscriptionRequest.BillingAddress = new AuthorizeNet.Address() { City = registrationInformation.CreditCard.BillingAddress.City, Country = countryName, First = registrationInformation.CreditCard.CardholderFirstName, Last = registrationInformation.CreditCard.CardholderLastName, Phone = registrationInformation.CreditCard.BillingAddress.PhoneNumber, State = registrationInformation.CreditCard.BillingAddress.ProvinceOrState, Street = registrationInformation.CreditCard.BillingAddress.AddressLine1 + (!string.IsNullOrEmpty(registrationInformation.CreditCard.BillingAddress.AddressLine2) ? (Environment.NewLine + registrationInformation.CreditCard.BillingAddress.AddressLine2) : string.Empty) , Zip = registrationInformation.CreditCard.BillingAddress.PostalCode }; // Subscription information SubscriptionType selectedSubscriptionType = registrationInformation.AvailableSubscriptionTypes.First(st => st.SubscriptionTypeId == registrationInformation.SelectedSubscriptionTypeId); subscriptionRequest.StartsOn = startsOn; subscriptionRequest.Amount = selectedSubscriptionType.Price; subscriptionRequest.SubscriptionName = selectedSubscriptionType.SubscriptionFrequency.Name + " Membership"; // Subscription interval if (selectedSubscriptionType.SubscriptionFrequency.Name == PredefinedSubscriptionFrequencies.Monthly) { subscriptionRequest.BillingInterval = 1; subscriptionRequest.BillingIntervalUnits = BillingIntervalUnits.Months; } else if (selectedSubscriptionType.SubscriptionFrequency.Name == PredefinedSubscriptionFrequencies.Quarterly) { subscriptionRequest.BillingInterval = 365 / 4; subscriptionRequest.BillingIntervalUnits = BillingIntervalUnits.Days; } else if (selectedSubscriptionType.SubscriptionFrequency.Name == PredefinedSubscriptionFrequencies.Yearly) { subscriptionRequest.BillingInterval = 365; subscriptionRequest.BillingIntervalUnits = BillingIntervalUnits.Days; } else { // TODO: Log Error! We should never hit this case. } // Credit card information subscriptionRequest.CardCode = registrationInformation.CreditCard.CVV; subscriptionRequest.CardExpirationMonth = registrationInformation.CreditCard.ExpirationMonth; subscriptionRequest.CardExpirationYear = registrationInformation.CreditCard.ExpirationYear; subscriptionRequest.CardNumber = registrationInformation.CreditCard.Number; // Customer information subscriptionRequest.CustomerEmail = user.EmailAddress; subscriptionRequest.CustomerID = user.UserId.ToString(); return(subscriptionRequest); }