Releases: Adyen/adyen-android
5.3.0
New
- A new way to create a configuration using DSL to be more declarative and concise:
CheckoutConfiguration(
environment = environment,
clientKey = clientKey,
shopperLocale = shopperLocale,
amount = amount,
) {
dropIn {
setEnableRemovingStoredPaymentMethods(true)
}
card {
setHolderNameRequired(true)
setShopperReference("...")
}
adyen3DS2 {
setThreeDSRequestorAppURL("...")
}
}
Warning
If you use the new configuration DSL, pass the CheckoutConfiguration
object as it is when starting Drop-in or Components.
Do not use the functions to get configurations (such as CheckoutConfiguration.getDropInConfiguration()
or CheckoutConfiguration.getCardConfiguration()
). These functions will be removed in the following release.
- For the Card Component, you can use the new Address Lookup functionality.
- For voucher actions: when the
url
ordownloadUrl
is not included, the shopper has the option to select Save as image and save the voucher to the device'sDownloads
folder. - You can now set your own
AdyenLogger
instance withAdyenLogger.setLogger
. This gives the ability to intercept logs and handle them in your own way. - Instructions to use the testing app in the repository. You can follow
How to migrate
section here. - Payment methods:
- Multibanco. Payment method type: multibanco.
- Pay Easy. Payment method type: econtext_atm.
- Convenience Stores Japan. Payment method type: econtext_stores
- Online Banking Japan. Payment method type: econtext_online.
- Seven-Eleven: Payment method type: econtext_seven_eleven
Fixed
- When building
minifyEnabled
without thekotlin-parcelize
plugin in your project, the build should no longer crash. - When handling actions, you no longer get the
IllegalArgumentException: Unsupported delegate type
error that causes a crash.
Deprecated
- When creating a configuration, the
Builder
constructors with aContext
is deprecated. You can now omit thecontext
parameter. PermissionException
. Handle permissions throughActionComponentCallback
,SessionComponentCallback
, orComponentCallback
callbacks instead.- The styles for vouchers have been changed:
-
Previous (v5.2.0 or earlier) Now (v5.3.0) AdyenCheckout.Voucher.Description.Bacs
AdyenCheckout.Voucher.Simple.Description
AdyenCheckout.Voucher.Description.Boleto
AdyenCheckout.Voucher.Full.Description
AdyenCheckout.Voucher.ExpirationDateLabel
AdyenCheckout.Voucher.InformationFieldLabel
AdyenCheckout.Voucher.ExpirationDate
AdyenCheckout.Voucher.InformationFieldValue
AdyenCheckout.Voucher.ButtonCopyCode
AdyenCheckout.Voucher.Button.CopyCode
AdyenCheckout.Voucher.ButtonDownloadPdf
AdyenCheckout.Voucher.Button.DownloadPdf
-
- Logger.LogLevel has been deprecated.
-
Previous (v5.2.0 or earlier) Now (v5.3.0) Logger.LogLevel
AdyenLogLevel
AdyenLogger.setLogLevel(logLevel: Int)
AdyenLogger.setLogLevel(level: AdyenLogLevel)
-
Changed
- When creating a configuration, the
shopperLocale
parameter is now optional.- Sessions flow: when you don't set it, the shopper locale is set to the value included in the
/sessions
request. - Advanced flow: when you don't set it, the shopper local is set to the primary user locale on the device.
- Sessions flow: when you don't set it, the shopper locale is set to the value included in the
- For Drop-in, all actions now start in expanded mode.
- For the Google Pay Component, you no longer need to manually import the
3ds2
module to handle transactions that require Native 3D Secure 2 challenge. - If you use
DropInServiceResult.Error
without specifying an error message, the default has changed fromError sending payment. Please try again.
toAn unknown error occurred
. - For the Sessions flow:
- When starting Drop-in (with
DropIn.startPayment
) or creating a Component (withYourComponent.PROVIDER.get
), theconfiguration
parameter is now optional. - When using
CheckoutSessionProvider.createSession
to create aCheckoutSession
, you can pass onlyenvironment
andclientKey
instead of the whole configuration. - Removing stored payment methods is now handled internally. You no longer need to override the
onRemoveStoredPaymentMethod
function.
- When starting Drop-in (with
- Dependency versions:
Name Version Kotlin 1.9.22 AndroidX Compose compiler 1.5.8 AndroidX Compose Activity 1.8.2 Material Design 1.11.0
5.2.0
New
- We added a UI customization guide, which explains how to customize the styles and string resources.
Improved
- The integration now uses JSON Web Encryption (JWE) with RSA OAEP 256 and AES GCM 256 for encryption. You do not need to make any changes to your integration.
Fixed
- For Drop-in, error dialogs no longer display user unfriendly messages when using the Sessions flow.
- Overriding some of the XML styles without specifying a parent style no longer causes a build error.
- The Await and QR Code action components no longer get stuck in a loading state after the payment is completed.
Changed
- Dependency versions:
Name Version Kotlin 1.9.21 Android Gradle plugin 8.2.0 AndroidX Compose compiler 1.5.7 AndroidX Compose Activity 1.8.1 AndroidX Browser 1.7.0
5.1.0
New
- The BcmcComponent now supports co-badged Bancontact cards and card brand detection.
- The BcmcComponentState now contains 3 extra fields:
cardBrand
,binValue
andlastFourDigits
.
- The BcmcComponentState now contains 3 extra fields:
- You can now override payment method names in Drop-in by using DropInConfiguration.Builder.overridePaymentMethodName(type, name).
- For stored cards, Drop-in now shows the card name (for example Visa or Mastercard) instead of Credit Card.
- Now it is possible to show installment amounts for card payments using InstallmentConfiguration.showInstallmentAmount in CardConfiguration.Builder.setInstallmentConfigurations().
- For gift cards, you can now hide the PIN text field by setting GiftCardConfiguration.Builder.setPinRequired() to false.
- For Google Pay:
- When initializing the Google Pay button, you can now use GooglePayComponent.getGooglePayButtonParameters() to get the
allowedPaymentMethods
attribute. - You can now use AllowedAuthMethods and AllowedCardNetworks to easily access to the possible values for GooglePayConfiguration.Builder.setAllowedAuthMethods() and GooglePayConfiguration.Builder.setAllowedCardNetworks().
- When initializing the Google Pay button, you can now use GooglePayComponent.getGooglePayButtonParameters() to get the
Fixed
- Fixed a bug where components would not be displayed in Jetpack Compose lazy lists.
Changed
- Dependency versions:
Name Version AndroidX Compose Activity 1.8.0 Material Design 1.10.0 Gradle 8.4 Android Gradle plugin 8.1.2 AndroidX Compose BoM 2023.10.01 AndroidX Recyclerview 1.3.2 AndroidX Fragment 1.6.2
4.13.4
Note
If you are using WeChat Pay please update to this version or migrate to 5.x.x to make sure WeChat Pay will work for all Android versions.
Fixed
- WeChatPay now works correctly on Android 11 and later. This fixes a known issue from previous 4.x.x versions.
Changed
- Dependency versions:
Name Version WeChat Pay 6.8.0
5.0.1
Fixed
@RestrictTo
annotations no longer cause false errors with Android Studio and Lint.- Using the layout inspector or having view attribute inspection enabled in the developer options no longer causes a crash when viewing a payment method.
- Implementing the
:action
module no longer gives a duplicate class error caused by a duplicate namespace. - For Drop-in, dismissing the gift card payment method no longer prevents further interaction.
Changed
- Dependency versions:
Name Version AndroidX Compose BoM 2023.09.01
5.0.0
For guidance on integrating with this version, have a look at the integration guide.
If your integration uses Android v4.13.3 and earlier, and you're upgrading it to use v5.0.0, you can follow the migration guide.
These are the changes between the beta and stable release. For the full release notes that include all the changes from v4.13.3, see the release notes in our Docs.
Breaking changes
Amount.EMPTY
is removed. Make sure you pass amounts with a valid value and currency.
Fixed
@RestrictTo
annotations no longer cause false errors with Android Studio Hedgehog (Beta).- The Drop-in bottom sheet will no longer shift position on the screen when launching some flows like redirect and 3D Secure 2.
Changed
- Dependency versions:
Name Version Google Pay 19.2.1 AndroidX Compose BoM 2023.09.00
4.13.3
Fixed
- Fixed Cash App payments being refused because of missing
customerId
during/payments/details
call.
4.13.2
Changed
- Updated device information collection during the 3D Secure 2 device fingerprinting process.
5.0.0-beta01
For guidance on integrating with this version, have a look at the integration guide.
Breaking changes
-
For Drop-in, you can now configure if you show a dialog to dismiss Drop-in with either a finished state or error state.
DropInServiceResult.Error
now requires theErrorDialog
parameter.DropInServiceResult.Finished
now has an optionalFinishedDialog
parameter.
-
Analytics feature 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-beta01 Earlier versions setAnalyticsConfiguration(analyticsConfiguration: AnalyticsConfiguration)
setAnalyticsEnabled(isAnalyticsEnabled: Boolean)
-
PaymentMethodDetails
and its subclasses now have thecheckoutAttemptId
field. -
You can no longer manually instantiate the
Environment
class and thebaseUrl
field has been removed.
New
- 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:5.0.0-beta01') { exclude group: 'com.adyen.checkout', module: 'card' exclude group: 'com.adyen.checkout', module: 'ideal' }
- 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.
- When the shopper is redirected to another app or browser, a new callback is invoked.
- 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.
Fixed
- QR code payment methods no longer crash in some cases.
- Rotating a device during the redirect flow no longer causes a crash.
Changed
- The
compileSdkVersion
andtargetSdkVersion
are now set to 34 (Android 14). - Dependency versions:
Name Version Adyen 3DS2 2.2.15 Android Gradle plugin 8.1.1 AndroidX Browser 1.6.0 AndroidX Compose BoM 2023.08.00 AndroidX Compose compiler 1.5.3 AndroidX Fragment 1.6.1 AndroidX Recyclerview 1.3.1 Cash App Pay 2.3.0 Kotlin Gradle plugin 1.9.10 WeChat Pay 6.8.0
4.13.1
Fixed
- For cards that require the shopper to input their address:
- When internet connection is lost while loading, it no longer crashes. Instead an error is returned.
- The Country dropdown menu to select no longer displays no options. Previously, an error sometimes caused the menu to have no options, so the transaction couldn't be submitted.