diff --git a/pom.xml b/pom.xml index fd037f7..73873e4 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.chargify chargify-sdk - 0.7.0 + 0.9.0 jar Chargify SDK for Java diff --git a/src/main/java/com/chargify/Chargify.java b/src/main/java/com/chargify/Chargify.java index a762df2..78376a9 100644 --- a/src/main/java/com/chargify/Chargify.java +++ b/src/main/java/com/chargify/Chargify.java @@ -1,9 +1,13 @@ package com.chargify; import com.chargify.model.*; +import com.chargify.model.product.Product; +import com.chargify.model.product.ProductFamily; +import com.chargify.model.product.ProductPricePoint; import java.time.LocalDateTime; import java.util.List; +import java.util.Set; public interface Chargify { @@ -21,6 +25,10 @@ public interface Chargify Product findProductByApiHandle( String apiHandle ); + Set findProductPricePointsByProductId( String productId ); + + Set findComponentPricePoints( int componentId ); + List findAllProducts(); List findProductsByProductFamilyId( String productFamilyId ); @@ -47,6 +55,8 @@ public interface Chargify Subscription migrateSubscription( String subscriptionId, String productHandle ); + Subscription migrateSubscription( String subscriptionId, String productHandle, String pricePointHandle ); + Subscription reactivateSubscription( String subscriptionId ); Subscription reactivateSubscription( String subscriptionId, SubscriptionReactivationData reactivationData ); @@ -54,8 +64,12 @@ public interface Chargify ComponentPricePointUpdate migrateSubscriptionComponentToPricePoint( String subscriptionId, int componentId, String pricePointHandle ); + List bulkUpdateSubscriptionComponentPricePoint( String subscriptionId, List items ); + Subscription changeSubscriptionProduct( String subscriptionId, String productHandle, boolean delayed ); + Subscription changeSubscriptionProduct( String subscriptionId, String productHandle, String pricePointHandle, boolean delayed ); + RenewalPreview previewSubscriptionRenewal( String subscriptionId ); List createSubscriptionMetadata( String subscriptionId, Metadata... metadata ); @@ -66,17 +80,21 @@ ComponentPricePointUpdate migrateSubscriptionComponentToPricePoint( String subsc Component createComponent( String productFamilyId, Component component ); - Allocation createComponentAllocation( String subscriptionId, String componentId, Allocation allocation ); + Allocation createComponentAllocation( String subscriptionId, int componentId, Allocation allocation ); + + AllocationPreview previewComponentAllocation( String subscriptionId, int componentId, int quantity ); List findComponentsByProductFamily( String productFamilyId ); - Component findComponentByIdAndProductFamily( String componentId, String productFamilyId ); + Component findComponentByIdAndProductFamily( int componentId, String productFamilyId ); + + ComponentWithPricePoints findComponentWithPricePointsByIdAndProductFamily( int componentId, String productFamilyId ); List findSubscriptionComponents( String subscriptionId ); - SubscriptionComponent findSubscriptionComponentById( String subscriptionId, String componentId ); + SubscriptionComponent findSubscriptionComponentById( String subscriptionId, int componentId ); - Usage reportSubscriptionComponentUsage( String subscriptionId, String componentId, Usage usage ); + Usage reportSubscriptionComponentUsage( String subscriptionId, int componentId, Usage usage ); Customer createCustomer( Customer customer ); diff --git a/src/main/java/com/chargify/ChargifyService.java b/src/main/java/com/chargify/ChargifyService.java index 8797b34..ec4ebb5 100644 --- a/src/main/java/com/chargify/ChargifyService.java +++ b/src/main/java/com/chargify/ChargifyService.java @@ -3,6 +3,9 @@ import com.chargify.exceptions.ChargifyResponseErrorHandler; import com.chargify.exceptions.ResourceNotFoundException; import com.chargify.model.*; +import com.chargify.model.product.Product; +import com.chargify.model.product.ProductFamily; +import com.chargify.model.product.ProductPricePoint; import com.chargify.model.wrappers.*; import com.fasterxml.jackson.databind.SerializationFeature; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -20,6 +23,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; public final class ChargifyService implements Chargify @@ -143,6 +147,36 @@ public Product findProductByApiHandle( String apiHandle ) } } + @Override + public Set findProductPricePointsByProductId( String productId ) + { + try + { + return httpClient.getForObject( + "/products/" + productId + "/price_points.json", ProductPricePointsWrapper.class ) + .getPricePoints(); + } + catch( ResourceNotFoundException e ) + { + return null; + } + } + + @Override + public Set findComponentPricePoints( int componentId ) + { + try + { + return httpClient.getForObject( + "/components/" + componentId + "/price_points.json", ComponentPricePointsWrapper.class ) + .getPricePoints(); + } + catch( ResourceNotFoundException e ) + { + return null; + } + } + @Override public List findAllProducts() { @@ -288,6 +322,18 @@ public Subscription migrateSubscription( String subscriptionId, String productHa .getSubscription(); } + @Override + public Subscription migrateSubscription( String subscriptionId, String productHandle, String pricePointHandle ) + { + final Migration migration = new Migration(); + migration.setProductHandle( productHandle ); + migration.setPricePointHandle( pricePointHandle ); + + return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/migrations.json", + new MigrationWrapper( migration ), SubscriptionWrapper.class ) + .getSubscription(); + } + @Override public Subscription reactivateSubscription( String subscriptionId ) { @@ -316,20 +362,43 @@ public ComponentPricePointUpdate migrateSubscriptionComponentToPricePoint( Strin { return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/price_points.json", new ComponentPricePointUpdatesWrapper( - new ComponentPricePointUpdate( componentId, pricePointHandle ) ), + List.of( new ComponentPricePointUpdate( componentId, pricePointHandle ) ) ), + ComponentPricePointUpdatesWrapper.class ) + .getPricePointUpdates().get( 0 ); + } + + @Override + public List bulkUpdateSubscriptionComponentPricePoint( String subscriptionId, List items ) + { + return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/price_points.json", + new ComponentPricePointUpdatesWrapper( items ), ComponentPricePointUpdatesWrapper.class ) - .getPricePointUpdates()[ 0 ]; + .getPricePointUpdates(); } @Override public Subscription changeSubscriptionProduct( String subscriptionId, String productHandle, boolean delayed ) { - final Subscription subscription = new Subscription(); - subscription.setProductHandle( productHandle ); - subscription.setProductChangeDelayed( delayed ); + final SubscriptionProductUpdate productUpdate = new SubscriptionProductUpdate(); + productUpdate.setProductHandle( productHandle ); + productUpdate.setChangeDelayed( delayed ); return httpClient.exchange( "/subscriptions/" + subscriptionId + ".json", HttpMethod.PUT, - new HttpEntity<>( new SubscriptionWrapper( subscription ) ), SubscriptionWrapper.class ) + new HttpEntity<>( new SubscriptionProductUpdateWrapper( productUpdate ) ), SubscriptionWrapper.class ) + .getBody() + .getSubscription(); + } + + @Override + public Subscription changeSubscriptionProduct( String subscriptionId, String productHandle, String pricePointHandle, boolean delayed ) + { + final SubscriptionProductUpdate productUpdate = new SubscriptionProductUpdate(); + productUpdate.setProductHandle( productHandle ); + productUpdate.setChangeDelayed( delayed ); + productUpdate.setPricePointHandle( pricePointHandle ); + + return httpClient.exchange( "/subscriptions/" + subscriptionId + ".json", HttpMethod.PUT, + new HttpEntity<>( new SubscriptionProductUpdateWrapper( productUpdate ) ), SubscriptionWrapper.class ) .getBody() .getSubscription(); } @@ -404,7 +473,7 @@ public Component createComponent( String productFamilyId, Component component ) } @Override - public Allocation createComponentAllocation( String subscriptionId, String componentId, Allocation allocation ) + public Allocation createComponentAllocation( String subscriptionId, int componentId, Allocation allocation ) { return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/components/" + componentId + "/allocations.json", @@ -412,6 +481,15 @@ public Allocation createComponentAllocation( String subscriptionId, String compo .getAllocation(); } + @Override + public AllocationPreview previewComponentAllocation( String subscriptionId, int componentId, int quantity ) + { + return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/allocations/preview.json", + Map.of( "allocations", List.of( new AllocationPreview.ComponentAllocationDTO( componentId, quantity ) ) ), + AllocationPreviewWrapper.class ) + .getAllocationPreview(); + } + @Override public List findComponentsByProductFamily( String productFamilyId ) { @@ -422,7 +500,7 @@ public List findComponentsByProductFamily( String productFamilyId ) } @Override - public Component findComponentByIdAndProductFamily( String componentId, String productFamilyId ) + public Component findComponentByIdAndProductFamily( int componentId, String productFamilyId ) { try { @@ -437,6 +515,13 @@ public Component findComponentByIdAndProductFamily( String componentId, String p } } + @Override + public ComponentWithPricePoints findComponentWithPricePointsByIdAndProductFamily( int componentId, String productFamilyId ) + { + return new ComponentWithPricePoints( findComponentByIdAndProductFamily( componentId, productFamilyId ), + findComponentPricePoints( componentId ) ); + } + @Override public List findSubscriptionComponents( String subscriptionId ) { @@ -447,7 +532,7 @@ public List findSubscriptionComponents( String subscripti } @Override - public SubscriptionComponent findSubscriptionComponentById( String subscriptionId, String componentId ) + public SubscriptionComponent findSubscriptionComponentById( String subscriptionId, int componentId ) { try { @@ -463,7 +548,7 @@ public SubscriptionComponent findSubscriptionComponentById( String subscriptionI } @Override - public Usage reportSubscriptionComponentUsage( String subscriptionId, String componentId, Usage usage ) + public Usage reportSubscriptionComponentUsage( String subscriptionId, int componentId, Usage usage ) { return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/components/" + componentId + "/usages.json", diff --git a/src/main/java/com/chargify/model/AllocationPreview.java b/src/main/java/com/chargify/model/AllocationPreview.java new file mode 100644 index 0000000..c4ced35 --- /dev/null +++ b/src/main/java/com/chargify/model/AllocationPreview.java @@ -0,0 +1,113 @@ +package com.chargify.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.util.List; + +@NoArgsConstructor +@Data +@JsonInclude( JsonInclude.Include.NON_NULL ) +public class AllocationPreview +{ + @JsonProperty( "start_date" ) + private LocalDateTime startDate; + @JsonProperty( "end_date" ) + private LocalDateTime endDate; + @JsonProperty( "period_type" ) + private String periodType; + @JsonProperty( "total_in_cents" ) + private Integer totalInCents; + @JsonProperty( "total_discount_in_cents" ) + private Integer totalDiscountInCents; + @JsonProperty( "total_tax_in_cents" ) + private Integer totalTaxInCents; + @JsonProperty( "subtotal_in_cents" ) + private Integer subtotalInCents; + @JsonProperty( "existing_balance_in_cents" ) + private Integer existingBalanceInCents; + @JsonProperty( "direction" ) + private String direction; + @JsonProperty( "proration_scheme" ) + private String prorationScheme; + @JsonProperty( "line_items" ) + private List lineItems; + @JsonProperty( "allocations" ) + private List allocations; + + + @NoArgsConstructor + @Data + @JsonInclude( JsonInclude.Include.NON_NULL ) + public static class LineItem + { + @JsonProperty( "transaction_type" ) + private String transactionType; + private ComponentKind kind; + @JsonProperty( "amount_in_cents" ) + private Integer amountInCents; + private String memo; + @JsonProperty( "discount_amount_in_cents" ) + private Integer discountAmountInCents; + @JsonProperty( "taxable_amount_in_cents" ) + private Integer taxable_amount_in_cents; + @JsonProperty( "component_id" ) + private Integer componentId; + @JsonProperty( "component_handle" ) + private String componentHandle; + @JsonProperty( "accrue_charge" ) + private Boolean accrueCharge; + @JsonProperty( "upgrade_charge" ) + private String upgradeCharge; + } + + @NoArgsConstructor + @Data + @JsonInclude( JsonInclude.Include.NON_NULL ) + public static class Allocation + { + @JsonProperty( "allocation_id" ) + private String allocationId; + @JsonProperty( "component_id" ) + private Integer componentId; + @JsonProperty( "subscription_id" ) + private Integer subscriptionId; + private Integer quantity; + @JsonProperty( "previous_quantity" ) + private Integer previousQuantity; + private String memo; + private LocalDateTime timestamp; + @JsonProperty( "proration_upgrade_scheme" ) + private String prorationUpgradeScheme; + @JsonProperty( "proration_downgrade_scheme" ) + private String prorationDowngradeScheme; + @JsonProperty( "price_point_id" ) + private Integer pricePointId; + @JsonProperty( "previous_price_point_id" ) + private Integer previousPricePointId; + @JsonProperty( "component_handle" ) + private String componentHandle; + @JsonProperty( "accrue_charge" ) + private Boolean accrueCharge; + @JsonProperty( "upgrade_charge" ) + private String upgradeCharge; + @JsonProperty( "downgrade_credit" ) + private String downgradeCredit; + @JsonProperty( "created_at" ) + private LocalDateTime createdAt; + } + + @AllArgsConstructor + @Getter + public static class ComponentAllocationDTO + { + @JsonProperty( "component_id" ) + private final int componentId; + private final int quantity; + } +} diff --git a/src/main/java/com/chargify/model/Component.java b/src/main/java/com/chargify/model/Component.java index c1b613a..531cb05 100644 --- a/src/main/java/com/chargify/model/Component.java +++ b/src/main/java/com/chargify/model/Component.java @@ -28,7 +28,7 @@ @JsonInclude( JsonInclude.Include.NON_NULL ) public class Component implements Serializable { - private String id; + private Integer id; private String name; diff --git a/src/main/java/com/chargify/model/ComponentPricePointUpdate.java b/src/main/java/com/chargify/model/ComponentPricePointUpdate.java index 1c84694..3c6ea83 100644 --- a/src/main/java/com/chargify/model/ComponentPricePointUpdate.java +++ b/src/main/java/com/chargify/model/ComponentPricePointUpdate.java @@ -2,38 +2,32 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +@Data public final class ComponentPricePointUpdate { - private final int componentId; - private final String pricePointHandle; + @JsonProperty( "component_id" ) + private int componentId; + @JsonProperty( "price_point" ) + private String pricePointHandle; + @JsonProperty( value = "message" ) + private String message; @JsonCreator - public ComponentPricePointUpdate( @JsonProperty( "component_id" ) int componentId, - @JsonProperty( "price_point" ) String pricePointHandle ) + public ComponentPricePointUpdate() { - this.componentId = componentId; - this.pricePointHandle = pricePointHandle; } - @JsonProperty( "component_id" ) - public int getComponentId() + public ComponentPricePointUpdate( int componentId, String pricePointHandle ) { - return componentId; + this( componentId, pricePointHandle, null ); } - @JsonProperty( "price_point" ) - public String getPricePointHandle() + public ComponentPricePointUpdate( int componentId, String pricePointHandle, String message ) { - return pricePointHandle; - } - - @Override - public String toString() - { - return "ComponentPricePointUpdate{" + - "componentId='" + componentId + '\'' + - ", pricePointHandle='" + pricePointHandle + '\'' + - '}'; + this.componentId = componentId; + this.pricePointHandle = pricePointHandle; + this.message = message; } } diff --git a/src/main/java/com/chargify/model/ComponentWithPricePoints.java b/src/main/java/com/chargify/model/ComponentWithPricePoints.java new file mode 100644 index 0000000..9a7d5b0 --- /dev/null +++ b/src/main/java/com/chargify/model/ComponentWithPricePoints.java @@ -0,0 +1,19 @@ +package com.chargify.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Set; + +@NoArgsConstructor +@AllArgsConstructor +@Data +@JsonInclude( JsonInclude.Include.NON_NULL ) +public class ComponentWithPricePoints implements Serializable +{ + private Component component; + private Set pricePoints; +} diff --git a/src/main/java/com/chargify/model/Migration.java b/src/main/java/com/chargify/model/Migration.java index d1e22da..18195d5 100644 --- a/src/main/java/com/chargify/model/Migration.java +++ b/src/main/java/com/chargify/model/Migration.java @@ -2,7 +2,9 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +@Data @JsonInclude( JsonInclude.Include.NON_NULL ) public class Migration { @@ -12,23 +14,6 @@ public class Migration @JsonProperty( "include_trial") private Integer includeTrial; - public String getProductHandle() - { - return productHandle; - } - - public void setProductHandle( String productHandle ) - { - this.productHandle = productHandle; - } - - public Integer getIncludeTrial() - { - return includeTrial; - } - - public void setIncludeTrial( Integer includeTrial ) - { - this.includeTrial = includeTrial; - } + @JsonProperty( "product_price_point_handle") + private String pricePointHandle; } diff --git a/src/main/java/com/chargify/model/Price.java b/src/main/java/com/chargify/model/Price.java index 25ff9d3..70ccd03 100644 --- a/src/main/java/com/chargify/model/Price.java +++ b/src/main/java/com/chargify/model/Price.java @@ -3,9 +3,11 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; import java.io.Serializable; +@AllArgsConstructor @JsonInclude( JsonInclude.Include.NON_NULL ) public final class Price implements Serializable { diff --git a/src/main/java/com/chargify/model/PricePoint.java b/src/main/java/com/chargify/model/PricePoint.java index 58dd693..fc697a5 100644 --- a/src/main/java/com/chargify/model/PricePoint.java +++ b/src/main/java/com/chargify/model/PricePoint.java @@ -1,63 +1,35 @@ package com.chargify.model; -import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serializable; @JsonInclude( JsonInclude.Include.NON_NULL ) +@NoArgsConstructor +@AllArgsConstructor +@Data public final class PricePoint implements Serializable { + private Integer id; + @JsonProperty( "default" ) + private boolean defaultPricePoint = false; private String name; private String handle; + @JsonProperty( "pricing_scheme" ) private String pricingScheme; + @JsonProperty( "component_id" ) + private String componentId; + @JsonProperty( "archived_at" ) + private String archivedAt; + @JsonProperty( "created_at" ) + private String createdAt; + @JsonProperty( "updated_at" ) + private String updatedAt; + @JsonProperty( "use_site_exchange_rate" ) + private Boolean useSiteExchangeRate; private Price[] prices; - - @JsonCreator - public PricePoint() - { - } - - public String getName() - { - return name; - } - - public void setName( String name ) - { - this.name = name; - } - - public String getHandle() - { - return handle; - } - - public void setHandle( String handle ) - { - this.handle = handle; - } - - @JsonProperty( "pricing_scheme" ) - public String getPricingScheme() - { - return pricingScheme; - } - - public void setPricingScheme( String pricingScheme ) - { - this.pricingScheme = pricingScheme; - } - - @JsonProperty( "prices" ) - public Price[] getPrices() - { - return prices; - } - - public void setPrices( Price[] prices ) - { - this.prices = prices; - } } diff --git a/src/main/java/com/chargify/model/PricePointIntervalUnit.java b/src/main/java/com/chargify/model/PricePointIntervalUnit.java new file mode 100644 index 0000000..32a7ffd --- /dev/null +++ b/src/main/java/com/chargify/model/PricePointIntervalUnit.java @@ -0,0 +1,6 @@ +package com.chargify.model; + +public enum PricePointIntervalUnit +{ + day, month +} diff --git a/src/main/java/com/chargify/model/Product.java b/src/main/java/com/chargify/model/Product.java deleted file mode 100644 index 64e63a7..0000000 --- a/src/main/java/com/chargify/model/Product.java +++ /dev/null @@ -1,390 +0,0 @@ -package com.chargify.model; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -@JsonInclude( JsonInclude.Include.NON_NULL ) -public class Product implements Serializable -{ - private String id; - - private String name; - - private String handle; - - private String description; - - @JsonProperty( "accounting_code" ) - private String accountingCode; - - @JsonProperty( "request_credit_card" ) - private Boolean requestCreditCard; - - @JsonProperty( "expiration_interval" ) - private String expirationInterval; - - @JsonProperty( "expiration_interval_unit" ) - private String expirationIntervalUnit; - - @JsonProperty( "created_at" ) - private Date createdAt; - - @JsonProperty( "updated_at" ) - private Date updatedAt; - - @JsonProperty( "price_in_cents" ) - private int priceInCents; - - @JsonProperty( "interval" ) - private int recurringInterval; - - @JsonProperty( "interval_unit" ) - private IntervalUnit intervalUnit; - - @JsonProperty( "initial_charge_in_cents" ) - private String initialChargeInCents; - - @JsonProperty( "trial_price_in_cents" ) - private Integer trialPriceInCents; - - @JsonProperty( "trial_interval" ) - private Integer trialInterval; - - @JsonProperty( "trial_interval_unit" ) - private String trialIntervalUnit; - - @JsonProperty( "archived_at" ) - private Date archivedAt; - - @JsonProperty( "require_credit_card" ) - private Boolean requireCreditCard; - - @JsonProperty( "return_params" ) - private String returnParams; - - private Boolean taxable; - - @JsonProperty( "update_return_url" ) - private String updateReturnUrl; - - @JsonProperty( "initial_charge_after_trial" ) - private Boolean initialChargeAfterTrial; - - @JsonProperty( "version_number" ) - private Integer versionNumber; - - @JsonProperty( "update_return_params" ) - private String updateReturnParams; - - @JsonProperty( "product_family" ) - private ProductFamily productFamily; - - @JsonProperty( "public_signup_pages" ) - private List publicSignupPages; - - @JsonCreator - public Product( @JsonProperty( "name" ) final String name, - @JsonProperty( "price" ) final int priceInCents, - @JsonProperty( "interval" ) final int recurringInterval, - @JsonProperty( "interval_unit" ) final IntervalUnit intervalUnit ) - { - this.name = name; - this.priceInCents = priceInCents; - this.recurringInterval = recurringInterval; - this.intervalUnit = intervalUnit; - } - - public String getId() - { - return id; - } - - public void setId( String id ) - { - this.id = id; - } - - public String getName() - { - return name; - } - - public String getHandle() - { - return handle; - } - - public void setHandle( String handle ) - { - this.handle = handle; - } - - public String getDescription() - { - return description; - } - - public void setDescription( String description ) - { - this.description = description; - } - - public String getAccountingCode() - { - return accountingCode; - } - - public void setAccountingCode( String accountingCode ) - { - this.accountingCode = accountingCode; - } - - public Boolean getRequestCreditCard() - { - return requestCreditCard; - } - - public void setRequestCreditCard( Boolean requestCreditCard ) - { - this.requestCreditCard = requestCreditCard; - } - - public String getExpirationInterval() - { - return expirationInterval; - } - - public void setExpirationInterval( String expirationInterval ) - { - this.expirationInterval = expirationInterval; - } - - public String getExpirationIntervalUnit() - { - return expirationIntervalUnit; - } - - public void setExpirationIntervalUnit( String expirationIntervalUnit ) - { - this.expirationIntervalUnit = expirationIntervalUnit; - } - - public Date getCreatedAt() - { - return createdAt; - } - - public void setCreatedAt( Date createdAt ) - { - this.createdAt = createdAt; - } - - public Date getUpdatedAt() - { - return updatedAt; - } - - public void setUpdatedAt( Date updatedAt ) - { - this.updatedAt = updatedAt; - } - - public Integer getPriceInCents() - { - return priceInCents; - } - - public int getRecurringInterval() - { - return recurringInterval; - } - - public IntervalUnit getIntervalUnit() - { - return intervalUnit; - } - - public String getInitialChargeInCents() - { - return initialChargeInCents; - } - - public void setInitialChargeInCents( String initialChargeInCents ) - { - this.initialChargeInCents = initialChargeInCents; - } - - public Integer getTrialInterval() - { - return trialInterval; - } - - public void setTrialInterval( Integer trialInterval ) - { - this.trialInterval = trialInterval; - } - - public String getTrialIntervalUnit() - { - return trialIntervalUnit; - } - - public void setTrialIntervalUnit( String trialIntervalUnit ) - { - this.trialIntervalUnit = trialIntervalUnit; - } - - public Date getArchivedAt() - { - return archivedAt; - } - - public void setArchivedAt( Date archivedAt ) - { - this.archivedAt = archivedAt; - } - - public Boolean getRequireCreditCard() - { - return requireCreditCard; - } - - public void setRequireCreditCard( Boolean requireCreditCard ) - { - this.requireCreditCard = requireCreditCard; - } - - public String getReturnParams() - { - return returnParams; - } - - public void setReturnParams( String returnParams ) - { - this.returnParams = returnParams; - } - - public Boolean getTaxable() - { - return taxable; - } - - public void setTaxable( Boolean taxable ) - { - this.taxable = taxable; - } - - public String getUpdateReturnUrl() - { - return updateReturnUrl; - } - - public void setUpdateReturnUrl( String updateReturnUrl ) - { - this.updateReturnUrl = updateReturnUrl; - } - - public Boolean getInitialChargeAfterTrial() - { - return initialChargeAfterTrial; - } - - public void setInitialChargeAfterTrial( Boolean initialChargeAfterTrial ) - { - this.initialChargeAfterTrial = initialChargeAfterTrial; - } - - public Integer getVersionNumber() - { - return versionNumber; - } - - public void setVersionNumber( Integer versionNumber ) - { - this.versionNumber = versionNumber; - } - - public String getUpdateReturnParams() - { - return updateReturnParams; - } - - public void setUpdateReturnParams( String updateReturnParams ) - { - this.updateReturnParams = updateReturnParams; - } - - public ProductFamily getProductFamily() - { - return productFamily; - } - - public void setProductFamily( ProductFamily productFamily ) - { - this.productFamily = productFamily; - } - - public List getPublicSignupPages() - { - return publicSignupPages; - } - - public void setPublicSignupPages( List publicSignupPages ) - { - this.publicSignupPages = publicSignupPages; - } - - public Integer getTrialPriceInCents() - { - return trialPriceInCents; - } - - public void setTrialPriceInCents( Integer trialPriceInCents ) - { - this.trialPriceInCents = trialPriceInCents; - } - - @Override - public String toString() - { - return "Product{" + - "id='" + id + '\'' + - ", name='" + name + '\'' + - ", handle='" + handle + '\'' + - ", description='" + description + '\'' + - ", accountingCode='" + accountingCode + '\'' + - ", requestCreditCard=" + requestCreditCard + - ", expirationInterval='" + expirationInterval + '\'' + - ", expirationIntervalUnit='" + expirationIntervalUnit + '\'' + - ", createdAt=" + createdAt + - ", updatedAt=" + updatedAt + - ", priceInCents=" + priceInCents + - ", recurringInterval=" + recurringInterval + - ", intervalUnit=" + intervalUnit + - ", initialChargeInCents='" + initialChargeInCents + '\'' + - ", trialPriceInCents=" + trialPriceInCents + - ", trialInterval=" + trialInterval + - ", trialIntervalUnit='" + trialIntervalUnit + '\'' + - ", archivedAt=" + archivedAt + - ", requireCreditCard=" + requireCreditCard + - ", returnParams='" + returnParams + '\'' + - ", taxable=" + taxable + - ", updateReturnUrl='" + updateReturnUrl + '\'' + - ", initialChargeAfterTrial=" + initialChargeAfterTrial + - ", versionNumber=" + versionNumber + - ", updateReturnParams='" + updateReturnParams + '\'' + - ", productFamily=" + productFamily + - ", publicSignupPages=" + publicSignupPages + - '}'; - } - - public enum IntervalUnit - { - month, day - } -} diff --git a/src/main/java/com/chargify/model/Subscription.java b/src/main/java/com/chargify/model/Subscription.java index 8e5db04..5a2df95 100644 --- a/src/main/java/com/chargify/model/Subscription.java +++ b/src/main/java/com/chargify/model/Subscription.java @@ -18,6 +18,7 @@ package com.chargify.model; +import com.chargify.model.product.Product; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; diff --git a/src/main/java/com/chargify/model/SubscriptionComponent.java b/src/main/java/com/chargify/model/SubscriptionComponent.java index 7839b88..f9c4e97 100644 --- a/src/main/java/com/chargify/model/SubscriptionComponent.java +++ b/src/main/java/com/chargify/model/SubscriptionComponent.java @@ -20,14 +20,16 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; import java.io.Serializable; +@Data @JsonInclude( JsonInclude.Include.NON_NULL ) public class SubscriptionComponent implements Serializable { @JsonProperty( "component_id" ) - private String componentId; + private Integer componentId; @JsonProperty( "subscription_id" ) private String subscriptionId; @@ -51,93 +53,9 @@ public class SubscriptionComponent implements Serializable @JsonProperty( "allocated_quantity" ) private Integer allocatedQuantity; - public String getComponentId() - { - return componentId; - } + @JsonProperty( "price_point_id" ) + private Integer pricePointId; - public void setComponentId( String componentId ) - { - this.componentId = componentId; - } - - public String getSubscriptionId() - { - return subscriptionId; - } - - public void setSubscriptionId( String subscriptionId ) - { - this.subscriptionId = subscriptionId; - } - - public Integer getUnitBalance() - { - return unitBalance; - } - - public void setUnitBalance( Integer unitBalance ) - { - this.unitBalance = unitBalance; - } - - public String getPricingScheme() - { - return pricingScheme; - } - - public void setPricingScheme( String pricingScheme ) - { - this.pricingScheme = pricingScheme; - } - - public String getName() - { - return name; - } - - public void setName( String name ) - { - this.name = name; - } - - public ComponentKind getKind() - { - return kind; - } - - public void setKind( ComponentKind kind ) - { - this.kind = kind; - } - - public String getUnitName() - { - return unitName; - } - - public void setUnitName( String unitName ) - { - this.unitName = unitName; - } - - public Boolean getEnabled() - { - return enabled; - } - - public void setEnabled( Boolean enabled ) - { - this.enabled = enabled; - } - - public Integer getAllocatedQuantity() - { - return allocatedQuantity; - } - - public void setAllocatedQuantity( Integer allocatedQuantity ) - { - this.allocatedQuantity = allocatedQuantity; - } + @JsonProperty( "price_point_handle" ) + private String pricePointHandle; } diff --git a/src/main/java/com/chargify/model/SubscriptionProductUpdate.java b/src/main/java/com/chargify/model/SubscriptionProductUpdate.java new file mode 100644 index 0000000..e9c2853 --- /dev/null +++ b/src/main/java/com/chargify/model/SubscriptionProductUpdate.java @@ -0,0 +1,22 @@ +package com.chargify.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@JsonInclude( JsonInclude.Include.NON_NULL ) +public class SubscriptionProductUpdate implements Serializable +{ + + @JsonProperty( "product_handle" ) + private String productHandle; + + @JsonProperty( "product_change_delayed" ) + private boolean changeDelayed; + + @JsonProperty( "product_price_point_handle" ) + private String pricePointHandle; +} diff --git a/src/main/java/com/chargify/model/product/Product.java b/src/main/java/com/chargify/model/product/Product.java new file mode 100644 index 0000000..59170fc --- /dev/null +++ b/src/main/java/com/chargify/model/product/Product.java @@ -0,0 +1,111 @@ +package com.chargify.model.product; + +import com.chargify.model.PricePointIntervalUnit; +import com.chargify.model.PublicSignupPage; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +@Data +@JsonInclude( JsonInclude.Include.NON_NULL ) +public class Product implements Serializable +{ + private String id; + + private String name; + + private String handle; + + private String description; + + @JsonProperty( "accounting_code" ) + private String accountingCode; + + @JsonProperty( "request_credit_card" ) + private Boolean requestCreditCard; + + @JsonProperty( "expiration_interval" ) + private String expirationInterval; + + @JsonProperty( "expiration_interval_unit" ) + private String expirationIntervalUnit; + + @JsonProperty( "created_at" ) + private Date createdAt; + + @JsonProperty( "updated_at" ) + private Date updatedAt; + + @JsonProperty( "price_in_cents" ) + private int priceInCents; + + @JsonProperty( "interval" ) + private int recurringInterval; + + @JsonProperty( "interval_unit" ) + private PricePointIntervalUnit intervalUnit; + + @JsonProperty( "initial_charge_in_cents" ) + private String initialChargeInCents; + + @JsonProperty( "trial_price_in_cents" ) + private Integer trialPriceInCents; + + @JsonProperty( "trial_interval" ) + private Integer trialInterval; + + @JsonProperty( "trial_interval_unit" ) + private PricePointIntervalUnit trialIntervalUnit; + + @JsonProperty( "archived_at" ) + private Date archivedAt; + + @JsonProperty( "require_credit_card" ) + private Boolean requireCreditCard; + + @JsonProperty( "return_params" ) + private String returnParams; + + @JsonProperty( "product_price_point_name" ) + private String productPricePointName; + + @JsonProperty( "product_price_point_handle" ) + private String productPricePointHandle; + + private Boolean taxable; + + @JsonProperty( "update_return_url" ) + private String updateReturnUrl; + + @JsonProperty( "initial_charge_after_trial" ) + private Boolean initialChargeAfterTrial; + + @JsonProperty( "version_number" ) + private Integer versionNumber; + + @JsonProperty( "update_return_params" ) + private String updateReturnParams; + + @JsonProperty( "product_family" ) + private ProductFamily productFamily; + + @JsonProperty( "public_signup_pages" ) + private List publicSignupPages; + + @JsonCreator + public Product( @JsonProperty( "name" ) final String name, + @JsonProperty( "price" ) final int priceInCents, + @JsonProperty( "interval" ) final int recurringInterval, + @JsonProperty( "interval_unit" ) final PricePointIntervalUnit intervalUnit ) + { + this.name = name; + this.priceInCents = priceInCents; + this.recurringInterval = recurringInterval; + this.intervalUnit = intervalUnit; + } +} diff --git a/src/main/java/com/chargify/model/ProductComponentItem.java b/src/main/java/com/chargify/model/product/ProductComponentItem.java similarity index 98% rename from src/main/java/com/chargify/model/ProductComponentItem.java rename to src/main/java/com/chargify/model/product/ProductComponentItem.java index 859a126..ee155a8 100644 --- a/src/main/java/com/chargify/model/ProductComponentItem.java +++ b/src/main/java/com/chargify/model/product/ProductComponentItem.java @@ -16,7 +16,7 @@ * ******************************************************************************************************************** */ -package com.chargify.model; +package com.chargify.model.product; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/com/chargify/model/ProductFamily.java b/src/main/java/com/chargify/model/product/ProductFamily.java similarity index 97% rename from src/main/java/com/chargify/model/ProductFamily.java rename to src/main/java/com/chargify/model/product/ProductFamily.java index 3174306..9986c2f 100644 --- a/src/main/java/com/chargify/model/ProductFamily.java +++ b/src/main/java/com/chargify/model/product/ProductFamily.java @@ -1,4 +1,4 @@ -package com.chargify.model; +package com.chargify.model.product; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/com/chargify/model/product/ProductPricePoint.java b/src/main/java/com/chargify/model/product/ProductPricePoint.java new file mode 100644 index 0000000..48464bc --- /dev/null +++ b/src/main/java/com/chargify/model/product/ProductPricePoint.java @@ -0,0 +1,53 @@ +package com.chargify.model.product; + +import com.chargify.model.PricePointIntervalUnit; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@JsonInclude( JsonInclude.Include.NON_NULL ) +@NoArgsConstructor +@AllArgsConstructor +@Data +public class ProductPricePoint implements Serializable +{ + private Integer id; + private String name; + private String handle; + @JsonProperty( "price_in_cents" ) + private Integer priceInCents; + private Integer interval; + @JsonProperty( "interval_unit" ) + private PricePointIntervalUnit intervalUnit; + @JsonProperty( "trial_price_in_cents" ) + private Integer trialPriceInCents; + @JsonProperty( "trial_interval" ) + private Integer trialInterval; + @JsonProperty( "trial_interval_unit" ) + private PricePointIntervalUnit trialIntervalUnit; + @JsonProperty( "trial_type" ) + private String trialType; + @JsonProperty( "initial_charge_in_cents" ) + private Integer initialChargeInCents; + @JsonProperty( "initial_charge_after_trial" ) + private boolean initialChargeAfterTrial = false; + @JsonProperty( "expiration_interval" ) + private Integer expirationInterval; + @JsonProperty( "expiration_interval_unit" ) + private String expirationIntervalUnit; + @JsonProperty( "product_id" ) + private String productId; + @JsonProperty( "archived_at" ) + private String archivedAt; + @JsonProperty( "created_at" ) + private String createdAt; + @JsonProperty( "updated_at" ) + private String updatedAt; + @JsonProperty( "use_site_exchange_rate" ) + private Boolean useSiteExchangeRate; + +} diff --git a/src/main/java/com/chargify/model/wrappers/AllocationPreviewWrapper.java b/src/main/java/com/chargify/model/wrappers/AllocationPreviewWrapper.java new file mode 100644 index 0000000..61528ee --- /dev/null +++ b/src/main/java/com/chargify/model/wrappers/AllocationPreviewWrapper.java @@ -0,0 +1,18 @@ +package com.chargify.model.wrappers; + +import com.chargify.model.AllocationPreview; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; + +public final class AllocationPreviewWrapper +{ + @Getter + private final AllocationPreview allocationPreview; + + @JsonCreator + public AllocationPreviewWrapper( @JsonProperty( "allocation_preview" ) AllocationPreview allocationPreview ) + { + this.allocationPreview = allocationPreview; + } +} diff --git a/src/main/java/com/chargify/model/wrappers/ComponentPricePointUpdatesWrapper.java b/src/main/java/com/chargify/model/wrappers/ComponentPricePointUpdatesWrapper.java index 1a7ade9..21c0e90 100644 --- a/src/main/java/com/chargify/model/wrappers/ComponentPricePointUpdatesWrapper.java +++ b/src/main/java/com/chargify/model/wrappers/ComponentPricePointUpdatesWrapper.java @@ -3,31 +3,29 @@ import com.chargify.model.ComponentPricePointUpdate; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AccessLevel; +import lombok.Data; +import lombok.Setter; import java.util.Arrays; +import java.util.List; +@Data +@Setter( AccessLevel.NONE ) public final class ComponentPricePointUpdatesWrapper { - private final ComponentPricePointUpdate[] pricePointUpdates; + @JsonProperty( "components" ) + private final List pricePointUpdates; @JsonCreator public ComponentPricePointUpdatesWrapper( @JsonProperty( "components" ) ComponentPricePointUpdate... pricePointUpdates ) { - this.pricePointUpdates = pricePointUpdates; + this.pricePointUpdates = Arrays.asList( pricePointUpdates ); } - @JsonProperty( "components" ) - public ComponentPricePointUpdate[] getPricePointUpdates() + public ComponentPricePointUpdatesWrapper( List pricePointUpdates ) { - return pricePointUpdates; - } - - @Override - public String toString() - { - return "ComponentPricePointUpdatesWrapper{" + - "pricePointUpdates=" + Arrays.toString( pricePointUpdates ) + - '}'; + this.pricePointUpdates = pricePointUpdates; } } diff --git a/src/main/java/com/chargify/model/wrappers/ComponentPricePointsWrapper.java b/src/main/java/com/chargify/model/wrappers/ComponentPricePointsWrapper.java new file mode 100644 index 0000000..d88db76 --- /dev/null +++ b/src/main/java/com/chargify/model/wrappers/ComponentPricePointsWrapper.java @@ -0,0 +1,22 @@ +package com.chargify.model.wrappers; + +import com.chargify.model.PricePoint; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.ToString; + +import java.util.Set; + +@ToString +public final class ComponentPricePointsWrapper +{ + @Getter + private final Set pricePoints; + + @JsonCreator + public ComponentPricePointsWrapper( @JsonProperty( "price_points" ) Set pricePoints ) + { + this.pricePoints = pricePoints; + } +} diff --git a/src/main/java/com/chargify/model/wrappers/ProductFamilyWrapper.java b/src/main/java/com/chargify/model/wrappers/ProductFamilyWrapper.java index 76a281f..d3af269 100644 --- a/src/main/java/com/chargify/model/wrappers/ProductFamilyWrapper.java +++ b/src/main/java/com/chargify/model/wrappers/ProductFamilyWrapper.java @@ -1,6 +1,6 @@ package com.chargify.model.wrappers; -import com.chargify.model.ProductFamily; +import com.chargify.model.product.ProductFamily; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/com/chargify/model/wrappers/ProductPricePointsWrapper.java b/src/main/java/com/chargify/model/wrappers/ProductPricePointsWrapper.java new file mode 100644 index 0000000..f365730 --- /dev/null +++ b/src/main/java/com/chargify/model/wrappers/ProductPricePointsWrapper.java @@ -0,0 +1,22 @@ +package com.chargify.model.wrappers; + +import com.chargify.model.product.ProductPricePoint; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.ToString; + +import java.util.Set; + +@ToString +public final class ProductPricePointsWrapper +{ + @Getter + private final Set pricePoints; + + @JsonCreator + public ProductPricePointsWrapper( @JsonProperty( "price_points" ) Set pricePoints ) + { + this.pricePoints = pricePoints; + } +} diff --git a/src/main/java/com/chargify/model/wrappers/ProductWrapper.java b/src/main/java/com/chargify/model/wrappers/ProductWrapper.java index 31651c5..09e1482 100644 --- a/src/main/java/com/chargify/model/wrappers/ProductWrapper.java +++ b/src/main/java/com/chargify/model/wrappers/ProductWrapper.java @@ -1,6 +1,6 @@ package com.chargify.model.wrappers; -import com.chargify.model.Product; +import com.chargify.model.product.Product; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/com/chargify/model/wrappers/SubscriptionProductUpdateWrapper.java b/src/main/java/com/chargify/model/wrappers/SubscriptionProductUpdateWrapper.java new file mode 100644 index 0000000..4a66e2c --- /dev/null +++ b/src/main/java/com/chargify/model/wrappers/SubscriptionProductUpdateWrapper.java @@ -0,0 +1,19 @@ +package com.chargify.model.wrappers; + +import com.chargify.model.SubscriptionProductUpdate; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; + +public final class SubscriptionProductUpdateWrapper +{ + @Getter + private final SubscriptionProductUpdate subscription; + + @JsonCreator + public SubscriptionProductUpdateWrapper( @JsonProperty( "subscription" ) + SubscriptionProductUpdate wrappedSubscription ) + { + this.subscription = wrappedSubscription; + } +} diff --git a/src/test/java/com/chargify/ComponentsTest.java b/src/test/java/com/chargify/ComponentsTest.java index 9529b25..61e71dd 100644 --- a/src/test/java/com/chargify/ComponentsTest.java +++ b/src/test/java/com/chargify/ComponentsTest.java @@ -2,7 +2,7 @@ import com.chargify.model.Component; import com.chargify.model.ComponentKind; -import com.chargify.model.ProductFamily; +import com.chargify.model.product.ProductFamily; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; diff --git a/src/test/java/com/chargify/ProductFamiliesTest.java b/src/test/java/com/chargify/ProductFamiliesTest.java index 3e3083c..1dcffe5 100644 --- a/src/test/java/com/chargify/ProductFamiliesTest.java +++ b/src/test/java/com/chargify/ProductFamiliesTest.java @@ -1,7 +1,7 @@ package com.chargify; import com.chargify.exceptions.ApiHandleNotUniqueException; -import com.chargify.model.ProductFamily; +import com.chargify.model.product.ProductFamily; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; diff --git a/src/test/java/com/chargify/ProductsTest.java b/src/test/java/com/chargify/ProductsTest.java index a211308..1d9cb17 100644 --- a/src/test/java/com/chargify/ProductsTest.java +++ b/src/test/java/com/chargify/ProductsTest.java @@ -1,8 +1,9 @@ package com.chargify; import com.chargify.exceptions.ChargifyException; -import com.chargify.model.Product; -import com.chargify.model.ProductFamily; +import com.chargify.model.PricePointIntervalUnit; +import com.chargify.model.product.Product; +import com.chargify.model.product.ProductFamily; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; @@ -23,9 +24,9 @@ public static void setup() productUnderTest = chargify.createProduct( productFamilyUnderTest.getId(), new Product( randomName(), 0, 1, - Product.IntervalUnit.month ) ); + PricePointIntervalUnit.month ) ); - final Product productWithHandle = new Product( randomName(), 0, 1, Product.IntervalUnit.month ); + final Product productWithHandle = new Product( randomName(), 0, 1, PricePointIntervalUnit.month ); productWithHandle.setHandle( randomName() ); productWithHandleUnderTest = chargify.createProduct( productFamilyUnderTest.getId(), productWithHandle ); } diff --git a/src/test/java/com/chargify/SubscriptionDelayedChangeTest.java b/src/test/java/com/chargify/SubscriptionDelayedChangeTest.java index 872c119..092079f 100644 --- a/src/test/java/com/chargify/SubscriptionDelayedChangeTest.java +++ b/src/test/java/com/chargify/SubscriptionDelayedChangeTest.java @@ -2,8 +2,9 @@ import com.chargify.model.CreateSubscription; import com.chargify.model.Customer; -import com.chargify.model.Product; -import com.chargify.model.ProductFamily; +import com.chargify.model.PricePointIntervalUnit; +import com.chargify.model.product.Product; +import com.chargify.model.product.ProductFamily; import com.chargify.model.Subscription; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -25,12 +26,12 @@ public static void setup() { productFamily = chargify.createProductFamily( new ProductFamily( randomName() ) ); - final Product initialProduct = new Product( randomName(), 0, 1, Product.IntervalUnit.month ); + final Product initialProduct = new Product( randomName(), 0, 1, PricePointIntervalUnit.month ); initialProduct.setRequestCreditCard( false ); initialProduct.setRequireCreditCard( false ); SubscriptionDelayedChangeTest.initialProduct = chargify.createProduct( productFamily.getId(), initialProduct ); - final Product targetProduct = new Product( randomName(), 0, 1, Product.IntervalUnit.month ); + final Product targetProduct = new Product( randomName(), 0, 1, PricePointIntervalUnit.month ); targetProduct.setRequestCreditCard( false ); targetProduct.setRequireCreditCard( false ); targetProduct.setHandle( randomName() ); diff --git a/src/test/java/com/chargify/SubscriptionsTest.java b/src/test/java/com/chargify/SubscriptionsTest.java index 78e927f..6fc2a68 100644 --- a/src/test/java/com/chargify/SubscriptionsTest.java +++ b/src/test/java/com/chargify/SubscriptionsTest.java @@ -2,8 +2,9 @@ import com.chargify.model.CreateSubscription; import com.chargify.model.Customer; -import com.chargify.model.Product; -import com.chargify.model.ProductFamily; +import com.chargify.model.PricePointIntervalUnit; +import com.chargify.model.product.Product; +import com.chargify.model.product.ProductFamily; import com.chargify.model.Subscription; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -31,7 +32,7 @@ public static void setup() { productFamilyUnderTest = chargify.createProductFamily( new ProductFamily( randomName() ) ); - final Product product = new Product( randomName(), 0, 1, Product.IntervalUnit.month ); + final Product product = new Product( randomName(), 0, 1, PricePointIntervalUnit.month ); product.setRequestCreditCard( false ); product.setRequireCreditCard( false ); productUnderTest = chargify.createProduct( productFamilyUnderTest.getId(), product );