-
Notifications
You must be signed in to change notification settings - Fork 383
Migration guide for v23
Ramya Rao edited this page Apr 8, 2025
·
11 revisions
- This release changes the pinned API version to
2023-08-16. Please read the API Upgrade Guide and carefully review the API changes before upgradingstripe-java.
"
Introduces StripeClient and the service-based pattern, a new interface for calling the Stripe API with many benefits over the existing resource-based paradigm:
- No global config: you can simultaneously use multiple clients with different configuration options (such as API keys)
- No extra API calls. All API endpoints can be accessed with a single method call. You don't have to call
retrievebefore doing anupdate. - No static methods. Much easier mocking.
While there are no plans yet to completely remove the previous resource-based call pattern, it will be deprecated soon and new API endpoints will be supported only in the new pattern. We strongly recommend migrating to the new service-based pattern as you begin to use new APIs. This will help you avoid mixing the two patterns in your integration, which can lead to confusion as you maintain your code.
To migrate from resource-based to service-based pattern:
- Initialize a
StripeClientinstance.// Before Stripe.apiKey = "sk_test_123" // After StripeClient client = new StripeClient("sk_test_123");
- Convert static resource method calls to
StripeClientcalls:// Before Customer customer = Customer.retrieve("cus_123"); // After client.customers().retrieve("cus_123");
- Convert instance resource method calls to
StripeClientcalls.XxxParamsclasses will, in most cases, stay the same as you used for resource-based calls.// Before Customer customer = Customer.retrive("cus_123"); customer.delete(); // After client.customers().delete("cus_123"); // After client.customers().delete(customer.id); PaymentMethod pm = client.customers().retrievePaymentMethod(customer.id, "pm_123");
- Convert
XxxCollectionmethod calls to toStripeClientcalls. In these casesXxxParamsclasses will change fromXxxCollectionParamstoXxxPrams. Note:StripeClientalways returnsStripeCollection<Xxx>instead ofXxxCollectionand all methods that were available onXxxCollectionare accessible thoughtStripeClient.// Before Account resource = Account.retrieve("acct_xxxxxxxxxxxxx"); CapabilityCollection capabilities = resource.capabilities(); CapabilityCollectionRetrieveParams params = CapabilityCollectionRetrieveParams.builder() .addExpand("account") .build(); capabilities.retrieve("cap_123", params, null); // After CapabilityRetrieveParams params = CapabilityRetrieveParams.builder() .addExpand("account") .build(); client.accounts().capabilities().retrieve("acct_xxxxxxxxxxxxx", "cap_123", params);
- Convert nested resource operations to
StripeClientcalls:// Before Customer resource = Customer.retrieve("cus_xxxxxxxxxxxxx"); CustomerBalanceTransactionCollection collection = resource.balanceTransactions(); // After StripeCollection<CustomerBalanceTransaction> customer = client. customers().balanceTransactions().list("cus_xxxxxxxxxxxxx");
⚠️ StripeResponseGetter.request(...),streamRequest(...)signatures changed.-
BaseAddressparameter added. -
urlrenamed topathand is a relative to the base address -
apiModeparameter added to control how request is sent and response is handled,V1andOAuthare supported values.
-
⚠️ RequestOptions.getReadTimeout(),getConnectTimeout(),getMaxNetworkRetries()now returnIntegerinstead ofint.
⚠️ Remove support for valuescustom_account_updateandcustom_account_verificationfrom enumAccountLinkCreateParams.type- These values are not fully operational. Please use
account_updateandaccount_onboardinginstead (see API reference).
- These values are not fully operational. Please use
⚠️ Remove support foravailable_ononBalanceTransactionListParams- Use of this parameter is discouraged. You may use
.putExtraParamif sending the parameter is still required.
- Use of this parameter is discouraged. You may use
⚠️ Remove support foralternate_statement_descriptors,destination, anddisputeonCharge- Use of these fields is discouraged.
⚠️ Remove support forshipping_ratesoncheckout.SessionCreateParams⚠️ Remove support forshipping_ratesoncheckout.SessionCreateParams- Please use
shipping_optionsinstead.
- Please use
⚠️ Remove support forcouponandtrial_from_planoncheckout.SessionCreateParams.subscription_data- Please migrate to the Prices API, or use
.putExtraParamif sending the parameter is still required.
- Please migrate to the Prices API, or use
⚠️ Remove support for valuecard_presentfrom enumsCustomerListPaymentMethodsParams.typeandPaymentMethodListParams.type- This value was not fully operational.
⚠️ Remove support forblikonMandate.payment_method_details,PaymentMethodUpdateParams,SetupAttempt.payment_method_details,SetupIntent.payment_method_options,SetupIntentConfirmParams.payment_method_options,SetupIntentCreateParams.payment_method_options, andSetupIntentUpdateParams.payment_method_options- These fields were mistakenly released.
⚠️ Remove support foracss_debit,affirm,au_becs_debit,bacs_debit,cashapp,sepa_debit, andziponPaymentMethodUpdateParams- These fields are empty.
⚠️ Remove support forcountryonPaymentMethod.link- This field was not fully operational.
⚠️ Remove support forrecurringonPriceUpdateParams- This property should be set on create only.
⚠️ Remove support forattributes,caption, anddeactivate_ononProductCreateParams,ProductUpdateParams, andProduct- These fields are not fully operational.
⚠️ addFullNameAliaserenamed toaddFullNameAliasinAccountCreateParams,AccountUpdateParams,PersonCollectionCreateParams,TokenCreateParams,PersonCollectionCreateParams,PersonUpdateParams.⚠️ addLookupKeysrenamed toaddLookupKeyinPriceListParams
-
Behavior Changes
⚠️ RequestOptions.getDefault()does not apply global configuration options fromStripeclass, all fields are initialized tonull.⚠️ RequestOptionsBuilderdoes not apply global configuration options fromStripeclass, all fields are initialized tonull.
⚠️ ApiResource.request(),requestStream(),requestCollection(),requestSearchResult()methods removed. *⚠️ StripeResponseGetter.oauthRequest(...)was removed. OAuth requests are now performed viaStripeResponseGetter.requestwithApiMode.OAuth. *⚠️ DeprecatedApiResource.className()singleClassUrl(),classUrl(),instanceUrl(),subresourceUrl()methods removed.