diff --git a/src/main/java/com/ning/billing/recurly/RecurlyClient.java b/src/main/java/com/ning/billing/recurly/RecurlyClient.java index 0111fa84..afbedead 100644 --- a/src/main/java/com/ning/billing/recurly/RecurlyClient.java +++ b/src/main/java/com/ning/billing/recurly/RecurlyClient.java @@ -51,6 +51,8 @@ import com.ning.billing.recurly.model.ExternalAccounts; import com.ning.billing.recurly.model.ExternalInvoice; import com.ning.billing.recurly.model.ExternalInvoices; +import com.ning.billing.recurly.model.ExternalPaymentPhase; +import com.ning.billing.recurly.model.ExternalPaymentPhases; import com.ning.billing.recurly.model.GiftCard; import com.ning.billing.recurly.model.GiftCards; import com.ning.billing.recurly.model.Invoice; @@ -1323,6 +1325,45 @@ public ExternalInvoice getExternalInvoice(final String externalInvoiceUuid) { return doGET(ExternalInvoices.EXTERNAL_INVOICES_RESOURCE + "/" + urlEncode(externalInvoiceUuid), ExternalInvoice.class); } + /** + * Get a specific External Payment Phase + *
+ * Returns the requested external payment phase + * + * @param externalPaymentPhaseUuid external payment phase uuid + * @return The requested external payment phase + */ + public ExternalPaymentPhase getExternalPaymentPhase(final String externalPaymentPhaseUuid) { + return doGET(ExternalPaymentPhases.EXTERNAL_PAYMENT_PHASES_RESOURCE + "/" + urlEncode(externalPaymentPhaseUuid), ExternalPaymentPhase.class); + } + + /** + * Get External Payment Phases of an external subscription + *
+ * Returns all External Payment Phases for a given external subscription. + * + * @param externalSubscriptionUUID recurly external subscription uuid + * @return List of External Payment Phases for the given external subscription on success, null otherwise + */ + public ExternalPaymentPhases getExternalPaymentPhasesByExternalSubscription(final String externalSubscriptionUUID) { + return doGET(ExternalSubscriptions.EXTERNAL_SUBSCRIPTIONS_RESOURCE + "/" + urlEncode(externalSubscriptionUUID) + ExternalPaymentPhases.EXTERNAL_PAYMENT_PHASES_RESOURCE, + ExternalPaymentPhases.class); + } + + /** + * Get External Payment Phase of an external subscription + *
+ * Returns an External Payment Phase for a given external subscription. + * + * @param externalSubscriptionUUID recurly external subscription uuid + * @param externalPaymentPhaseUUID recurly external payment phase uuid + * @return An External Payment Phase for the given external subscription on success, null otherwise + */ + public ExternalPaymentPhase getExternalPaymentPhaseByExternalSubscription(final String externalSubscriptionUUID, final String externalPaymentPhaseUUID) { + return doGET(ExternalSubscriptions.EXTERNAL_SUBSCRIPTIONS_RESOURCE + "/" + urlEncode(externalSubscriptionUUID) + ExternalPaymentPhases.EXTERNAL_PAYMENT_PHASES_RESOURCE + "/" + urlEncode(externalPaymentPhaseUUID), + ExternalPaymentPhase.class); + } + /** * Get External Products *
diff --git a/src/main/java/com/ning/billing/recurly/model/ExternalInvoice.java b/src/main/java/com/ning/billing/recurly/model/ExternalInvoice.java
index ab113838..ceaaed3d 100644
--- a/src/main/java/com/ning/billing/recurly/model/ExternalInvoice.java
+++ b/src/main/java/com/ning/billing/recurly/model/ExternalInvoice.java
@@ -33,6 +33,9 @@ public class ExternalInvoice extends RecurlyObject {
@XmlElement(name = "external_subscription")
private ExternalSubscription externalSubscription;
+ @XmlElement(name = "external_payment_phase")
+ private ExternalPaymentPhase externalPaymentPhase;
+
@XmlElement(name = "external_id")
private String externalId;
@@ -74,6 +77,14 @@ public void setExternalSubscription(final ExternalSubscription externalSubscript
this.externalSubscription = externalSubscription;
}
+ public ExternalPaymentPhase getExternalPaymentPhase() {
+ return this.externalPaymentPhase;
+ }
+
+ public void setExternalPaymentPhase(final ExternalPaymentPhase externalPaymentPhase) {
+ this.externalPaymentPhase = externalPaymentPhase;
+ }
+
public String getExternalId() {
return this.externalId;
}
diff --git a/src/main/java/com/ning/billing/recurly/model/ExternalPaymentPhase.java b/src/main/java/com/ning/billing/recurly/model/ExternalPaymentPhase.java
new file mode 100644
index 00000000..84468aa0
--- /dev/null
+++ b/src/main/java/com/ning/billing/recurly/model/ExternalPaymentPhase.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright 2010-2014 Ning, Inc.
+ * Copyright 2014-2015 The Billing Project, LLC
+ *
+ * The Billing Project licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+package com.ning.billing.recurly.model;
+
+import java.math.BigDecimal;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.joda.time.DateTime;
+
+@XmlRootElement(name = "external_payment_phase")
+public class ExternalPaymentPhase extends RecurlyObject {
+
+ @XmlElement(name = "started_at")
+ private DateTime startedAt;
+
+ @XmlElement(name = "ends_at")
+ private DateTime endsAt;
+
+ @XmlElement(name = "starting_billing_period_index")
+ private int startingBillingPeriodIndex;
+
+ @XmlElement(name = "ending_billing_period_index")
+ private int endingBillingPeriodIndex;
+
+ @XmlElement(name = "offer_type")
+ private String offerType;
+
+ @XmlElement(name = "offer_name")
+ private String offerName;
+
+ @XmlElement(name = "period_count")
+ private int periodCount;
+
+ @XmlElement(name = "period_length")
+ private String periodLength;
+
+ @XmlElement(name = "amount")
+ private BigDecimal amount;
+
+ @XmlElement(name = "currency")
+ private String currency;
+
+ @XmlElement(name = "created_at")
+ private DateTime createdAt;
+
+ @XmlElement(name = "updated_at")
+ private DateTime updatedAt;
+
+ public DateTime getStartedAt() {
+ return this.startedAt;
+ }
+
+ public void setStartedAt(final Object startedAt) {
+ this.startedAt = dateTimeOrNull(startedAt);
+ }
+
+ public DateTime getEndsAt() {
+ return this.endsAt;
+ }
+
+ public void setEndsAt(final Object endsAt) {
+ this.endsAt = dateTimeOrNull(endsAt);
+ }
+
+ public int getStartingBillingPeriodIndex() {
+ return this.startingBillingPeriodIndex;
+ }
+
+ public void setStartingBillingPeriodIndex(final Object startingBillingPeriodIndex) {
+ this.startingBillingPeriodIndex = integerOrNull(startingBillingPeriodIndex);
+ }
+
+ public int getEndingBillingPeriodIndex() {
+ return this.endingBillingPeriodIndex;
+ }
+
+ public void setEndingBillingPeriodIndex(final Object endingBillingPeriodIndex) {
+ this.endingBillingPeriodIndex = integerOrNull(endingBillingPeriodIndex);
+ }
+
+ public String getOfferType() {
+ return this.offerType;
+ }
+
+ public void setOfferType(final Object offerType) {
+ this.offerType = stringOrNull(offerType);
+ }
+
+ public String getOfferName() {
+ return this.offerName;
+ }
+
+ public void setOfferName(final Object offerName) {
+ this.offerName = stringOrNull(offerName);
+ }
+
+ public int getPeriodCount() {
+ return this.periodCount;
+ }
+
+ public void setPeriodCount(final Object periodCount) {
+ this.periodCount = integerOrNull(periodCount);
+ }
+
+ public String getPeriodLength() {
+ return this.periodLength;
+ }
+
+ public void setPeriodLength(final Object periodLength) {
+ this.periodLength = stringOrNull(periodLength);
+ }
+
+ public BigDecimal getAmount() {
+ return this.amount;
+ }
+
+ public void setAmount(final Object amount) {
+ this.amount = bigDecimalOrNull(amount);
+ }
+
+ public String getCurrency() {
+ return this.currency;
+ }
+
+ public void setCurrency(final Object currency) {
+ this.currency = stringOrNull(currency);
+ }
+
+ public DateTime getCreatedAt() {
+ return this.createdAt;
+ }
+
+ public void setCreatedAt(final Object createdAt) {
+ this.createdAt = dateTimeOrNull(createdAt);
+ }
+
+ public DateTime getUpdatedAt() {
+ return this.updatedAt;
+ }
+
+ public void setUpdatedAt(final Object updatedAt) {
+ this.updatedAt = dateTimeOrNull(updatedAt);
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("ExternalPaymentPhase{");
+ sb.append("started_at=").append(startedAt);
+ sb.append(", ends_at=").append(endsAt);
+ sb.append(", starting_billing_period_index=").append(startingBillingPeriodIndex);
+ sb.append(", ending_billing_period_index=").append(endingBillingPeriodIndex);
+ sb.append(", offer_type=").append(offerType);
+ sb.append(", offer_name=").append(offerName);
+ sb.append(", period_count=").append(periodCount);
+ sb.append(", period_length=").append(periodLength);
+ sb.append(", amount=").append(amount);
+ sb.append(", currency=").append(currency);
+ sb.append(", createdAt=").append(createdAt);
+ sb.append(", updatedAt=").append(updatedAt);
+ sb.append('}');
+ return sb.toString();
+ }
+}
diff --git a/src/main/java/com/ning/billing/recurly/model/ExternalPaymentPhases.java b/src/main/java/com/ning/billing/recurly/model/ExternalPaymentPhases.java
new file mode 100644
index 00000000..d1c748b3
--- /dev/null
+++ b/src/main/java/com/ning/billing/recurly/model/ExternalPaymentPhases.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2010-2014 Ning, Inc.
+ * Copyright 2014-2015 The Billing Project, LLC
+ *
+ * The Billing Project licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+package com.ning.billing.recurly.model;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonSetter;
+
+@XmlRootElement(name = "external_payment_phases")
+public class ExternalPaymentPhases extends RecurlyObjects