Skip to content

Commit

Permalink
Merge pull request #475 from killbilling/v2-external-payment-phases
Browse files Browse the repository at this point in the history
add external payment phases
  • Loading branch information
amandamfielding authored Dec 6, 2023
2 parents 0fcf37e + e6e1016 commit 74438b5
Show file tree
Hide file tree
Showing 11 changed files with 452 additions and 0 deletions.
41 changes: 41 additions & 0 deletions src/main/java/com/ning/billing/recurly/RecurlyClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
* <p>
* 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
* <p>
* 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
* <p>
* 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
* <p>
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/com/ning/billing/recurly/model/ExternalInvoice.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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;
}
Expand Down
179 changes: 179 additions & 0 deletions src/main/java/com/ning/billing/recurly/model/ExternalPaymentPhase.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
Original file line number Diff line number Diff line change
@@ -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<ExternalPaymentPhase> {

@XmlTransient
public static final String EXTERNAL_PAYMENT_PHASES_RESOURCE = "/external_payment_phases";

@XmlTransient
public static final String PROPERTY_NAME = "external_payment_phase";

@JsonSetter(value = PROPERTY_NAME)
@Override
public void setRecurlyObject(final ExternalPaymentPhase value) {
super.setRecurlyObject(value);
}

@JsonIgnore
@Override
public ExternalPaymentPhases getStart() {
return getStart(ExternalPaymentPhases.class);
}

@JsonIgnore
@Override
public ExternalPaymentPhases getNext() {
return getNext(ExternalPaymentPhases.class);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package com.ning.billing.recurly.model;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import org.joda.time.DateTime;

Expand All @@ -29,6 +30,16 @@ public class ExternalSubscription extends RecurlyObject {
@XmlElement(name = "external_product_reference")
private ExternalProductReference externalProductReference;

@XmlElementWrapper(name = "external_invoices")
@XmlElement(name = "external_invoice")
private ExternalInvoices externalInvoices;


@XmlElementWrapper(name = "external_payment_phases")
@XmlElement(name = "external_payment_phase")
private ExternalPaymentPhases externalPaymentPhases;


@XmlElement(name = "last_purchased")
private DateTime lastPurchased;

Expand Down Expand Up @@ -87,6 +98,22 @@ public void setExternalProductReference(final ExternalProductReference externalP
this.externalProductReference = externalProductReference;
}

public ExternalInvoices getExternalInvoices() {
return this.externalInvoices;
}

public void setExternalInvoices(final ExternalInvoices externalInvoices) {
this.externalInvoices = externalInvoices;
}

public ExternalPaymentPhases getExternalPaymentPhases() {
return this.externalPaymentPhases;
}

public void setExternalPaymentPhases(final ExternalPaymentPhases externalPaymentPhases) {
this.externalPaymentPhases = externalPaymentPhases;
}

public DateTime getLastPurchased() {
return lastPurchased;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public void testDeserialization() throws Exception {
"<external_invoice href=\"https://your-subdomain.recurly.com/v2/external_invoices/scaig66ovogw\">" +
" <account href=\"https://your-subdomain.recurly.com/v2/accounts/scaig66ovoga\"/>" +
" <external_subscription href=\"https://your-subdomain.recurly.com/v2/external_subscriptions/scaig66ovoge\"/>" +
" <external_payment_phase href=\"https://your-subdomain.recurly.com/v2/external_payment_phases/twqswp6wgq68\"/>" +
" <external_id>external_id</external_id>" +
" <state>paid</state>" +
" <currency>USD</currency>" +
Expand All @@ -58,6 +59,7 @@ public void testDeserialization() throws Exception {
Assert.assertEquals(externalInvoice.getHref(), "https://your-subdomain.recurly.com/v2/external_invoices/scaig66ovogw");
Assert.assertEquals(externalInvoice.getAccount().getHref(), "https://your-subdomain.recurly.com/v2/accounts/scaig66ovoga");
Assert.assertEquals(externalInvoice.getExternalSubscription().getHref(), "https://your-subdomain.recurly.com/v2/external_subscriptions/scaig66ovoge");
Assert.assertEquals(externalInvoice.getExternalPaymentPhase().getHref(), "https://your-subdomain.recurly.com/v2/external_payment_phases/twqswp6wgq68");
Assert.assertEquals(externalInvoice.getExternalId(), "external_id");
Assert.assertEquals(externalInvoice.getState(), "paid");
Assert.assertEquals(externalInvoice.getCurrency(), "USD");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public void testDeserialization() throws Exception {
" <external_invoice href=\"https://your-subdomain.recurly.com/v2/external_invoices/scaig66ovogw\">" +
" <account href=\"https://your-subdomain.recurly.com/v2/accounts/scaig66ovoga\"/>" +
" <external_subscription href=\"https://your-subdomain.recurly.com/v2/external_subscriptions/scaig66ovoge\"/>" +
" <external_payment_phase href=\"https://your-subdomain.recurly.com/v2/external_payment_phases/twqswp6wgq68\"/>" +
" <external_id>external_id</external_id>" +
" <state>paid</state>" +
" <currency>USD</currency>" +
Expand Down Expand Up @@ -62,6 +63,7 @@ public void testDeserialization() throws Exception {
Assert.assertEquals(externalInvoice.getHref(), "https://your-subdomain.recurly.com/v2/external_invoices/scaig66ovogw");
Assert.assertEquals(externalInvoice.getAccount().getHref(), "https://your-subdomain.recurly.com/v2/accounts/scaig66ovoga");
Assert.assertEquals(externalInvoice.getExternalSubscription().getHref(), "https://your-subdomain.recurly.com/v2/external_subscriptions/scaig66ovoge");
Assert.assertEquals(externalInvoice.getExternalPaymentPhase().getHref(), "https://your-subdomain.recurly.com/v2/external_payment_phases/twqswp6wgq68");
Assert.assertEquals(externalInvoice.getExternalId(), "external_id");
Assert.assertEquals(externalInvoice.getState(), "paid");
Assert.assertEquals(externalInvoice.getCurrency(), "USD");
Expand Down
Loading

0 comments on commit 74438b5

Please sign in to comment.