public ActionResult Index() { var customerRequest = new CustomerSearchRequest(). Id.Is(Request.QueryString["id"]); ResourceCollection<Customer> customers = Constants.Gateway.Customer.Search(customerRequest); // There should only ever be one customer with the given ID Customer customer = customers.FirstItem; string PaymentMethodToken = customer.CreditCards[0].Token; var SubscriptionRequest = new SubscriptionRequest { PaymentMethodToken = PaymentMethodToken, PlanId = "test_plan_1" }; Result<Subscription> result = Constants.Gateway.Subscription.Create(SubscriptionRequest); if (result.IsSuccess()) { ViewData["Message"] = result.Target.Status; } else { ViewData["Message"] = string.Join(", ", result.Errors.DeepAll()); } return View(); }
public void Create_SubscriptionWithoutTrial() { TestPlan plan = PlanFixture.PLAN_WITHOUT_TRIAL; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; Assert.AreEqual(creditCard.Token, subscription.PaymentMethodToken); Assert.AreEqual(plan.Id, subscription.PlanId); Assert.AreEqual(MerchantAccount.DEFAULT_MERCHANT_ACCOUNT_ID, subscription.MerchantAccountId); Assert.AreEqual(plan.Price, subscription.Price); Assert.AreEqual(plan.Price, subscription.NextBillAmount); Assert.AreEqual(plan.Price, subscription.NextBillingPeriodAmount); Assert.AreEqual(0.00M, subscription.Balance); Assert.IsTrue(Regex.IsMatch(subscription.Id, "^\\w{6}$")); Assert.AreEqual(SubscriptionStatus.ACTIVE, subscription.Status); Assert.AreEqual(0, subscription.FailureCount); Assert.IsFalse((Boolean)subscription.HasTrialPeriod); Assert.AreEqual(1, subscription.CurrentBillingCycle); Assert.IsTrue(subscription.BillingPeriodEndDate.HasValue); Assert.IsTrue(subscription.BillingPeriodStartDate.HasValue); Assert.IsTrue(subscription.NextBillingDate.HasValue); Assert.IsTrue(subscription.FirstBillingDate.HasValue); Assert.IsTrue(subscription.PaidThroughDate.HasValue); }
public void Create_ReturnsDeclinedTransaction() { Plan plan = Plan.PLAN_WITHOUT_TRIAL; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id, Price = SandboxValues.TransactionAmount.DECLINE }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsFalse(result.IsSuccess()); Assert.AreEqual(TransactionStatus.PROCESSOR_DECLINED, result.Transaction.Status); }
public void Create_SubscriptionReturnsATransactionWithSubscriptionBillingPeriod() { TestPlan plan = PlanFixture.PLAN_WITHOUT_TRIAL; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; Transaction transaction = subscription.Transactions[0]; Assert.AreEqual(subscription.BillingPeriodStartDate, transaction.Subscription.BillingPeriodStartDate); Assert.AreEqual(subscription.BillingPeriodEndDate, transaction.Subscription.BillingPeriodEndDate); }
public ActionResult Create(string id) { try { Customer customer = Constants.Gateway.Customer.Find(id); string paymentMethodToken = customer.CreditCards[0].Token; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = paymentMethodToken, PlanId = "test_plan_1" }; Result<Subscription> result = Constants.Gateway.Subscription.Create(request); return Content("Subscription Status " + result.Target.Status); } catch (Braintree.Exceptions.NotFoundException e) { return Content("No customer found for id: " + id); } }
public void ToXML_EnsuresUSLocaleForDecimals() { System.Globalization.CultureInfo existingCulture = System.Globalization.CultureInfo.CurrentCulture; try { System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("it-IT"); TransactionRequest transactionRequest = new TransactionRequest { Amount = 100.0M }; SubscriptionRequest subscriptionRequest = new SubscriptionRequest { Price = 200.0M, }; SubscriptionTransactionRequest subscriptionTransactionRequest = new SubscriptionTransactionRequest { Amount = 300.0M }; ModificationRequest modificationRequest = new ModificationRequest { Amount = 400.0M }; TestHelper.AssertIncludes("<amount>100.0</amount>", transactionRequest.ToXml()); TestHelper.AssertIncludes("<price>200.0</price>", subscriptionRequest.ToXml()); TestHelper.AssertIncludes("<amount>300.0</amount>", subscriptionTransactionRequest.ToXml()); TestHelper.AssertIncludes("<amount>400.0</amount>", modificationRequest.ToXml("root")); } finally { System.Threading.Thread.CurrentThread.CurrentCulture = existingCulture; } }
public void Search_OnNextBillingDate() { TestPlan triallessPlan = PlanFixture.PLAN_WITHOUT_TRIAL; TestPlan trialPlan = PlanFixture.PLAN_WITH_TRIAL; SubscriptionRequest request1 = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = triallessPlan.Id, Price = 7M }; SubscriptionRequest request2 = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = trialPlan.Id, Price = 7M }; Subscription triallessSubscription = gateway.Subscription.Create(request1).Target; Subscription trialSubscription = gateway.Subscription.Create(request2).Target; SubscriptionSearchRequest request = new SubscriptionSearchRequest(). NextBillingDate.GreaterThanOrEqualTo(DateTime.Now.AddDays(5)); ResourceCollection<Subscription> collection = gateway.Subscription.Search(request); Assert.IsTrue(TestHelper.IncludesSubscription(collection, triallessSubscription)); Assert.IsFalse(TestHelper.IncludesSubscription(collection, trialSubscription)); }
public void Search_OnMerchantAccountIdIs() { SubscriptionRequest request1 = new SubscriptionRequest { MerchantAccountId = MerchantAccountIDs.DEFAULT_MERCHANT_ACCOUNT_ID, PaymentMethodToken = creditCard.Token, PlanId = PlanFixture.PLAN_WITH_TRIAL.Id, Price = 2M }; SubscriptionRequest request2 = new SubscriptionRequest { MerchantAccountId = MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID, PaymentMethodToken = creditCard.Token, PlanId = PlanFixture.PLAN_WITH_TRIAL.Id, Price = 2M }; Subscription defaultMerchantAccountSubscription = gateway.Subscription.Create(request1).Target; Subscription nonDefaultMerchantAccountSubscription = gateway.Subscription.Create(request2).Target; SubscriptionSearchRequest request = new SubscriptionSearchRequest(). MerchantAccountId.Is(MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID). Price.Is(2M); ResourceCollection<Subscription> collection = gateway.Subscription.Search(request); Assert.IsTrue(TestHelper.IncludesSubscription(collection, nonDefaultMerchantAccountSubscription)); Assert.IsFalse(TestHelper.IncludesSubscription(collection, defaultMerchantAccountSubscription)); }
public void Create_SubscriptionWithPaymentMethodNonce() { TestPlan plan = PlanFixture.PLAN_WITHOUT_TRIAL; String nonce = TestHelper.GenerateUnlockedNonce(gateway, "4242424242424242", creditCard.CustomerId); SubscriptionRequest request = new SubscriptionRequest { PaymentMethodNonce = nonce, PlanId = plan.Id }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; Transaction transaction = subscription.Transactions[0]; Assert.AreEqual("424242", transaction.CreditCard.Bin); }
public void Search_OnDaysPastDueBetween() { SubscriptionRequest subscriptionRequest = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = PlanFixture.PLAN_WITH_TRIAL.Id, }; Subscription subscription = gateway.Subscription.Create(subscriptionRequest).Target; MakePastDue(subscription, 3); SubscriptionSearchRequest request = new SubscriptionSearchRequest(). DaysPastDue.Between(2, 10); ResourceCollection<Subscription> collection = gateway.Subscription.Search(request); Assert.IsTrue(collection.MaximumCount > 0); foreach (Subscription foundSubscription in collection) { Assert.IsTrue(foundSubscription.DaysPastDue >= 2 && foundSubscription.DaysPastDue <= 10); } }
public void Find() { TestPlan plan = PlanFixture.PLAN_WITH_TRIAL; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id }; Subscription subscription = gateway.Subscription.Create(request).Target; Subscription foundSubscription = gateway.Subscription.Find(subscription.Id); Assert.AreEqual(subscription.Id, foundSubscription.Id); Assert.AreEqual(subscription.PaymentMethodToken, creditCard.Token); Assert.AreEqual(subscription.PlanId, plan.Id); }
public void Create_CanAddAddOnsAndDiscounts() { TestPlan plan = PlanFixture.ADD_ON_DISCOUNT_PLAN; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id, AddOns = new AddOnsRequest { Add = new AddAddOnRequest[] { new AddAddOnRequest { InheritedFromId = "increase_30", Amount = 35M, NumberOfBillingCycles = 3, Quantity = 8 } }, Remove = new String[] { "increase_10", "increase_20" } }, Discounts = new DiscountsRequest { Add = new AddDiscountRequest[] { new AddDiscountRequest { InheritedFromId = "discount_15", Amount = 17M, NeverExpires = true, Quantity = 9 } }, Remove = new String[] { "discount_7", "discount_11" } } }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; Assert.AreEqual(1, subscription.AddOns.Count); Assert.AreEqual("increase_30", subscription.AddOns[0].Id); Assert.AreEqual(35M, subscription.AddOns[0].Amount); Assert.AreEqual(8, subscription.AddOns[0].Quantity); Assert.IsFalse(subscription.AddOns[0].NeverExpires.Value); Assert.AreEqual(3, subscription.AddOns[0].NumberOfBillingCycles); Assert.AreEqual(0, subscription.AddOns[0].CurrentBillingCycle); Assert.AreEqual(1, subscription.Discounts.Count); Assert.AreEqual("discount_15", subscription.Discounts[0].Id); Assert.AreEqual(17M, subscription.Discounts[0].Amount); Assert.AreEqual(9, subscription.Discounts[0].Quantity); Assert.IsTrue(subscription.Discounts[0].NeverExpires.Value); Assert.IsNull(subscription.Discounts[0].NumberOfBillingCycles); Assert.AreEqual(0, subscription.Discounts[0].CurrentBillingCycle); }
public virtual async Task <Result <Subscription> > CreateAsync(SubscriptionRequest request) { XmlNode subscriptionXML = await service.PostAsync(service.MerchantPath() + "/subscriptions", request); return(new ResultImpl <Subscription>(new NodeWrapper(subscriptionXML), gateway)); }
public virtual Result <Subscription> Update(String id, SubscriptionRequest request) { XmlNode subscriptionXML = Service.Put("/subscriptions/" + id, request); return(new ResultImpl <Subscription>(new NodeWrapper(subscriptionXML), Service)); }
public virtual Result <Subscription> Create(SubscriptionRequest request) { XmlNode subscriptionXML = Service.Post("/subscriptions", request); return(new ResultImpl <Subscription>(new NodeWrapper(subscriptionXML), Service)); }
public void Find_FindsAssociatedSubscriptions() { Customer customer = gateway.Customer.Create(new CustomerRequest()).Target; var creditCardRequest = new CreditCardRequest { CustomerId = customer.Id, Number = "5105105105105100", ExpirationDate = "05/12", CVV = "123" }; CreditCard originalCreditCard = gateway.CreditCard.Create(creditCardRequest).Target; string id = Guid.NewGuid().ToString(); var subscriptionRequest = new SubscriptionRequest { Id = id, PlanId = "integration_trialless_plan", PaymentMethodToken = originalCreditCard.Token, Price = 1.00M }; gateway.Subscription.Create(subscriptionRequest); CreditCard creditCard = gateway.CreditCard.Find(originalCreditCard.Token); Subscription subscription = creditCard.Subscriptions[0]; Assert.AreEqual(id, subscription.Id); Assert.AreEqual("integration_trialless_plan", subscription.PlanId); Assert.AreEqual(1.00M, subscription.Price); }
public virtual Result<Subscription> Create(SubscriptionRequest request) { XmlNode subscriptionXML = service.Post(service.MerchantPath() + "/subscriptions", request); return new ResultImpl<Subscription>(new NodeWrapper(subscriptionXML), gateway); }
public virtual Result <Subscription> Create(SubscriptionRequest request) { XmlNode subscriptionXML = service.Post(service.MerchantPath() + "/subscriptions", request); return(new ResultImpl <Subscription>(new NodeWrapper(subscriptionXML), gateway)); }
public void Create_CanRemoveInheritedAddOnsAndDiscounts() { TestPlan plan = PlanFixture.ADD_ON_DISCOUNT_PLAN; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id, AddOns = new AddOnsRequest { Remove = new String[] { "increase_10", "increase_20" } }, Discounts = new DiscountsRequest { Remove = new String[] { "discount_11" } } }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; Assert.AreEqual(0, subscription.AddOns.Count); Assert.AreEqual(1, subscription.Discounts.Count); Assert.AreEqual("discount_7", subscription.Discounts[0].Id); }
public virtual Result <Subscription> Update(string id, SubscriptionRequest request) { XmlNode subscriptionXML = service.Put(service.MerchantPath() + "/subscriptions/" + id, request); return(new ResultImpl <Subscription>(new NodeWrapper(subscriptionXML), gateway)); }
public void Create_WithBadAddOnParamsCorrectlyParsesValidationErrors() { TestPlan plan = PlanFixture.ADD_ON_DISCOUNT_PLAN; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id, AddOns = new AddOnsRequest { Update = new UpdateAddOnRequest[] { new UpdateAddOnRequest { ExistingId = "increase_10", Amount = -200M }, new UpdateAddOnRequest { ExistingId = "increase_20", Quantity = -9 } } } }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsFalse(result.IsSuccess()); Assert.AreEqual(ValidationErrorCode.SUBSCRIPTION_MODIFICATION_AMOUNT_IS_INVALID, result.Errors.ForObject("Subscription").ForObject("AddOns").ForObject("Update").ForIndex(0).OnField("Amount")[0].Code); Assert.AreEqual(ValidationErrorCode.SUBSCRIPTION_MODIFICATION_QUANTITY_IS_INVALID, result.Errors.ForObject("Subscription").ForObject("AddOns").ForObject("Update").ForIndex(1).OnField("Quantity")[0].Code); }
public virtual async Task <Result <Subscription> > UpdateAsync(string id, SubscriptionRequest request) { XmlNode subscriptionXML = await service.PutAsync(service.MerchantPath() + "/subscriptions/" + id, request).ConfigureAwait(false); return(new ResultImpl <Subscription>(new NodeWrapper(subscriptionXML), gateway)); }
public void Search_OnBillingCyclesRemainingIs() { SubscriptionRequest request1 = new SubscriptionRequest { NumberOfBillingCycles = 5, PaymentMethodToken = creditCard.Token, PlanId = PlanFixture.PLAN_WITH_TRIAL.Id, Price = 4M }; SubscriptionRequest request2 = new SubscriptionRequest { NumberOfBillingCycles = 10, PaymentMethodToken = creditCard.Token, PlanId = PlanFixture.PLAN_WITH_TRIAL.Id, Price = 4M }; Subscription subscription1 = gateway.Subscription.Create(request1).Target; Subscription subscription2 = gateway.Subscription.Create(request2).Target; SubscriptionSearchRequest request = new SubscriptionSearchRequest(). BillingCyclesRemaining.Is(5). Price.Is(4M); ResourceCollection<Subscription> collection = gateway.Subscription.Search(request); Assert.IsTrue(TestHelper.IncludesSubscription(collection, subscription1)); Assert.IsFalse(TestHelper.IncludesSubscription(collection, subscription2)); }
public void Create_SetId() { TestPlan plan = PlanFixture.PLAN_WITH_TRIAL; String newId = "new-id-" + new Random().Next(1000000); SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id, Price = 482.48M, Id = newId }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; Assert.AreEqual(newId, subscription.Id); }
public void Search_OnIdIs() { SubscriptionRequest request1 = new SubscriptionRequest { Id = String.Format("find_me{0}", new Random().Next(1000000)), PaymentMethodToken = creditCard.Token, PlanId = PlanFixture.PLAN_WITH_TRIAL.Id, Price = 3M }; SubscriptionRequest request2 = new SubscriptionRequest { Id = String.Format("do_not_find_me{0}", new Random().Next(1000000)), PaymentMethodToken = creditCard.Token, PlanId = PlanFixture.PLAN_WITH_TRIAL.Id, Price = 3M }; Subscription subscription1 = gateway.Subscription.Create(request1).Target; Subscription subscription2 = gateway.Subscription.Create(request2).Target; SubscriptionSearchRequest request = new SubscriptionSearchRequest(). Id.StartsWith("find_me"). Price.Is(3M); ResourceCollection<Subscription> collection = gateway.Subscription.Search(request); Assert.IsTrue(TestHelper.IncludesSubscription(collection, subscription1)); Assert.IsFalse(TestHelper.IncludesSubscription(collection, subscription2)); }
public void Create_SetMerchantAccountId() { TestPlan plan = PlanFixture.PLAN_WITH_TRIAL; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id, MerchantAccountId = MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; Assert.AreEqual(MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID, subscription.MerchantAccountId); }
public void Search_OnInTrialPeriodIs() { SubscriptionRequest request1 = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = PlanFixture.PLAN_WITH_TRIAL.Id }; SubscriptionRequest request2 = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = PlanFixture.PLAN_WITHOUT_TRIAL.Id }; Subscription trial = gateway.Subscription.Create(request1).Target; Subscription noTrial = gateway.Subscription.Create(request2).Target; SubscriptionSearchRequest request = new SubscriptionSearchRequest(). InTrialPeriod.Is(true); ResourceCollection<Subscription> trialResults = gateway.Subscription.Search(request); Assert.IsTrue(TestHelper.IncludesSubscription(trialResults, trial)); Assert.IsFalse(TestHelper.IncludesSubscription(trialResults, noTrial)); request = new SubscriptionSearchRequest(). InTrialPeriod.Is(false); ResourceCollection<Subscription> noTrialResults = gateway.Subscription.Search(request); Assert.IsTrue(TestHelper.IncludesSubscription(noTrialResults, noTrial)); Assert.IsFalse(TestHelper.IncludesSubscription(noTrialResults, trial)); }
public void Create_HasTransactionOnCreateWithNoTrial() { TestPlan plan = PlanFixture.PLAN_WITHOUT_TRIAL; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id, Price = 482.48M }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; Transaction transaction = subscription.Transactions[0]; Assert.AreEqual(1, subscription.Transactions.Count); Assert.AreEqual(482.48M, transaction.Amount); Assert.AreEqual(TransactionType.SALE, transaction.Type); Assert.AreEqual(subscription.Id, transaction.SubscriptionId); }
public void Search_OnMerchantAccountIdWithBogusMerchantId() { Random random = new Random(); String subscriptionId = random.Next(0, 100000).ToString(); var subscriptionRequest = new SubscriptionRequest { MerchantAccountId = MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID, PaymentMethodToken = creditCard.Token, PlanId = PlanFixture.PLAN_WITH_TRIAL.Id, Price = 2M, Id = subscriptionId }; gateway.Subscription.Create(subscriptionRequest); var searchRequest = new SubscriptionSearchRequest(). MerchantAccountId.Is(MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID). Id.Is(subscriptionId). Price.Is(2M); var collection = gateway.Subscription.Search(searchRequest); Assert.AreEqual(1, collection.MaximumCount); searchRequest = new SubscriptionSearchRequest(). MerchantAccountId.IncludedIn(MerchantAccountIDs.NON_DEFAULT_MERCHANT_ACCOUNT_ID, "bogus_merchant_account_id"). Id.Is(subscriptionId). Price.Is(2M); collection = gateway.Subscription.Search(searchRequest); Assert.AreEqual(1, collection.MaximumCount); searchRequest = new SubscriptionSearchRequest(). MerchantAccountId.Is("bogus_merchant_account_id"). Id.Is(subscriptionId). Price.Is(2M); collection = gateway.Subscription.Search(searchRequest); Assert.AreEqual(0, collection.MaximumCount); }
public void Create_HasNoTransactionOnCreateWithATrial() { TestPlan plan = PlanFixture.PLAN_WITH_TRIAL; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; Assert.AreEqual(0, subscription.Transactions.Count); }
public void Search_OnPlanIdIs() { TestPlan triallessPlan = PlanFixture.PLAN_WITHOUT_TRIAL; TestPlan trialPlan = PlanFixture.PLAN_WITH_TRIAL; SubscriptionRequest request1 = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = trialPlan.Id, Price = 5M }; SubscriptionRequest request2 = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = triallessPlan.Id, Price = 5M }; Subscription trialSubscription = gateway.Subscription.Create(request1).Target; Subscription triallessSubscription = gateway.Subscription.Create(request2).Target; SubscriptionSearchRequest request = new SubscriptionSearchRequest(). PlanId.Is(trialPlan.Id). Price.Is(5M); ResourceCollection<Subscription> collection = gateway.Subscription.Search(request); Assert.IsTrue(TestHelper.IncludesSubscription(collection, trialSubscription)); Assert.IsFalse(TestHelper.IncludesSubscription(collection, triallessSubscription)); }
public void Create_InheritsNoAddOnsAndDiscountsWhenOptionIsPassed() { TestPlan plan = PlanFixture.ADD_ON_DISCOUNT_PLAN; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id, Options = new SubscriptionOptionsRequest { DoNotInheritAddOnsOrDiscounts = true } }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; Assert.AreEqual(0, subscription.AddOns.Count); Assert.AreEqual(0, subscription.Discounts.Count); }
public void SnapshotPlanIdAddOnsAndDiscountsFromSubscription() { CustomerRequest customerRequest = new CustomerRequest { CreditCard = new CreditCardRequest { CardholderName = "Fred Jones", Number = "5105105105105100", ExpirationDate = "05/12" } }; CreditCard creditCard = gateway.Customer.Create(customerRequest).Target.CreditCards[0]; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = PlanFixture.PLAN_WITHOUT_TRIAL.Id, AddOns = new AddOnsRequest { Add = new AddAddOnRequest[] { new AddAddOnRequest { InheritedFromId = "increase_10", Amount = 11M, NumberOfBillingCycles = 5, Quantity = 2, }, new AddAddOnRequest { InheritedFromId = "increase_20", Amount = 21M, NumberOfBillingCycles = 6, Quantity = 3, } } }, Discounts = new DiscountsRequest { Add = new AddDiscountRequest[] { new AddDiscountRequest { InheritedFromId = "discount_7", Amount = 7.50M, Quantity = 2, NeverExpires = true }, } } }; Transaction transaction = gateway.Subscription.Create(request).Target.Transactions[0]; Assert.AreEqual(PlanFixture.PLAN_WITHOUT_TRIAL.Id, transaction.PlanId); List<AddOn> addOns = transaction.AddOns; addOns.Sort(TestHelper.CompareModificationsById); Assert.AreEqual(2, addOns.Count); Assert.AreEqual("increase_10", addOns[0].Id); Assert.AreEqual(11M, addOns[0].Amount); Assert.AreEqual(2, addOns[0].Quantity); Assert.IsFalse(addOns[0].NeverExpires.Value); Assert.AreEqual(5, addOns[0].NumberOfBillingCycles); Assert.AreEqual("increase_20", addOns[1].Id); Assert.AreEqual(21M, addOns[1].Amount); Assert.AreEqual(3, addOns[1].Quantity); Assert.IsFalse(addOns[1].NeverExpires.Value); Assert.AreEqual(6, addOns[1].NumberOfBillingCycles); List<Discount> discounts = transaction.Discounts; Assert.AreEqual(1, discounts.Count); Assert.AreEqual("discount_7", discounts[0].Id); Assert.AreEqual(7.50M, discounts[0].Amount); Assert.AreEqual(2, discounts[0].Quantity); Assert.IsTrue(discounts[0].NeverExpires.Value); Assert.IsNull(discounts[0].NumberOfBillingCycles); }
public void Create_InheritsAddOnsAndDiscountsFromPlan() { TestPlan plan = PlanFixture.ADD_ON_DISCOUNT_PLAN; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; List<AddOn> addOns = subscription.AddOns; addOns.Sort(TestHelper.CompareModificationsById); Assert.AreEqual(2, addOns.Count); Assert.AreEqual(10M, addOns[0].Amount); Assert.AreEqual(1, addOns[0].Quantity); Assert.IsTrue(addOns[0].NeverExpires.Value); Assert.IsNull(addOns[0].NumberOfBillingCycles); Assert.AreEqual(0, addOns[0].CurrentBillingCycle); Assert.AreEqual(20.00M, addOns[1].Amount); Assert.AreEqual(1, addOns[1].Quantity); Assert.IsTrue(addOns[1].NeverExpires.Value); Assert.IsNull(addOns[1].NumberOfBillingCycles); Assert.AreEqual(0, addOns[1].CurrentBillingCycle); List<Discount> discounts = subscription.Discounts; discounts.Sort(TestHelper.CompareModificationsById); Assert.AreEqual(2, discounts.Count); Assert.AreEqual(11M, discounts[0].Amount); Assert.AreEqual(1, discounts[0].Quantity); Assert.IsTrue(discounts[0].NeverExpires.Value); Assert.IsNull(discounts[0].NumberOfBillingCycles); Assert.AreEqual(0, discounts[0].CurrentBillingCycle); Assert.AreEqual(7M, discounts[1].Amount); Assert.AreEqual(1, discounts[1].Quantity); Assert.IsTrue(discounts[1].NeverExpires.Value); Assert.IsNull(discounts[1].NumberOfBillingCycles); Assert.AreEqual(0, discounts[1].CurrentBillingCycle); }
public virtual Result<Subscription> Update(string id, SubscriptionRequest request) { XmlNode subscriptionXML = service.Put(service.MerchantPath() + "/subscriptions/" + id, request); return new ResultImpl<Subscription>(new NodeWrapper(subscriptionXML), gateway); }
public void Create_CanOverrideInheritedAddOnsAndDiscountsFromPlan() { TestPlan plan = PlanFixture.ADD_ON_DISCOUNT_PLAN; SubscriptionRequest request = new SubscriptionRequest { PaymentMethodToken = creditCard.Token, PlanId = plan.Id, AddOns = new AddOnsRequest { Update = new UpdateAddOnRequest[] { new UpdateAddOnRequest { ExistingId = "increase_10", Amount = 30M, Quantity = 9, NeverExpires = true }, new UpdateAddOnRequest { ExistingId = "increase_20", Amount = 40M, NumberOfBillingCycles = 20 } } }, Discounts = new DiscountsRequest { Update = new UpdateDiscountRequest[] { new UpdateDiscountRequest { ExistingId = "discount_7", Amount = 15M, Quantity = 7, NeverExpires = true }, new UpdateDiscountRequest { ExistingId = "discount_11", Amount = 23M, NumberOfBillingCycles = 11 } } } }; Result<Subscription> result = gateway.Subscription.Create(request); Assert.IsTrue(result.IsSuccess()); Subscription subscription = result.Target; List<AddOn> addOns = subscription.AddOns; addOns.Sort(TestHelper.CompareModificationsById); Assert.AreEqual(2, addOns.Count); Assert.AreEqual(30M, addOns[0].Amount); Assert.AreEqual(9, addOns[0].Quantity); Assert.IsTrue(addOns[0].NeverExpires.Value); Assert.IsNull(addOns[0].NumberOfBillingCycles); Assert.AreEqual(0, addOns[0].CurrentBillingCycle); Assert.AreEqual(40.00M, addOns[1].Amount); Assert.AreEqual(1, addOns[1].Quantity); Assert.IsFalse(addOns[1].NeverExpires.Value); Assert.AreEqual(20, addOns[1].NumberOfBillingCycles); Assert.AreEqual(0, addOns[1].CurrentBillingCycle); List<Discount> discounts = subscription.Discounts; discounts.Sort(TestHelper.CompareModificationsById); Assert.AreEqual(2, discounts.Count); Assert.AreEqual(23M, discounts[0].Amount); Assert.AreEqual(1, discounts[0].Quantity); Assert.IsFalse(discounts[0].NeverExpires.Value); Assert.AreEqual(11, discounts[0].NumberOfBillingCycles); Assert.AreEqual(0, discounts[0].CurrentBillingCycle); Assert.AreEqual(15M, discounts[1].Amount); Assert.AreEqual(7, discounts[1].Quantity); Assert.IsTrue(discounts[1].NeverExpires.Value); Assert.IsNull(discounts[1].NumberOfBillingCycles); Assert.AreEqual(0, discounts[1].CurrentBillingCycle); }