public void ListCanceledSubscriptions() { String s = Factories.GetMockPlanCode(); Plan p = new Plan(s, Factories.GetMockPlanName()); p.Description = "Subscription Test"; p.UnitAmountInCents.Add("USD", 400); p.Create(); for (int x = 0; x < 2; x++) { String a = Factories.GetMockAccountName(); Account acct = new Account(a, "New Txn", "User", "4111111111111111", DateTime.Now.Month, DateTime.Now.Year + 1); Subscription sub = new Subscription(acct, p, "USD"); sub.Create(); sub.Cancel(); Thread.Sleep(1); } SubscriptionList list = SubscriptionList.GetSubscriptions(Subscription.SubstriptionState.canceled); Assert.IsTrue(list.Count > 0); p.Deactivate(); }
/// <summary> /// Returns a list of subscriptions for this account /// </summary> /// <param name="state"></param> /// <returns></returns> public RecurlyList<Subscription> GetSubscriptions(Subscription.SubscriptionState state = Subscription.SubscriptionState.All) { return new SubscriptionList(UrlPrefix + Uri.EscapeUriString(AccountCode) + "/subscriptions/" + Build.QueryStringWith(state.Equals(Subscription.SubscriptionState.All) ? "" : "state=" + state.ToString().EnumNameToTransportCase())); }
/// <summary> /// Returns a list of recurly subscriptions /// /// A subscription will belong to more than one state. /// </summary> /// <param name="state">State of subscriptions to return, defaults to "live"</param> /// <returns></returns> public static RecurlyList<Subscription> List(Subscription.SubscriptionState state = Subscription.SubscriptionState.Live) { return new SubscriptionList(Subscription.UrlPrefix + "?state=" + state.ToString().EnumNameToTransportCase()); }
public static Subscription Get(string uuid) { var s = new Subscription(); var statusCode = Client.Instance.PerformRequest(Client.HttpRequestMethod.Get, Subscription.UrlPrefix + Uri.EscapeUriString(uuid), s.ReadXml); return statusCode == HttpStatusCode.NotFound ? null : s; }
internal override void ReadXml(XmlTextReader reader) { _saved = true; string href; while (reader.Read()) { if (reader.Name == "subscription" && reader.NodeType == XmlNodeType.EndElement) break; if (reader.NodeType != XmlNodeType.Element) continue; DateTime dateVal; Int32 billingCycles; switch (reader.Name) { case "account": href = reader.GetAttribute("href"); if (null != href) _accountCode = Uri.UnescapeDataString(href.Substring(href.LastIndexOf("/") + 1)); break; case "plan": ReadPlanXml(reader); break; case "uuid": Uuid = reader.ReadElementContentAsString(); break; case "state": State = reader.ReadElementContentAsString().ParseAsEnum<SubscriptionState>(); break; case "unit_amount_in_cents": UnitAmountInCents = reader.ReadElementContentAsInt(); break; case "currency": Currency = reader.ReadElementContentAsString(); break; case "quantity": Quantity = reader.ReadElementContentAsInt(); break; case "activated_at": if (DateTime.TryParse(reader.ReadElementContentAsString(), out dateVal)) ActivatedAt = dateVal; break; case "canceled_at": if (DateTime.TryParse(reader.ReadElementContentAsString(), out dateVal)) CanceledAt = dateVal; break; case "expires_at": if (DateTime.TryParse(reader.ReadElementContentAsString(), out dateVal)) ExpiresAt = dateVal; break; case "current_period_started_at": if (DateTime.TryParse(reader.ReadElementContentAsString(), out dateVal)) CurrentPeriodStartedAt = dateVal; break; case "current_period_ends_at": if (DateTime.TryParse(reader.ReadElementContentAsString(), out dateVal)) CurrentPeriodEndsAt = dateVal; break; case "trial_started_at": if (DateTime.TryParse(reader.ReadElementContentAsString(), out dateVal)) TrialPeriodStartedAt = dateVal; break; case "trial_ends_at": if (DateTime.TryParse(reader.ReadElementContentAsString(), out dateVal)) _trialPeriodEndsAt = dateVal; break; case "bank_account_authorized_at": if (DateTime.TryParse(reader.ReadElementContentAsString(), out dateVal)) BankAccountAuthorizedAt = dateVal; break; case "subscription_add_ons": // overwrite existing list with what came back from Recurly AddOns = new SubscriptionAddOnList(this); AddOns.ReadXml(reader); break; case "invoice": href = reader.GetAttribute("href"); if (null != href) _invoiceNumber = Uri.UnescapeDataString(href.Substring(href.LastIndexOf("/") + 1)); break; case "pending_subscription": PendingSubscription = new Subscription { IsPendingSubscription = true }; PendingSubscription.ReadPendingSubscription(reader); // TODO test all returned properties are read break; case "collection_method": CollectionMethod = reader.ReadElementContentAsString(); break; case "net_terms": NetTerms = reader.ReadElementContentAsInt(); break; case "po_number": PoNumber = reader.ReadElementContentAsString(); break; case "total_billing_cycles": if (Int32.TryParse(reader.ReadElementContentAsString(), out billingCycles)) TotalBillingCycles = billingCycles; break; case "remaining_billing_cycles": if (Int32.TryParse(reader.ReadElementContentAsString(), out billingCycles)) RemainingBillingCycles = billingCycles; break; case "tax_in_cents": TaxInCents = reader.ReadElementContentAsInt(); break; case "tax_type": TaxType = reader.ReadElementContentAsString(); break; case "tax_rate": TaxRate = reader.ReadElementContentAsDecimal(); break; case "customer_notes": CustomerNotes = reader.ReadElementContentAsString(); break; case "terms_and_conditions": TermsAndConditions = reader.ReadElementContentAsString(); break; case "vat_reverse_charge_notes": VatReverseChargeNotes = reader.ReadElementContentAsString(); break; case "address": Address = new Address(reader); break; } } }
/// <summary> /// Preview the changes associated with the current subscription /// </summary> /// <param name="timeframe">ChangeTimeframe.Now (default) or at Renewal</param> public virtual Subscription PreviewChange(ChangeTimeframe timeframe) { if (!_saved) { throw new Recurly.RecurlyException("Must have an existing subscription to preview changes."); } Client.WriteXmlDelegate writeXmlDelegate; if (ChangeTimeframe.Renewal == timeframe) writeXmlDelegate = WriteChangeSubscriptionAtRenewalXml; else writeXmlDelegate = WriteChangeSubscriptionNowXml; var previewSubscription = new Subscription(); var statusCode = Client.Instance.PerformRequest(Client.HttpRequestMethod.Post, UrlPrefix + Uri.EscapeUriString(Uuid) + "/preview", writeXmlDelegate, previewSubscription.ReadPreviewXml); return statusCode == HttpStatusCode.NotFound ? null : previewSubscription; }
public bool Equals(Subscription subscription) { return Uuid == subscription.Uuid; }
public static Subscription Get(string uuid) { Subscription s = new Subscription(); HttpStatusCode statusCode = Client.PerformRequest(Client.HttpRequestMethod.Get, UrlPrefix + System.Uri.EscapeUriString(uuid), new Client.ReadXmlDelegate(s.ReadXml)); if (statusCode == HttpStatusCode.NotFound) return null; return s; }
public void ListPastDueSubscriptions() { String s = Factories.GetMockPlanCode(); Plan p = new Plan(s, Factories.GetMockPlanName()); p.Description = "Subscription Test"; p.PlanIntervalLength = 1; p.PlanIntervalUnit = Plan.IntervalUnit.months; p.UnitAmountInCents.Add("USD", 200100); p.Create(); for (int x = 0; x < 2; x++) { String a = Factories.GetMockAccountName(); Account acct = new Account(a, "New Txn", "User", "4111111111111111", DateTime.Now.Month, DateTime.Now.Year + 1); Subscription sub = new Subscription(acct, p, "USD"); sub.Create(); Thread.Sleep(1); } SubscriptionList list = SubscriptionList.GetSubscriptions(Subscription.SubstriptionState.past_due); Assert.IsTrue(list.Count > 0); p.Deactivate(); }
public void ListForAccount() { String s = Factories.GetMockPlanCode(); Plan p = new Plan(s, Factories.GetMockPlanName()); p.Description = "Subscription Test"; p.UnitAmountInCents.Add("USD", 400); p.Create(); String s2 = Factories.GetMockPlanCode(); Plan p2 = new Plan(s2, Factories.GetMockPlanName()); p2.Description = "Subscription Test"; p2.UnitAmountInCents.Add("USD", 500); p2.Create(); String a = Factories.GetMockAccountName(); Account acct = new Account(a, "New Txn", "User", "4111111111111111", DateTime.Now.Month, DateTime.Now.Year + 1); Subscription sub = new Subscription(acct, p, "USD"); sub.Create(); Subscription sub2 = new Subscription(acct, p2, "USD"); sub2.Create(); SubscriptionList list = acct.GetSubscriptions(Subscription.SubstriptionState.all); Assert.IsTrue(list.Count > 0); p.Deactivate(); p2.Deactivate(); }
/// <summary> /// Returns a list of subscriptions for this account /// </summary> /// <param name="state"></param> /// <returns></returns> public SubscriptionList GetSubscriptions(Subscription.SubstriptionState state = Subscription.SubstriptionState.all) { return new SubscriptionList(UrlPrefix + System.Uri.EscapeUriString(this.AccountCode) + "/subscriptions/" + (state.Equals(Subscription.SubstriptionState.all) ? "" : "?state=" + state.ToString() )); }