/// <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); }
protected void WriteChangeSubscriptionXml(XmlTextWriter xmlWriter, ChangeTimeframe timeframe) { xmlWriter.WriteStartElement("subscription"); // Start: subscription xmlWriter.WriteElementString("timeframe", timeframe.ToString().EnumNameToTransportCase()); xmlWriter.WriteElementString("quantity", Quantity.AsString()); xmlWriter.WriteStringIfValid("plan_code", _planCode); xmlWriter.WriteIfCollectionHasAny("subscription_add_ons", AddOns); xmlWriter.WriteStringIfValid("coupon_code", _couponCode); if (UnitAmountInCents.HasValue) { xmlWriter.WriteElementString("unit_amount_in_cents", UnitAmountInCents.Value.AsString()); } if (CollectionMethod.Like("manual")) { xmlWriter.WriteElementString("collection_method", "manual"); xmlWriter.WriteElementString("net_terms", NetTerms.Value.AsString()); xmlWriter.WriteElementString("po_number", PoNumber); } else if (CollectionMethod.Like("automatic")) { xmlWriter.WriteElementString("collection_method", "automatic"); } xmlWriter.WriteEndElement(); // End: subscription }
/// <summary> /// Request that an update to a subscription take place /// </summary> /// <param name="timeframe">when the update should occur: now (default) or at renewal</param> public void ChangeSubscription(ChangeTimeframe timeframe) { Client.WriteXmlDelegate writeXmlDelegate; if (ChangeTimeframe.Renewal == timeframe) writeXmlDelegate = WriteChangeSubscriptionAtRenewalXml; else writeXmlDelegate = WriteChangeSubscriptionNowXml; Client.Instance.PerformRequest(Client.HttpRequestMethod.Put, UrlPrefix + Uri.EscapeUriString(Uuid), writeXmlDelegate, ReadXml); }
/// <summary> /// Transforms this object into a preview Subscription applied to the account. /// </summary> /// <param name="timeframe">ChangeTimeframe.Now (default) or at Renewal</param> public void Preview(ChangeTimeframe timeframe) { if (_saved) { throw new Recurly.RecurlyException("Cannot preview an existing subscription."); } Client.Instance.PerformRequest(Client.HttpRequestMethod.Post, UrlPrefix + "preview", WriteSubscriptionXml, ReadXml); // this method does not save the object _saved = false; }
public void ChangeSubscription(ChangeTimeframe timeframe) { RecurlyClient.WriteXmlDelegate writeXmlDelegate; if (timeframe == ChangeTimeframe.Now) { writeXmlDelegate = new RecurlyClient.WriteXmlDelegate(WriteChangeSubscriptionNowXml); } else { writeXmlDelegate = new RecurlyClient.WriteXmlDelegate(WriteChangeSubscriptionAtRenewalXml); } HttpStatusCode statusCode = RecurlyClient.PerformRequest(RecurlyClient.HttpRequestMethod.Put, SubscriptionUrl(this.Account.AccountCode), writeXmlDelegate, new RecurlyClient.ReadXmlDelegate(this.ReadXml)); }
protected void WriteChangeSubscriptionXml(XmlTextWriter xmlWriter, ChangeTimeframe timeframe) { xmlWriter.WriteStartElement("subscription"); // Start: subscription xmlWriter.WriteElementString("timeframe", (timeframe == ChangeTimeframe.Now ? "now" : "renewal")); if (!String.IsNullOrEmpty(this.PlanCode)) { xmlWriter.WriteElementString("plan_code", this.PlanCode); } if (this.Quantity.HasValue) { xmlWriter.WriteElementString("quantity", this.Quantity.Value.ToString()); } if (this.UnitAmountInCents.HasValue) { xmlWriter.WriteElementString("unit_amount_in_cents", this.UnitAmountInCents.Value.ToString()); } xmlWriter.WriteEndElement(); // End: subscription }
protected void WriteChangeSubscriptionXml(XmlTextWriter xmlWriter, ChangeTimeframe timeframe) { xmlWriter.WriteStartElement("subscription"); // Start: subscription xmlWriter.WriteElementString("timeframe", (timeframe == ChangeTimeframe.Now ? "now" : "renewal")); if (!String.IsNullOrEmpty(this.PlanCode)) xmlWriter.WriteElementString("plan_code", this.PlanCode); if (this.Quantity.HasValue) xmlWriter.WriteElementString("quantity", this.Quantity.Value.ToString()); if (this.UnitAmountInCents.HasValue) xmlWriter.WriteElementString("unit_amount_in_cents", this.UnitAmountInCents.Value.ToString()); xmlWriter.WriteEndElement(); // End: subscription }
public void ChangeSubscription(ChangeTimeframe timeframe) { RecurlyClient.WriteXmlDelegate writeXmlDelegate; if (timeframe == ChangeTimeframe.Now) writeXmlDelegate = new RecurlyClient.WriteXmlDelegate(WriteChangeSubscriptionNowXml); else writeXmlDelegate = new RecurlyClient.WriteXmlDelegate(WriteChangeSubscriptionAtRenewalXml); HttpStatusCode statusCode = RecurlyClient.PerformRequest(RecurlyClient.HttpRequestMethod.Put, SubscriptionUrl(this.Account.AccountCode), writeXmlDelegate, new RecurlyClient.ReadXmlDelegate(this.ReadXml)); }
protected void WriteChangeSubscriptionXml(XmlTextWriter xmlWriter, ChangeTimeframe timeframe) { xmlWriter.WriteStartElement("subscription"); // Start: subscription xmlWriter.WriteElementString("timeframe", timeframe.ToString().EnumNameToTransportCase()); xmlWriter.WriteElementString("quantity", Quantity.AsString()); xmlWriter.WriteStringIfValid("plan_code", _planCode); xmlWriter.WriteIfCollectionHasAny("subscription_add_ons", AddOns); xmlWriter.WriteStringIfValid("coupon_code", _couponCode); if (_couponCodes != null && _couponCodes.Length != 0) { xmlWriter.WriteStartElement("coupon_codes"); foreach (var _coupon_code in _couponCodes) { xmlWriter.WriteElementString("coupon_code", _coupon_code); } xmlWriter.WriteEndElement(); } if (UnitAmountInCents.HasValue) xmlWriter.WriteElementString("unit_amount_in_cents", UnitAmountInCents.Value.AsString()); if (CollectionMethod.Like("manual")) { xmlWriter.WriteElementString("collection_method", "manual"); xmlWriter.WriteElementString("net_terms", NetTerms.Value.AsString()); xmlWriter.WriteElementString("po_number", PoNumber); } else if (CollectionMethod.Like("automatic")) xmlWriter.WriteElementString("collection_method", "automatic"); xmlWriter.WriteEndElement(); // End: subscription }
/// <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; }
/// <summary> /// Request that an update to a subscription take place /// </summary> /// <param name="timeframe">when the update should occur: now or at renewal</param> public void ChangeSubscription(ChangeTimeframe timeframe) { Client.WriteXmlDelegate writeXmlDelegate; if (timeframe == ChangeTimeframe.now) writeXmlDelegate = new Client.WriteXmlDelegate(WriteChangeSubscriptionNowXml); else writeXmlDelegate = new Client.WriteXmlDelegate(WriteChangeSubscriptionAtRenewalXml); Client.PerformRequest(Client.HttpRequestMethod.Put, UrlPrefix + System.Uri.EscapeUriString(this.Uuid), writeXmlDelegate, new Client.ReadXmlDelegate(this.ReadXml)); }
protected void WriteChangeXml(XmlTextWriter writer, ChangeTimeframe timeframe, string newPlanCode) { writer.WriteStartElement(ElementName); // Start: subscription writer.WriteElementEnum("timeframe", timeframe); //Required writer.WriteElementStringIfProvided(PlanCodeElement, newPlanCode); writer.WriteElementIntIfProvided(QuantityElement,Quantity); writer.WriteElementIntIfProvided(UnitAmountInCentsElement,UnitAmountInCents); writer.WriteElementListIfAny(AddonsElement, Addons, (w, a) => a.WriteXml(w)); WriteManualInvoiceElement(writer); writer.WriteEndElement(); // End: subscription }
/// <summary> /// Request an update to a subscription that takes place immediately or at renewal. /// </summary> /// <param name="timeframe"></param> /// <param name="newPlanCode"></param> /// <param name="unitAmountInCents"></param> public bool Update(ChangeTimeframe timeframe, NewPlanOptions newPlan = null) { if (newPlan != null && String.IsNullOrWhiteSpace(newPlan.PlanCode)) throw new ArgumentException("newPlan", "A new PlanCode cannot be empty if provided"); if(newPlan != null) { UnitAmountInCents = newPlan.UnitAmountInCents; } var statusCode = RecurlyClient.PerformRequest(RecurlyClient.HttpRequestMethod.Put, String.Format(Settings.Default.PathSubscriptionUpdate, Id), writer => WriteChangeXml(writer, timeframe, newPlan.PlanCode), ReadXml); return RecurlyClient.OkOrAccepted(statusCode); }