This page contains the release notes for Pay by Link, Checkout API, and Drop-in/Components for web, iOS, Android, React Native, and Flutter starting from 2020.
Release notes
Learn about the latest updates to our API, and Drop-in/Components for web, iOS, and Android.
We recommend you use Checkout API v70 or later.
To migrate from an earlier version, follow the migration guide.
- For Drop-in, you can now configure if you show a dialog to dismiss Drop-in with a finished state or error state.
DropInServiceResult.Error
now requires theErrorDialog
parameter.DropInServiceResult.Finished
now has an optionalFinishedDialog
parameter.
PaymentMethodDetails
and its sub-classes now have thecheckoutAttemptId
field.- You can no longer manually instantiate the
Environment
class and thebaseUrl
field has been removed. - Restructured packages and moved classes. If you are upgrading, you only need to re-import them because most classes names haven't changed.
- All classes in
com.adyen.checkout.action
are now incom.adyen.checkout.action.core
. If you import the classes, you must update import statements. - All public classes that should not be directly used are now marked as internal.
-
For Components integrations, each payment component no longer handles 3D Secure 2 and WeChat Pay actions. To handle the actions, you must add dependencies for each action:
implementation 'com.adyen.checkout:3ds2:YOUR_VERSION' implementation 'com.adyen.checkout:wechatpay:YOUR_VERSION' Exceptions:
CardComponent
andBcmcComponent
are able to handle the 3D Secure 2 action. They do not require the additional dependencies. - For Drop in, you can no longer get the result using
onActivityResult()
. Drop-in now uses the Activity Result API instead. - For Components, you can no longer use
requiresView()
for action Component providers. - You now must configure
environment
. The default value is no longer TEST. - Build configuration:
compileSdkVersion
andtargetSdkVersion
: 34. - Dependency versions.
requiresConfiguration()
in action Component providers. For all Components, configuration is optional.CardConfiguration.Builder.setAddressVisibility()
. UseCardConfiguration.Builder.setAddressConfiguration()
instead.Environment.LIVE
. Use the same live environment as your backend instead. You can find that value in your Customer Area.saveState()
andrestoreState()
in action components. The component will automatically handle the state now.DropInServiceResult.Action
constructor from JSON string. Use the constructor with theAction
andAction.SERIALIZER
instead.Amount.EMPTY
is removed. Pass amounts with a valid value and currency.- In the
UnencryptedCard
class,setExpiryDate(month, year)
now replacessetExpiryMonth
andsetExpiryYear
.
-
Payment methods:
- ACH Direct Debit. Payment method type: ach.
- Boleto Bancario. Payment method type: boletobancario.
- DuitNow. Payment method type: duitnow.
- Open banking. Payment method type: paybybank.
- Online banking Czech Republic. Payment method type: onlineBanking_CZ.
- Online banking Slovakia. Payment method type: onlineBanking_SK.
- Pay Now. Payment method type: paynow.
- PromptPay. Payment method type: promptpay.
- UPI Collect: The shopper pays by entering their virtual payment address (VPA). Payment method type: upi_collect.
- UPI QR: The shopper pays by scanning a QR code. Payment method type: upi_qr.
-
Analytics are turned on by default. Find out what we track and how you can configure it.
- The method for setting analytics configuration has changed:
v5.0.0 Earlier versions setAnalyticsConfiguration(analyticsConfiguration: AnalyticsConfiguration)
setAnalyticsEnabled(isAnalyticsEnabled: Boolean)
-
Jetpack Compose compatibility.
- For Drop-in, use the
drop-in-compose
module. - For Components, use the
components-compose
module.
- For Drop-in, use the
-
For Components:
- Payment method Components now handle actions. You no longer need a payment Component and action Components for a payment method with additional actions.
- The
GenericActionComponent
that can handle all action types. You no longer need to implement separate Components for redirects and 3D Secure 2 authentication, for example. - A Pay button that you can configure to be hidden.
- The
submit()
method that can be used to add your own pay/submit button. - You can now add
amount
to the configuration to show it on the pay/submit button. - The
onSubmit()
event that gets emitted when the shopper pays.
-
For cards:
- The BIN value callback is invoked while the shopper inputs their card number. The callback uses up to the first 8 digits.
- The BIN lookup callback is invoked when brands are detected on the card.
- The
brand
attribute is now included in thepaymentMethod
object for all cards. Previously, it was just included for co-badged ones.
-
When the shopper is redirected to another app or browser, a new callback is invoked.
-
When the shopper is redirected back from an external app or website, an intermediate view with a loading spinner and a Cancel button now shows. The shopper can select to cancel the redirect back to your app.
-
For Drop-in, you can now navigate the shopper back to the payment methods list, for example to load new payment methods. To do this, use DropInServiceResult.ToPaymentMethodsList.
-
You can now safely exclude any payment method from Drop-in. Do this by excluding the Adyen Checkout module that includes the payment method. For example:
implementation('com.adyen.checkout:drop-in:YOUR_VERSION') { exclude group: 'com.adyen.checkout', module: 'card' exclude group: 'com.adyen.checkout', module: 'ideal' } -
You can now safely exclude unnecessary third-party dependencies. Do this by excluding the Adyen Checkout module that includes the third-party dependency. For example:
implementation('com.adyen.checkout:drop-in:YOUR_VERSION') { exclude group: 'com.adyen.checkout', module: '3ds2' exclude group: 'com.adyen.checkout', module: 'wechatpay' } Make sure that you do not include a payment method that corresponds to the module that you exclude.
-
For Google Pay, new configuration in
GooglePayConfiguration
:
Function | Description |
---|---|
setAllowCreditCards |
Specify if you allow credit cards. |
setAssuranceDetailsRequired |
Specify if you require assurance details. |
- Sessions flow using the single
/sessions
request is now supported. - Localization for the Portuguese (Portugal) language.
- QR code payment methods no longer crash in some cases.
- Rotating a device during the redirect flow no longer causes a crash.
@RestrictTo
annotations no longer cause false lint check warnings.@RestrictTo
annotations no longer cause false errors with Android Studio Hedgehog (Beta).- The Drop-in bottom sheet no longer shifts position on the screen when launching some flows, like redirect and 3D Secure 2.
- The redirect flow on Android 11.
- The email address input field now has more specific validation rules.
- You can now instantiate more than one instance of the same Component within the same lifecycle. Passing the
key
parameter to the Component providerget()
method. For example, you can show cards and stored cards on the same screen. - For Components, you no longer need to handle duplicate events such as submit callbacks or errors with because they are only emitted once. Flows are now used instead of LiveData.
- More UI theme customization options like dark mode.
- The expiry date input field now has more specific validation rules and error messages.