Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
0203bc2
fixed problem with error handling
ksv105 Sep 6, 2019
9a0deba
[BKNDLSS-21361] Change the duration of the Cloud99 trial to be 30 day…
lycaron May 18, 2020
7b3e681
Merge pull request #1 from Backendless/andriy.konoz/21361.21551/compo…
ksv510 May 18, 2020
5ebd205
added adjust method
ksv105 May 21, 2020
7d05085
[BKNDLSS-21873] Credit balance should not reset before payment
lycaron Jun 15, 2020
e124fd5
Merge pull request #2 from Backendless/andriy.konoz/21873/do_not_rese…
lycaron Jul 30, 2020
cb1c07b
Constants for events and subscription states.
lycaron Jul 31, 2020
f19c9e3
Merge pull request #3 from Backendless/andriy.konoz/constants_for_eve…
lycaron Jul 31, 2020
532155e
Fixed creation of ChargifyError instances
lycaron Aug 5, 2020
6601195
[BKNDLSS-22518] Applications with referral code created without Charg…
lycaron Aug 19, 2020
4082989
Merge pull request #4 from Backendless/andriy.konoz/22518/referal_cod…
lycaron Aug 19, 2020
72260a9
[BKNDLSS-22600] Card added to app, but it is not displayed
lycaron Aug 31, 2020
a56f02b
Merge pull request #5 from Backendless/andriy.konoz/22600/credit_card…
ksv510 Aug 31, 2020
308296d
[BKNDLSS-22702] Special handling of "Springboard Shortcut" / [BKNDLSS…
lycaron Sep 14, 2020
f16c146
Merge pull request #6 from Backendless/andriy.konoz/22702.22701/subsc…
lycaron Sep 14, 2020
73f6a98
BKNDLSS-22478 Marketplace from EU cloud. Added currency property.
ksv105 Sep 15, 2020
5f9bd5f
[BKNDLSS-23440] Add support for annual pricing plans
lycaron Jan 11, 2021
e90811b
Added method for retrieval of component with its price points
lycaron Jan 11, 2021
a00f700
Added method for component allocation preview
lycaron Jan 14, 2021
3719c36
[BKNDLSS-24139] Add information about the next billing plan
lycaron Feb 23, 2021
e3bc2c3
Merge pull request #7 from Backendless/andriy.konoz/23440/annual_bill…
lycaron Feb 23, 2021
e848bd4
Merge branch 'master' into andriy.konoz/24139/add_info_about_next_bil…
lycaron Feb 23, 2021
7bba601
Fixed build after sync with master
lycaron Feb 23, 2021
a38b180
Updated SDK version, minor changes to Subscription and SubscriptionPr…
lycaron Feb 24, 2021
d162091
Merge pull request #8 from Backendless/andriy.konoz/24139/add_info_ab…
lycaron Feb 24, 2021
95d606d
Removed productId from Subscription since it is not returned by Charg…
lycaron Mar 1, 2021
817eac5
Added method for cancellation of scheduled product change
lycaron Mar 2, 2021
01186d1
Added ability to preserve subscription balance / Updated dependencies…
lycaron Aug 9, 2021
b696fa8
[BKNDLSS-26119]: ChargifyError Unrecognized field "error"
Aug 11, 2021
a151c80
[BKNDLSS-26119]: Change version
Aug 11, 2021
73d61f0
Merge pull request #9 from Backendless/vova_ya/26119/ChargifyError_Un…
ksv510 Aug 11, 2021
1e78b22
[BKNDLSS-26106]: Purge subscription
Sep 1, 2021
2e74f59
[BKNDLSS-26106]: Remove SubscriptionStateEnum
Sep 2, 2021
c786744
[BKNDLSS-26106]: Fix getting customer_id
Sep 2, 2021
3433ee0
Merge pull request #10 from Backendless/vova_ya/26106/Purge_subscription
ksv510 Sep 2, 2021
4d91036
[BKNDLSS-25817]: Add email setter to Customer
Oct 27, 2021
e7d14df
Merge pull request #11 from Backendless/vova_ya/25817/Add_email_sette…
JoeSilentJoe Oct 27, 2021
87d8bb3
[BKNDLSS-25817]: Add findCustomersBy method
Oct 28, 2021
5b3e7d6
Merge pull request #12 from Backendless/vova_ya/25817/Add_findCustome…
JoeSilentJoe Oct 28, 2021
28698ba
[BKNDLSS-25817]: Add findCustomersBy method
Oct 28, 2021
2cefe75
Merge pull request #13 from Backendless/vova_ya/25817/Add_findCustome…
JoeSilentJoe Oct 28, 2021
d100cb4
Added method for customer payment profiles retrieval
lycaron Jan 14, 2022
b925d12
Added possibility to reference client subscription-related entities
lycaron Jan 17, 2022
a933ac2
Added method for subscription update
lycaron Jan 18, 2022
97326a3
Added method for subscription payments search
lycaron Jan 24, 2022
c82a1b1
Added methods for credit card management
lycaron Feb 3, 2022
4b2b0a6
Added "billingZip" field to PaymentProfile
lycaron Feb 3, 2022
336fb91
Added "findSubscriptionByReference" method
lycaron Mar 2, 2022
9f40c4c
Include null fields while updating customer to allow already added da…
lycaron May 13, 2022
76098fb
[BKNDLSS-29334] Billing Service. Obtaining of Chargify subscription b…
lycaron Aug 15, 2022
1e182cf
Merge pull request #14 from Backendless/andriy.konoz/29334/make_get_s…
ksv510 Aug 15, 2022
e2d7e5b
Fixed bug related to errors handling
lycaron Sep 6, 2022
65eeb4a
uncommented javadoc plugin
lycaron Sep 7, 2022
61a03bc
Added 'findSubscriptionsByCustomerId' with pagination
lycaron Sep 21, 2022
96e0d2d
Replaced Java HttpClient by Spring WebClient
lycaron Sep 23, 2022
2631131
Merge pull request #15 from Backendless/andriy.konoz/29650/replaced_h…
ksv510 Sep 26, 2022
b27c210
[BKNDLSS-29663] Reactive API for Chargify
lycaron Oct 4, 2022
425a53a
Merge pull request #16 from Backendless/andriy.konoz/29663/chargify_a…
ksv510 Oct 6, 2022
8e91c8d
BKNDLSS-30088 Cannot publish deployment model
ksv105 Oct 17, 2022
6659d74
Merge pull request #17 from Backendless/ksv/30088/pub_model
lycaron Oct 18, 2022
1cebffb
changed developer
ksv105 Oct 18, 2022
ac32c02
BKNDLSS-30118 Current balance does not change after exchanging BBs
ksv105 Oct 19, 2022
152f548
Merge pull request #18 from Backendless/ksv/30118/bb_exchange
lycaron Oct 21, 2022
7e35a38
BKNDLSS-30259 Unable to activate "Cookie-based Authorization" on the …
ksv105 Oct 28, 2022
8303a9f
Merge pull request #19 from Backendless/ksv/30259/cookie
lycaron Oct 28, 2022
792925c
[BKNDLSS-30309] Billing. "Get status" endpoint returns error instead …
lycaron Nov 3, 2022
4e95212
Merge pull request #20 from Backendless/andriy.konoz/30309/fix_find_s…
lycaron Nov 26, 2022
1880dd4
[BKNDLSS-29769] Developer payout
lycaron Nov 27, 2022
544caff
Merge pull request #21 from Backendless/andriy.konoz/29769/developer_…
lycaron Nov 28, 2022
1f4f901
[BKNDLSS-30458] Billing. Numeric value out of range for some subscrip…
lycaron Nov 29, 2022
fb6426a
Merge pull request #22 from Backendless/andriy.konoz/30458/changed_ty…
ksv510 Nov 30, 2022
8977f28
[BKNDLSS-30458] Billing. Numeric value out of range for some subscrip…
lycaron Dec 1, 2022
9518836
Merge pull request #23 from Backendless/andriy.konoz/30458/fix_number…
ksv510 Dec 2, 2022
2c82fd0
[BKNDLSS-30531] Next billing date should be preserved when billing pl…
lycaron Dec 6, 2022
632173e
Merge pull request #24 from Backendless/andriy.konoz/30531/next_billi…
ksv510 Dec 7, 2022
bccc23d
[BKNDLSS-30720] New backendless billing
lycaron Dec 23, 2022
b0f5e6f
Merge pull request #25 from Backendless/andriy.konoz/30720/new_billing
ksv510 Dec 23, 2022
42107b8
[BKNDLSS-30821] Billing. Try to charge existing depth on import/expor…
lycaron Dec 27, 2022
0694f1a
Merge pull request #26 from Backendless/andriy.konoz/30821/try_to_cha…
ksv510 Dec 27, 2022
303eca8
[BKNDLSS-30795] Record one-time charges for custom developer products
lycaron Jan 4, 2023
906d43a
Merge pull request #27 from Backendless/andriy.konoz/30795/record_cha…
ksv510 Jan 6, 2023
297affa
[BKNDLSS-31271] Billing. Errors during subscription info decoding
lycaron Feb 3, 2023
597a37e
[BKNDLSS-31271] Billing. Errors during subscription info decoding PR #28
ksv510 Feb 3, 2023
52ba318
BKNDLSS-31948 Add route to update pricing for subscription-based prod…
lycaron Apr 5, 2023
2e4444c
Merge pull request #29 from Backendless/andriy.konoz/31948/update_com…
lycaron Jul 18, 2023
f733ebd
BKNDLSS-33056 Balance decreases if you buy a product from a non-valid…
lycaron Jul 18, 2023
b173468
BKNDLSS-34024 The request to create a new application does not finish…
lycaron Oct 3, 2023
54f9d8e
[BKNDLSS-34230]: Add findCustomers method
Dec 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 64 additions & 21 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.chargify</groupId>
<artifactId>chargify-sdk</artifactId>
<version>0.2.7</version>
<version>0.44</version>
<packaging>jar</packaging>

<name>Chargify SDK for Java</name>
Expand All @@ -16,14 +16,14 @@
<licenses>
<license>
<name>The Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>

<developers>
<developer>
<name>Sergey Chupov</name>
<email>scadgek@live.com</email>
<name>Backendless</name>
<email>chargify-sdk-for-java@backendless.com</email>
<organization>Backendless</organization>
<organizationUrl>https://backendless.com/</organizationUrl>
</developer>
Expand All @@ -32,67 +32,100 @@
<scm>
<connection>scm:git:git://github.com/scadgek/chargify-java-sdk.git</connection>
<developerConnection>scm:git:ssh://github.com:scadgek/chargify-java-sdk.git</developerConnection>
<url>http://github.com/github.com/scadgek/chargify-java-sdk/tree/master</url>
<url>https://github.com/github.com/scadgek/chargify-java-sdk/tree/master</url>
</scm>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<repo.bkndls_private>backendless_private</repo.bkndls_private>
<repo.bkndls_private.url>https://maven.backendless.com/repository/backendless_private/
</repo.bkndls_private.url>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>2.0.1.RELEASE</version>
<artifactId>spring-webflux</artifactId>
<version>6.0.12</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
<version>2.14.3</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.5</version>
<version>2.14.3</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<version>1.4.11</version>
</dependency>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>

<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
<version>1.1.11</version>
<scope>provided</scope>
</dependency>


<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<version>4.13.2</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.5.RELEASE</version>
<version>6.0.12</version>
<scope>test</scope>
</dependency>

</dependencies>

<distributionManagement>
<snapshotRepository>
<id>${repo.bkndls_private}</id>
<url>${repo.bkndls_private.url}snapshots/</url>
</snapshotRepository>
<repository>
<id>${repo.bkndls_private}</id>
<url>${repo.bkndls_private.url}</url>
</repository>
</distributionManagement>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
Expand All @@ -105,6 +138,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
Expand All @@ -114,7 +148,16 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
</configuration>

</plugin>
</plugins>
</build>

</project>
</project>
166 changes: 113 additions & 53 deletions src/main/java/com/chargify/Chargify.java
Original file line number Diff line number Diff line change
@@ -1,99 +1,159 @@
package com.chargify;

import com.chargify.model.Allocation;
import com.chargify.model.Component;
import com.chargify.model.ComponentPricePointUpdate;
import com.chargify.model.Customer;
import com.chargify.model.Metadata;
import com.chargify.model.Product;
import com.chargify.model.ProductFamily;
import com.chargify.model.ReferralCode;
import com.chargify.model.RenewalPreview;
import com.chargify.model.Subscription;
import com.chargify.model.SubscriptionComponent;
import com.chargify.model.SubscriptionMetadata;
import com.chargify.model.Usage;

import com.chargify.model.*;
import com.chargify.model.product.Product;
import com.chargify.model.product.ProductFamily;
import com.chargify.model.product.ProductPricePoint;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.time.LocalDateTime;
import java.util.List;

public interface Chargify
{
ProductFamily createProductFamily( ProductFamily productFamily );
Mono<ProductFamily> createProductFamily( ProductFamily productFamily );

Mono<ProductFamily> findProductFamilyById( String id );

Flux<ProductFamily> findAllProductFamilies();

Mono<ProductFamily> archiveProductFamilyById( String id );

Mono<Product> createProduct( String productFamilyId, Product product );

Mono<Product> findProductById( String id );

Mono<Product> findProductByApiHandle( String apiHandle );

Flux<ProductPricePoint> findProductPricePointsByProductId( String productId );

Flux<PricePoint> findComponentPricePoints( int componentId );

Mono<PricePoint> updatePricePoint( int componentId, int pricePointId, PricePointUpdate pricePointUpdate );

Flux<Product> findAllProducts();

Flux<Product> findProductsByProductFamilyId( String productFamilyId );

Mono<Product> archiveProductById( String id );

Mono<Subscription> createSubscription( CreateSubscription subscription );

ProductFamily findProductFamilyById( String id );
Mono<Void> updateSubscription( String subscriptionId, UpdateSubscription subscription );

List<ProductFamily> findAllProductFamilies();
Mono<Void> updateSubscriptionNextBillingDate( String subscriptionId, LocalDateTime nextBillingDate );

ProductFamily archiveProductFamilyById( String id );
Mono<SubscriptionChargeResult> createSubscriptionCharge( String subscriptionId, SubscriptionCharge subscriptionCharge );

Product createProduct( String productFamilyId, Product product );
Mono<Subscription> findSubscriptionById( String id );

Product findProductById( String id );
Flux<PaymentProfile> findPaymentProfilesForCustomer( String customerId );

Product findProductByApiHandle( String apiHandle );
Mono<PaymentProfile> createPaymentProfile( CreatePaymentProfile paymentProfile );

List<Product> findAllProducts();
Mono<Void> updatePaymentProfile( String paymentProfileId, UpdatePaymentProfile paymentProfile );

List<Product> findProductsByProductFamilyId( String productFamilyId );
Mono<PaymentProfile> updateSubscriptionPaymentProfile( String subscriptionId, String paymentProfileId );

Product archiveProductById( String id );
Mono<PaymentProfile> findPaymentProfileById( String paymentProfileId );

Subscription createSubscription( Subscription subscription );
Mono<Void> deleteUnusedPaymentProfile( String paymentProfileId );

Subscription findSubscriptionById( String id );
Mono<Void> deletePaymentProfile( String subscriptionId, String paymentProfileId );

List<Subscription> findSubscriptionsByCustomerId( String customerId );
Flux<Subscription> findSubscriptionsByCustomerId( String customerId );

List<Subscription> findAllSubscriptions();
Flux<Subscription> findSubscriptionsByCustomerId( String customerId, int pageNumber, int pageSize );

List<Subscription> findSubscriptionsByState( String state, int pageNumber, int pageSize );
Flux<Subscription> findAllSubscriptions();

Subscription cancelSubscriptionById( String id );
Mono<Subscription> purgeSubscription( Subscription subscription );

Subscription cancelSubscriptionProductChange( String subscriptionId );
Flux<Subscription> findSubscriptionsByState( String state, int pageNumber, int pageSize );

Subscription migrateSubscription( String subscriptionId, String productHandle );
Mono<Subscription> cancelSubscriptionById( String id );

Subscription reactivateSubscription( String subscriptionId );
Mono<Subscription> cancelSubscriptionProductChange( String subscriptionId );

ComponentPricePointUpdate migrateSubscriptionComponentToPricePoint( String subscriptionId, int componentId,
Mono<Subscription> migrateSubscription( String subscriptionId, Migration migration );

Mono<Subscription> reactivateSubscription( String subscriptionId, boolean preserveBalance );

Mono<Subscription> reactivateSubscription( String subscriptionId, SubscriptionReactivationData reactivationData );

Mono<ComponentPricePointUpdate> migrateSubscriptionComponentToPricePoint( String subscriptionId, int componentId,
String pricePointHandle );

Subscription changeSubscriptionProduct( String subscriptionId, String productHandle, boolean delayed );
Flux<ComponentPricePointUpdate> bulkUpdateSubscriptionComponentPricePoint( String subscriptionId, List<ComponentPricePointUpdate> items );

Mono<Subscription> cancelScheduledSubscriptionProductChange( String subscriptionId );

Mono<Subscription> changeSubscriptionProduct( String subscriptionId, SubscriptionProductUpdate payload );

Mono<RenewalPreview> previewSubscriptionRenewal( String subscriptionId );

Flux<Metadata> createSubscriptionMetadata( String subscriptionId, Metadata... metadata );

Mono<SubscriptionMetadata> readSubscriptionMetadata( String subscriptionId );

Flux<Metadata> updateSubscriptionMetadata( String subscriptionId, Metadata... metadata );

Mono<Component> createComponent( String productFamilyId, Component component );

Mono<Allocation> createComponentAllocation( String subscriptionId, int componentId, Allocation allocation );

Mono<AllocationPreview> previewComponentAllocation( String subscriptionId, int componentId, int quantity );

Flux<Component> findComponentsByProductFamily( String productFamilyId );

RenewalPreview previewSubscriptionRenewal( String subscriptionId );
Mono<Component> findComponentByIdAndProductFamily( int componentId, String productFamilyId );

List<Metadata> createSubscriptionMetadata( String subscriptionId, Metadata... metadata );
Mono<ComponentWithPricePoints> findComponentWithPricePointsByIdAndProductFamily( int componentId, String productFamilyId );

SubscriptionMetadata readSubscriptionMetadata( String subscriptionId );
Flux<SubscriptionComponent> findSubscriptionComponents( String subscriptionId );

List<Metadata> updateSubscriptionMetadata( String subscriptionId, Metadata... metadata );
Flux<SubscriptionStatement> findSubscriptionStatements(
String subscriptionId, int page, int pageSize, String sort, String direction );

Component createComponent( String productFamilyId, Component component );
Flux<Transaction> findSubscriptionTransactions( String subscriptionId, SubscriptionTransactionsSearchOptions options );

Allocation createComponentAllocation( String subscriptionId, String componentId, Allocation allocation );
Mono<SubscriptionComponent> findSubscriptionComponentById( String subscriptionId, int componentId );

List<Component> findComponentsByProductFamily( String productFamilyId );
Mono<Usage> reportSubscriptionComponentUsage( String subscriptionId, int componentId, Usage usage );

Component findComponentByIdAndProductFamily( String componentId, String productFamilyId );
Mono<Customer> createCustomer( Customer customer );

List<SubscriptionComponent> findSubscriptionComponents( String subscriptionId );
Mono<Customer> updateCustomer( Customer customer );

SubscriptionComponent findSubscriptionComponentById( String subscriptionId, String componentId );
Mono<Customer> findCustomerById( String id );

Usage reportSubscriptionComponentUsage( String subscriptionId, String componentId, Usage usage );
Mono<Customer> findCustomerByReference( String reference );

Customer createCustomer( Customer customer );
Mono<Subscription> findSubscriptionByReference( String reference );

Customer updateCustomer( Customer customer );
/**
* Search to retrieve a single or group of customers.
*
* @param criterion (string or integer) - can be email, Chargify ID, Reference (Your App), Organization
* @param pageNumber (start from 1) the page parameter via the query string to access subsequent pages of 50 transactions
* @return List of customers
*/
Flux<Customer> findCustomersBy( Object criterion, int pageNumber );

Customer findCustomerById( String id );
/**
* The first page of results is displayed
* Default value for per_page is 50
* For page settings and how many records to fetch in each request (perPage), use
* {@link #findCustomers(int pageNumber, int perPage )}
*/
Flux<Customer> findAllCustomers();

Customer findCustomerByReference( String reference );
Flux<Customer> findCustomers( int pageNumber, int perPage );

List<Customer> findAllCustomers();
Mono<Void> deleteCustomerById( String id );

void deleteCustomerById( String id );
Mono<ReferralCode> validateReferralCode( String code );

ReferralCode validateReferralCode( String code );
Mono<Adjustment> adjust( String subscriptionId, Adjustment adjustment );
}
Loading