Online-payment icon

Android v5.0.0 beta release

Try your integration with the Android v5.0.0 beta release.

Android v5.0.0 is a beta release. Don't use it to accept payments in your live environment.

Integrate with the new Sessions flow

The Sessions flow uses the /sessions endpoint.

Integrate with Advanced flow

The Advanced flow uses the /paymentMethods, /payments, and /payments/details endpoints.

Release notes

v5.0.0-beta01

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 the ErrorDialog parameter.
    • DropInServiceResult.Finished now has an optional FinishedDialog 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 beta Earlier versions
      setAnalyticsConfiguration(analyticsConfiguration: AnalyticsConfiguration) setAnalyticsEnabled(isAnalyticsEnabled: Boolean)
  • PaymentMethodDetails and its sub-classes now have the checkoutAttemptId field.

  • You can no longer manually instantiate the Environment class and the baseUrl 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:

  • 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

Breaking changes

  • All classes in com.adyen.checkout.action are now in com.adyen.checkout.action.core. If you import the classes, you must update import statements.
  • 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:

    Exceptions: CardComponent and BcmcComponent are able to handle the 3D Secure 2 action. They don't require the additional dependencies.

Changed

Dependency versions:

Name Version
Android Gradle plugin 8.0.2 (requires Java 17)
Kotlin Gradle plugin 1.8.22
AndroidX Fragment 1.6.0
Material Design 1.9.0
Google Pay 19.2.0

New

  • Payment method: Boleto Bancario. Payment method type: boletobancario.

  • Jetpack Compose compatibility.

    • For Drop-in, use the drop-in-compose module.
    • For Components, use the components-compose module.
  • For cards, the brand attribute is now included in the paymentMethod object for all cards. Previously, it was just included for co-badged ones.

  • 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:

    Make sure that you don't 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.

Improved

Email input validation.

Fixed

@RestrictTo annotations no longer cause false lint check warnings.

Breaking Changes

Removed

  • requiresConfiguration() in action Component providers. For all Components, configuration is optional.
  • CardConfiguration.Builder.setAddressVisibility(). Use CardConfiguration.Builder.setAddressConfiguration() instead.
  • Environment.LIVE. Use the same live environment as your backend instead. You can find that value in your Customer Area.
  • saveState() and restoreState() in action components. The component will automatically handle the state now.
  • DropInServiceResult.Action constructor from JSON string. Use the constructor with the Action and Action.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.
  • Localization for the Portuguese (Portugal) language.
  • Payment methods:
  • 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 the gatewayMerchantId configured in your Customer Area. For Advanced flow, this is the paymentMethod.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() and onRequestOrder() 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 provider get() 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.