Releases: Adyen/adyen-android
Releases · Adyen/adyen-android
4.12.1
Fixed
- For 3D Secure 2, consecutive payments no longer fail. Previously, if the challenge failed, retrying the payment failed in some cases.
4.12.0
New
- Payment method: Cash App Pay.
Fixed
- For Google Pay, serializing the shipping address parameters no longer causes an error.
- For WeChat Pay on Android 11, an API restriction no longer causes an error.
Removed
- For 3D Secure 2, the
threeDSRequestorAppURL
will not have a default value anymore. You can set it manually using:
Adyen3DS2Configuration.Builder(locale, environment, clientKey)
.setThreeDSRequestorURL("https://{your app.com}/adyen3ds2")
.build()
5.0.0-alpha01
Breaking Changes
- 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. - Restructured packages and moved classes. If you're upgrading, you only need to re-import the them because most classes names haven't changed.
- All public classes that should not be directly used are now marked as internal.
- You now must configure
environment
. The default value is no longer TEST. - Build configuration:
compileSdkVersion
andtargetSdkVersion
: 33. - In the
UnencryptedCard
class,setExpiryDate(month, year)
now replacessetExpiryMonth
andsetExpiryYear
. - Dependency versions:
Name Version Android Gradle plugin 7.4.2 Kotlin Gradle plugin 1.8.21 Appcompat 1.6.1 Kotlin coroutines 1.6.4 AndroidX Fragment 1.5.7 AndroidX Lifecycle 2.5.1 AndroidX Recyclerview 1.3.0 AndroidX Constraintlayout 2.1.4 Material Design 1.8.0
Removed
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.
New
- Sessions flow using the single
/sessions
request is now supported. - 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.
- 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.
- Localisation for the Portuguese (Portugal) language.
- Payment methods:
- ACH Direct Debit. Payment method type: ach.
- 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:
- 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.
- Express payment methods like PayPal and Klarna. These payment methods don't require the shopper to enter their payment details before they pay. Use
InstantPaymentComponent
.
Changed
- For cards:
- The supported brand logo icons now show below the card number input field.
- US Debit brand logo icons no longer show.
- For Drop-in, values set in
DropInConfiguration
now override conflicting configurations for individual payment methods. - For Google Pay, you can now set
GooglePayConfiguration.merchantAccount
to override thegatewayMerchantId
configured in your Customer Area. For Advanced flow, this is thepaymentMethod.configuration.gatewayMerchantId
parameter in the/paymentMethods
response. - For Components, when a payment method doesn't require input from the shopper, the Component that launches automatically returns the
onSubmit()
callback. For example, for the stored cards without a CVC input field. - For gift cards and partial payments, you must now implement
onBalanceCheck()
andonRequestOrder()
to launch payment methods with an order and make partial payments.
Improved
- 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're 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.
- The email address input field now has more specific validation rules.
Fixed
- The redirect flow on Android 11.
4.11.0
New
- For BLIK, one-click is now supported.
- For 3D Secure 2, the
threeDSRequestorAppURL
can now be overridden from the configuration so that you can now use the Android App Link format (HTTP).
Adyen3DS2Configuration.Builder(locale, environment, clientKey)
.setThreeDSRequestorURL("https://{your app.com}/adyen3ds2")
.build()
Fixed
- For BCMC, errors are now correctly highlighted.
4.10.0
New
- The
CardComponentState.binValue
now reports 8 digit bins in case of card numbers with 16 or more digits. - The new
CardBrand
class can be used to define unknown card brands. This can be used along withCardType
. - When adding new card brands through
CardConfiguration
, you can now use the newCardBrand
to add brands that are not already defined inCardType
.
For example:
CardConfiguration.Builder([SHOPPER_LOCALE], [ENVIRONMENT], [CLIENT_KEY])
.setSupportedCardTypes(CardBrand(txVariant = "[CARD_BRAND1]"), CardBrand(txVariant = "[CARD_BRAND2]"))
.build()
Changed
- Upgraded the 3D Secure 2 SDK version to v2.2.11.
- Upgraded
compileSdkVersion
andtargetSdkVersion
to 32. - Upgraded Kotlin version to 1.6.21.
- Upgraded Kotlin coroutines version to 1.6.1.
- Upgraded Fragment version to 1.5.5.
- Upgraded AppCompat version to 1.5.1.
Fixed
- For cards, you can now add unknown card types that aren't defined in
CardType
. Previously,
CardType.UNKNOWN
was not working correctly. - There is no longer a conflict with the 3D Secure 2 SDK that causes a runtime exception. This fixes the known issue in v4.9.0.
Deprecated
- The
CardType.UNKNOWN
property. UseCardBrand(txVariant = "[CARD_BRAND]")
instead. - The
CardType.setTxVariant()
method. No longer needed as it was used withCardType.UNKNOWN
.
4.9.1
Fixed
- For cards, when the shopper enters a card number and a dual branded card is detected, a brand is no longer selected by default.
- Drop-in no longer crashes when navigating back after the shopper removes all stored payment methods.
4.9.0
Added
- For cards, in
AddressConfiguration.PostalCode
mode, you can now specify if the postal code field required. - For BCMC, you can now specify if the card holder name field is required.
- After the card brand is detected and the shopper enters the full card number in the card number input field, focus automatically moves to the next input field.
Changed
- Upgraded the 3D Secure 2 SDK version to v2.2.10. This causes a known issue.
- For a card number to be valid, its minimum required length is now 12 digits. Previously, the minimum was 8 digits.
- For cards, if you currently set the postal code input field in the AddressConfiguration as
.setAddressConfiguration(AddressConfiguration.PostalCode)
, you must update it to.setAddressConfiguration(AddressConfiguration.PostalCode())
.
Fixed
- Configuration changes no longer dismiss Drop-in. Previously, some configuration changes dismissed Drop-in.
- Drop-in can now be initialized with only stored payment methods. Previously, no payment methods were shown if only stored payment methods were available.
Known issue
- If your project uses Google
play-services-location
library version 20.0.0 or earlier, it causes aIncompatibleClassChangeError
on runtime because of an incompatibility with the 3D Secure 2 SDK. You must upgrade yourplay-services-location
library to version 21.0.0 or later to avoid that exception.
4.8.0
Added
- Online Banking Poland Component.
Changed
- Update 3DS2 SDK version to
2.2.8
.
Fixed
- Gracefully terminate drop in without crashing when coming back from a redirect after drop-in was closed.
- Updating 3DS2 SDK version fixed a crash on Android 13.
4.7.1
Fixed
- For BACS Direct Debit, an error message appears under the payment agreement text if the shopper selects the Continue button without selecting the toggles to agree.
4.7.0
Added
- Support for the new Asia Pacific South East (APSE) and India live environments. Use these environments with the corresponding APSE or India location-based live endpoints.
Fixed
- For BACS Direct Debit, the payment agreement text in the payment form now includes the amount. Previously, it always showed the default above amount instead of the amount.