Android SDK
✨ Improvements
- Primer SDK now depends on
Kotlin 2.0.21
Primer SDK now depends on io.primer:3ds-android:1.6.2
If you are using the 3DS dependency in your code, you are required to update it and align with the supported version. Otherwise, 3DS will result in failure.
Changelog:
- Due to several security vulnerabilities, Bouncy Castle (artefact : org.bouncycastle:bcprov-jdk15to18) was updated to version 1.79
- This update improves performance on devices with larger memory capacities by fulfilling Google’s requirement for 16 KB memory page sizes, ensuring full compatibility with future Play Store regulations.
✨ Improvements
- Better edge-to-edge support in Drop-In integration.
- Improvements to DI resolutions.
✨ Improvements
- We have bumped
compile
andtarget
versions to35
- Analytics: We have reduced number of analytics events captured and sent to our server.
✨ Improvements
- We have added
CardFormUIOptions.payButtonAddNewCard
to support the “Add New Card” option in the card form flow. Please check our docs for more information - Introduced support for the ‘Continue payment flow’ workflow action to configure checkout outcome. See our documentation for more info.
🔧 Fixes
- Fixed a crash caused by misuse of CheckoutExitHandler.
🔧 Fixes
- In certain scenarios, the SDK may crash if a deep link to a specific screen is triggered after a payment flow was already finalized.
✨ Improvements
- PayPal: Improved support for picture-in-picture mode. Fixed an issue where some successful authentication flows were incorrectly marked as errors by the SDK.
- 3DS: Enhanced locale normalization. Resolved an issue where certain locales were being rejected by the 3DS SDK, causing the flow to fail.
- Cleanup Enhancements: Added a new
cleanClientSessionCache
parameter to thecleanup
function. You can now control whether to clear the Client Session cache in both Drop-In and Headless integrations.
✨ Improvements
- Klarna: Updated Klarna SDK to
1.1.0
- Klarna: Improved styling support for Klarna components
⚠️ Primer SDK now supports BOM (Bill of Materials) via io.primer:bom
If you’re using Klarna in your own code, you can switch to the BOM to automatically stay aligned with the supported version:
implementation(platform("io.primer:bom:<version>")) implementation("io.primer:klarna-android")
This removes the need to manage Klarna versions manually.
If you choose not to use the BOM, make sure you manually update to io.primer:klarna-android:1.1.0
🚀 New feature
- The SDK will now default to using API version 2.4 when initialised. It is possible to use API version 2.3 via
PrimerSettings.apiVersion
. For more information see our SDK reference, Api Reference and Migration Guides.
🔧 Fixes
- In certain scenarios, the SDK may crash if a deep link to a specific screen is triggered while the app has been forcefully killed by the user.
🔧 Fixes
- We have fixed a bug in the Drop-In Checkout which resulted in “Additional fees may apply” text being shown for the Card payment method, when no surcharge was present.
✨ Improvements
- 3DS Locale Propagation: Resolved an issue where the 3DS SDK occasionally rejected propagated locale settings.
- iDEAL via Adyen: iDEAL is now fully supported as a redirect-based payment method.
🔧 Fixes
- 3DS Flow Stability: Fixed crashes that occurred when the 3DS flow failed while the app was running in the background.
✨ Improvements
- We’ve increased the timeout for payment creation and handling for better stability.
🔧 Fixes
- We’ve fixed issues with displaying the partial billing address form in Drop-in. Now, the data is collected and updated correctly. Previously, the SDK returned an error when updating the client session.
🔧 Fixes
- Drop-in: fixed an issue causing crashes when calling
Primer.dismiss()
after the checkout sheet is already dismissed.
✨ Improvements
- With this version it is possible to opt-in to use API v2.4, which is no longer in Beta. For more information see our SDK reference, Api Reference and Migration Guides. The SDK will continue to use API v2.3 by default.
- Expanded Language Support: The Android SDK now supports additional languages, including:
- Arabic
- Bulgarian
- Czech
- Spanish (Argentina & Mexico)
- Estonian
- Croatian
- Hungarian
- Japanese
- Latvian
- Portuguese (Brazil)
- Romanian
- Vietnamese
- 3DS Sandbox Testing: Enhanced support for testing 3D Secure (3DS) flows in the sandbox environment.
- Improved Analytics & Reporting: Enhanced tracking and insights for better performance monitoring.
🧪 Experimental
- With this version it is possible to opt-in to test API v2.4(Beta). For more information see our API Reference and Migration Guides. By default, SDK will remain backward compatible and use API
v2.3
.
✨ Improvements
- API Timeout values have been updated to improve behaviour in the loading phases of the checkout.
🔧 Fixes
- Analytics: fixed serialization and deserialization of analytics events.
🚀 New feature
- Co-badged cards in Drop-in: Primer SDK will automatically detect co-badged cards in the Drop-In integration. This release also brings improvements to card card network detection in general. Visit our documentation about co-badged cards in order to learn more.
✨ Improvements
- Enhanced Card Expiry Date Validation: We’ve improved the accuracy of expiry date validation for both headless and drop-in integrations.
- Improved Stability: Resolved crashes caused by
ConcurrentModificationException
during SDK initialization.
🚀 New feature
-
Native Payment Method Button Support: Some payment methods require and offer their native views. To support this, we’ve updated our Asset Manager and introduced the
getPaymentMethodResource
method to access these native resources seamlessly. If you are using Headless integration, make sure to check our updated documentation about rendering of payment method buttons.Usage of Native Payment Method Button is a requirement for all new Android Google Pay API integrations that use a Google Pay payment button.
-
ACH Vaulting via Stripe: The ACH payment method through Stripe now supports a vaulting flow, enabling you to save customer details on agreement for future transactions.
-
Google Pay Enhancements: You can now collect additional user data through Google Pay, including the user’s email and shipping address. Check out our guide for details on enabling this feature.
✨ Improvements
- PayPal Integration: We’ve improved the PayPal user experience by adopting the recommended approach of using Chrome Tabs, eliminating the need for browser redirections and reducing friction during payment.
- SDK Resilience: We’ve enhanced SDK resilience to better handle scenarios where Activities are destroyed due to process death, ensuring a smoother recovery experience.
🔧 Fixes
- 3DS Locale Handling: We’ve fixed an issue where locale extensions were stripped, causing failed 3DS transactions. This update ensures compliance with 3DS guidelines and smoother transaction processing.
Deprecations
- In order to support
Native Payment Method Button
requirements, we have deprecated following methods:
🔧 Fixes
- We’ve fixed the issue that caused crashes when retrying a 3DS challenge while another challenge was still in progress.
🔧 Fixes
- We’ve resolved the issue causing crashes when users were deeplinked multiple times from PayPal.
🔧 Fixes
- We’ve fixed the crashes that occurred when using Blik through Adyen’s Drop-In in standalone mode.
- We’ve resolved occasional crashes related to the “fragment not attached” issue in Drop-In.
✨ Improvements
- Prevent dismissal of Drop-in card form while a payment is active.
- Vipps via Adyen will now fall back to the Web flow in the event that the Vipps mobile app was not installed.
- Added
DividerThemeData
that can be used for styling of dividers in Drop-In. Check out our documentation here. - You can now use custom colour for input cursors by specifying
cursorColor
inInputThemeData
⚠️ Primer SDK now depends on io.primer:3ds-android:1.5.0
If you are using the 3DS dependency in your code, you are required to update it and align with the supported version. Otherwise, 3DS will result in failure.
✨ Improvements
- Stripe ACH mandate template can now be configured either with a resource key or passing the full mandate text directly.
- Better Spanish language support for Stripe ACH.
✨ Improvements
Stripe ACH is now available ✨
- We have added support for ACH via Stripe. ACH lets you accept payments from customers with a US bank account.
- ACH Direct Debit is a reusable, delayed notification payment method. It can take up to 4 business days to receive acknowledgement of success or failure.
- This release includes: One-off payments, cancel, and refund actions. We aim to add support for recurring payments in the future.
- You can easily integrate ACH via Stripe into your payment stack with just a few clicks through Primer. Visit the integrations section of the dashboard to learn more or consult the direct integration guide.
🚀 New feature
Android SDK now support additional languages:
- Finnish
- Korean
- Lithuanian
- Catalan
- Serbian
- Ukrainian
- Hebrew
- Indonesian
✨ Improvements
- Client Session caching: It is now possible to cache the ClientSession configuration client-side, which can speed up certain flows in the SDK. This can be enabled via the clientSessionCachingEnabled flag. Before enabling the flag to true it’s recommended to reach out to Primer support for additional verification since there are edge cases where it is not advised.
- Improved initialization: We have strengthened the Android SDK’s initialization process, ensuring it remains reliable even if users experience connectivity drops. These changes guarantee a smoother experience.
- We have removed Card Components and related UI from the SDK. Card components were previously deprecated.
- Improved payment method handling when payments are completed outside of the scope of the SDK session.
🔧 Fixes
We have resolved the issue with the 3DS service initialization that was incorrectly triggering errors during the initialization process. Please note, that with this update, compatibility requires the use of the 1.4.3
version of the 3DS SDK (io.primer:3ds-android:1.4.3
).
✨ Improvements
We have aligned the card expiry date validation logic between the Drop-In and Headless integrations, which were previously different. Additionally, we fixed a bug that caused the current month and year to be considered invalid expiry dates.
🔧 Fixes
- We have improved the PayPal payment method token by providing additional data, including the payer’s first name and last name. For more information, see our SDK reference docs.
🔧 Fixes
- Improved internal dependency resolution for NolPay components when PrimerHeadlessUniversalCheckout is reinitialized.
🚀 New feature
- Google Pay: By default, Google Pay is presented to the user regardless of whether they have a supported card in their wallet. You can now automatically hide Google Pay if the user’s wallet does not contain a supported card by setting
existingPaymentMethodRequired
to true. Check our guide on how to enable this feature. - PayPal: We have improved the PayPal payment method token by providing additional data, including the payer’s first name, last name, and external payer ID.
CVV recapture for saved cards
Within the Drop-In integration, you now have the ability to recapture CVV for saved cards. When the feature is enabled, users will be directed to a new screen where they can input the CVV related to the saved card. To activate this feature, please refer to our guide for detailed instructions on enabling this enhancement. You can find the guide here.
✨ Improvements
Please note, with this update, compatibility requires the use of the 1.4.2
version of the 3DS SDK (io.primer:3ds-android:1.4.2
).
✨ Improvements
- We’ve enhanced our internal analytics infrastructure for tracking network events, empowering us to efficiently gather valuable data on latency and API errors.
🔧 Fixes
- Previously, when the app utilizing our SDK was built in release mode with minification applied, initialization of the SDK would fail. We’ve since addressed this issue by updating our consumer-rules.pro files. You should not manually include any Proguard rules, as consumer-rules.pro are seamlessly integrated with your existing Proguard rules.
- With the release of version 2.26.0, we’ve improved our Klarna integration. As a result, we identified an issue where error handling was not functioning correctly when utilizing standalone mode for Drop-In integration (
Primer.instance.showPaymentMethod(..)
). This concern has been promptly addressed and resolved. - We’ve enhanced the handling of payment completion for our Nol pay integration, addressing a regression that had occurred.
✨ Improvements
- We have added the ability to select Klarna payment category in Klarna Drop-in
- Support has been added for
CHECKOUT
payment intents for Klarna Drop-in - We have included support for Klarna Extra Merchant Data
- In this release we have added the
PrimerHeadlessUniversalCheckoutKlarnaManager
that provides access to theKlarnaComponent
. Using theKlarnaComponent
you can seamlessly integrate Klarna, with a custom payment category selection UI. Consult the guide to get a sense of how to seamlessly integrate Klarna.
⚠️ Primer SDK now depends on io.primer:klarna-android:1.0.2
If you are using the Klarna dependency in your code, you are required to update it in align with the supported version. Otherwise, Klarna will result in failure.
✨ Improvements
- We have released support for co-badged cards. You can allow users to select a network if their card is co-badged.
- We have also improved card network validation significantly for all card networks.
- In our most recent 3DS SDK update, we’ve addressed a bug affecting 3DS support. Previously, there was an issue where the Issuer or Payment System image wouldn’t consistently display on the Challenge UI. Please note, with this update, compatibility requires the use of the
1.4.1
version of the 3DS SDK (io.primer:3ds-android:1.4.1
).
🔧 Fixes
- We have fixed a bug where the SDK would crash in case of recovering from a process death.
✨ Improvements
- In this latest release, our 3DS support has undergone some slight enhancements. Please note, with this update, compatibility requires the use of the 1.4.0 version of the 3DS SDK (
io.primer:3ds-android:1.4.0
). We recommend upgrading to this version as it brings new LOA Reference Number for all protocol versions. - Internally, between the different platforms, we have aligned how the currencies are formatted. Currency metadata is now being served from our server, allowing us to adapt to potential changes without the SDK update being needed.
🔧 Fixes
- Previously, Google Pay was hidden in case the amount was set to 0. From now on, Google Pay will be always shown in case it was enabled in Primer Dashboard and the device supports payments with Google Pay.
✨ Improvements
We’ve enhanced our logging capabilities to provide more comprehensive insights. Specifically, when the PrimerLogLevel is set to DEBUG
and you are utilizing our default logger implementation, the complete request and response bodies are now logged to the console.
if you opt for a custom PrimerLogger implementation, as a security measure, any Personally Identifiable Information (PII) and Payment Card Industry (PCI) data will be automatically obfuscated.
🔧 Fixes
Fixed bug where order.fees.type was not being correctly deserialized by the SDK.
💳 APMs support
iDEAL via Adyen
Adds the PrimerHeadlessUniversalCheckoutComponentWithRedirectManager
that provides access to BanksComponent
. Using the BanksComponent
you can easily:
- load list of all supported banks
- submit user’s selection
Consult the guide to get a sense of how to seamlessly integrate iDEAL via Adyen.
✨ Improvements
- In this latest release, our 3DS support has undergone significant enhancements, offering a multitude of improvements. Please note, with this update, compatibility requires the use of the 1.3.0 version of the 3DS SDK (
io.primer:3ds-android:1.3.0
)
💳 APMs support
In this release we have removed Apaya integration.
✨ Improvements
- We have enhanced our internal analytics capabilities, enabling us to collect a broader range of data, and we have streamlined the process for sending events, ensuring greater efficiency and effectiveness.
- Keyboard cache is now disabled for sensitive inputs. We highly encourage you to update your SDK to reduce the risk that sensitive user data are leaked to other applications.
Deprecations
PrimerHeadlessUniversalCheckoutCardComponentsManager has been deprecated and will no longer receive ongoing maintenance and will be removed in the future.
💳 APMs support
nol Pay
nol Pay payment method is now considered stable. Please check our integration guide in order to seamlessly integrate nol Pay.
✨ Improvements
We have introduced PrimerLogger
that allows you to listen to SDK logs on a specified log level, or provide your own PrimerLogger
implementation in order to listen and process Primer SDK logs.
Check out our detailed SDK reference here.
✨ Improvements
- Phone number validation is significantly improved.
- We no longer require separate fields for
phoneCountryDiallingCode
to be passed. Now you can pass full phone number and SDK will parse and validate phone number. - We have also fixed the crash that was reported when there were no workflows configured for payment methods.
Consult the guide to get a sense of how to seamlessly integrate nol Pay.
💳 APMs support
nol Pay
Adds the PrimerHeadlessUniversalCheckoutNolPayManager
that provides following features:
- Listing Nol cars: Listing previously linked Nol payment cards using NolPayLinkedCardsComponent.
- NFC Scanning: Allows your application to scan NFC Nol payment cards using NolPayNfcComponent.
- Linking: Link the Nol card to a phone number using NolPayLinkCardComponent.
- Unlinking: Unlink previously linked Nol card using NolPayUnlinkCardComponent.
- Transactions: Execute payments using selected Nol payment cards NolPayPaymentComponent.
Consult the guide to get a sense of how to seamlessly integrate nol Pay.
✨ Improvements
- In previous versions we have used Koin for Dependency Injection inside of our SDK. Starting from this release, Koin was removed as transitive dependency.
✨ Improvements
- 3DS will be conditionally triggered in case
Google Pay
method returnsPAN_ONLY
token in Headless integration
✨ Improvements
In this version of the SDK we have introduced a new version of 3DS library. Primer SDK will depend on io.primer:3ds-android:1.2.0
from now on.
⚠️ If you are using 3DS dependency in your code, you are required to update it in order to align with the supported version. Otherwise, 3DS will result in failure.
✨ Improvements
- Removed requirements for
amount
in client session when vaulting Paypal
⚠️ This version introduces breaking changes for Headless Checkout. A migration guide for this can be found here.
Headless Vault Manager
Add PrimerHeadlessUniversalCheckoutVaultManager.newInstance()
which returns an instance of PrimerHeadlessUniversalCheckoutVaultManager
. It provides the following features:
- fetch a list of vaulted payment methods
- delete a vaulted payment method
- validate the additional data used to perform a payment (e.g. validate CVV)
- perform a payment using a vaulted payment method
3DS Service
Our 3DS service has been completely revamped. Primer SDK now supports 3DS protocol version 2.2.0
- Support 3DS weak validation
- Support 3DS OOB flow
- Improve 3DS reporting
Check out our detailed documentation here
💳 APMs support
Cards via iPay88
In this version of the SDK we added the support for Cards via iPay88.
- Cards via iPay88 Payment Method now is fully supported via Headless Universal Checkout and Drop-In.
- You can now make one-off payments or vault a card with iPay88 in order to make recurring payments.
- Please update the iPay88 SDK version to
1.0.1
✨ Improvements
- Improvements to deeplink handling for Paypal and Redirect based payment methods
- Reintroduce showing a payment method directly with the Drop In UI integration
- Koin dependency has been bumped to version
3.3.3
- Better interoperability with
Java
when using Primer SDK - Internal SDK improvements
PrimerPaymentMethodAsset
now exposes the payment method’s friendly name
🔧 Fixes
- Fixed bug where calling
submit
method ofPrimerHeadlessUniversalCheckoutCardComponentsManager
would return error due to wrong formatting of expiry date. - Apply fix on PayPal vaulting
- Resolved bug where Drop In UI could be launched multiple times at same time
- Resolved internal analytics crashes.
🤹 Breaking changes
PrimerCardComponentsManagerListener
has been renamed toPrimerHeadlessUniversalCheckoutCardComponentsManagerListener
.- The package name for the
PrimerHeadlessUniversalCheckoutNativeUiManager
has been changed toio.primer.android.components.manager.nativeUi
.
- Improvements to deeplink handling for Paypal and Redirect based payment methods
Headless Vault Manager
Add PrimerHeadlessUniversalCheckoutVaultManager.newInstance()
which returns an instance of PrimerHeadlessUniversalCheckoutVaultManager
. It provides the following features:
- fetch a list of vaulted payment methods
- delete a vaulted payment method
- validate the additional data used to perform a payment (e.g. validate CVV)
- perform a payment using a vaulted payment method
⚠️ This version introduces breaking changes for Headless Checkout
🔧 Fixes
- Fixed bug where calling
submit
method ofPrimerHeadlessUniversalCheckoutCardComponentsManager
would return error due to wrong formatting of expiry date.
🤹 Breaking changes
PrimerCardComponentsManagerListener
has been renamed to PrimerHeadlessUniversalCheckoutCardComponentsManagerListener
.
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
- Our 3DS service has been completely revamped. Primer SDK now supports 3DS protocol version
2.2.0
- Support 3DS weak validation
- Support 3DS OOB flow
- Improve 3DS reporting
Check out our detailed documentation here
🔧 Fixes
- Resolved internal analytics crashes.
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
- Koin dependency has been bumped to version
3.3.3
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
- Better interoperability with
Java
when using Primer SDK - Internal SDK improvements
🤹 Breaking changes
The package name for the PrimerHeadlessUniversalCheckoutNativeUiManager
has been changed to io.primer.android.components.manager.nativeUi
.
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
PrimerPaymentMethodAsset
now exposes the payment method’s friendly name
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
💳 APMs support
Cards via iPay88
In this version of the SDK we added the support for Cards via iPay88.
Cards via iPay88 Payment Method now is fully supported via Headless Universal Checkout and Drop-In.
You can now make one-off payments or vault a card with iPay88 in order to make recurring payments.
🚀 Improvements
In addition to RC2 release, we have improved couple of things based on your feedback.
We have also added all of the new things we worked on in releases 2.16.5 and 2.16.6.
🚀 Improvements
- Improved internal analytics for 3DS events
- Improved internal analytics for headless integration
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
It’s been more than 6 months that Headless Checkout has been released in Beta!
We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.
This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.
Our documentation has been updated to reflect these changes. You can also find a Migration Guide detailing the changes.
This release candidate will soon be merged into the main releases.
In addition to RC1 release, we have improved couple of things based on your feedback.
We have also added all of the new things we worked on in releases 2.16.3 and 2.16.4.
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
It’s been more than 6 months that Headless Checkout has been released in Beta!
We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.
This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.
Our documentation has been updated to reflect these changes. You can also find a Migration Guide detailing the changes.
This release candidate will soon be merged into the main releases.
🔧 Fixes
-
In this version of the SDK we have introduced a new version of Klarna library. Primer SDK will depend on
io.primer:klarna-android:1.0.1
from now on.⚠️ If you are using Klarna dependency in your code, you are required to update it in order to align with the supported version. Otherwise, Klarna will result in failure.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
💳 APMs support
Cards via iPay88
In this version of the SDK we added the support for Cards via iPay88.
Cards via iPay88 Payment Method now is fully supported via Headless Universal Checkout (Beta) and Drop-In.
🚀 New feature
-
In this version of the SDK we have introduced a new version of 3DS library. Primer SDK will depend on
io.primer:3ds-android:1.1.2
from now on.⚠️ If you are using 3DS dependency in your code, you are required to update it in order to align with the supported version. Otherwise, 3DS will result in failure.
-
We have added a way to capture billing address using Google Pay. You will need to pass
captureBillingAddress = true
toPrimerGooglePayOptions
🔧 Fixes
- This version fixed an issue when a developer wanted to disable the showing of some screens. Previously that was broken due to Android OS automatically showing the bottom sheet dialog when we get back on the main screen, even if we hide it before.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
In this version of the SDK we have introduced a new version of 3DS library. Primer SDK will depend on io.primer:3ds-android:1.1.1
from now on.
⚠️
If you are using 3DS dependency in your code, you are required to update it in order to align with the supported version. Otherwise, 3DS will result in failure.
🔧 Fixes
- We have fixed certain redirection issues for payment methods using Buckaroo as PSP
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
In this version of the SDK we have removed options to pass 3DS vaulting flag is3DSOnVaultingEnabled
Above flow is now obsoleted and 3DS will always follow workflows.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
💳 APMs support
Retail Outlets via Xendit
In this version of the SDK we added the support for Retail Outlets via Xendit.
Retail Outlets via Xendit Payment Method now is fully supported via Headless Universal Checkout (Beta) via the Raw Data Manager.
Check this out in our documentation 🙌
🔧 Fixes
- Fix initialization for Universal Checkout.
This fix solves the issue affecting version 2.13.0
. We recommend updating to this 2.13.1
version.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
💳 APMs support
Bancontact via Adyen support
In this version of the SDK we added the support for Bancontact Debit via Adyen for.
Bancontact Debit via Adyen Payment Method now is fully supported via Headless Universal Checkout (Beta) and the standard SDK implementation.
In this release, developers have the ability of initializing the raw data for a Bancontact Card 💳 and perform the Tokenization flow via their own fully customized UI yet utilizing all of the features that make Primer great.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
💳 APMs support
In this version of the SDK we added the support for PromptPay via Omise 🙌.
In Headless Universal Checkout (Beta), developers will access to a new event which will provide an object PrimerCheckoutQRCodeInfo
containing the data needed to build their awesome UI / UX on top.
For PromptPay specifically, the object will be PromptPayCheckoutAdditionalInfo
fun onAdditionalInfoReceived(info: PrimerCheckoutAdditionalInfo) = Unit
🚀 Improvements
We have fixed a crash on billing address country selector screen.
🚀 Improvements
We have fixed a bug where cardholder name field was loosing focus when billing address checkout module was enabled.
🚀 Improvements
We have removed some transitive dependencies from our code. This will result in smaller size of you application when Primer SDK is imported.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
This release changes the way that Klarna is integrated, and switches on Klarna’s native Android SDK.
💳 APMs support
Drop-in
- Added support for Multibanco via Adyen.
Headless
- Added support for Multibanco via Adyen.
- Added support for MbWay via Adyen.
🚀 Improvements
We have removed some transitive dependencies from our code. This will result in smaller size of you application when Primer SDK is imported.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
This release changes the way that Klarna is integrated, and switches on Klarna’s native Android SDK.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
Last release was all about bringing the possibility to Headless Checkout of utilizing the raw data a card 💳 contains so that developers could utilize their own fully customized UI and still use all of the features that make Primer great.
We kept expanding the Headless Checkout feature, now providing to our developers the raw phone number data they can utilize to create payments.
The payment method supporting that is only OVO via Xendit for now.
Try it out and let us know what do you think 🙌!
We didn’t stop here though, alongside the phone number capture, we have enriched our suite of available payment methods adding MB Way, working with Portuguese phone numbers 🇵🇹 and needing the MB Way App to complete the payment.
Here is a preview 👇
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
This release enhance the capabilities of our SDK in its Headless Checkout feature, bringing the possibility of utilizing your fully customized UI and still use all of the features that make Primer great. We now give to our developers all the raw data a card contains.
Try it out and let us know what do you think 🙌!
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
This release brings a totally new way of retrieving the APMs.
We have now the possibility of providing some APMs without even push a new release 🙌.
That’s a huge milestone for us and the developments of our product.
As everything game-changing, it comes with a cost. To be able to support this release, we have made some changes that requires some work in case you are already utilizing the SDK.
🚨 **Migration info🚨
Payment methods' types in version prior to this one (<2.4.0) were represented by a
enum PrimerPaymentMethodType` .
In this version, we are no longer exposing the enum
, and return a plain String
instead.
✨ Improvements
The version 2 of the Headless Universal Checkout is out!
💡 Take a look at the migration guide for updating your integration to version 2.
✨ Payments created automatically
Primer Headless Universal Checkout | SDK
Starting from this version, automatic payment creation is included in the Headless Universal Checkout
. You should now only care about creating best possible and seamless experience for your users, we will take care of the rest. Please take a look at our simple explanation about the changes we made.
💳 Dummy Payment Methods
Universal Checkout | Payment Methods
We want you to start creating payments with Universal Checkout as quickly as possible, so we’ve added some dummy payment methods - no credentials required 😎
The following payment methods have been added:
- PayPal via Primer
- Sofort via Primer
- Klarna via Primer
These payment methods are purely for demonstrative purposes and aren’t tied to any payment method specific environment.
You can now create payments in different states (authorized, declined, failed) and see them in the dashboard’s Payments page.
No need to create sandbox accounts with different processors/payment methods, the dashboard and all its great features can now be used without any setup.
💡 Primer’s Dummy Payment Methods will come preconfigured with all new sandbox accounts.
✨ Improvements
The version 2 of the SDK is out! This includes a simplified way to integrate Primer
📚 Take a look at the migration guide for updating your integration to version 2.
✨ Payments created automatically
Universal Checkout | SDK
Creating payments with Universal Checkout is now seamless. There’s no more need for callbacks, API calls and headaches to create a payment. It’s all done under the hood 🧙
In the past, creating payments involved manual payment handling:
On the client side, you would have had to implement the dreaded CheckoutEvent.TokenizationSuccess
and CheckoutEvent.ResumeSuccess
callbacks:
On the server side, you had to manually call our Payments API in order to create a payment 🤷
Rejoice! As from version 2.0.0
no manual payment handling is required! Payment creation is now, as mentioned above, seamless.
Feel free to rip out the above mentioned callbacks when migrating to version 2.0.0
and enjoy the feeling of utter relaxation as all your payment handling is now done by Universal Checkout 💆
For the nerds ❤️
For the nerds ❤️
Payment lifecycle callbacks
If you would still like to have some insights into how Universal Checkout is handling payment creation, we’ve introduced some new optional callbacks which will notify you during certain events in the payment lifecycle.
💡 For more information on these callbacks, take a look at the Payment Lifecycle Callbacks section in our new and improved API reference
Manual payment handling
For the brave and bold among us who would still like to manually handle payments in the checkout and perform the necessary API calls for payment creation - take a look at our manual payment creation guide 📚
🔨 Deprecation
The Android SDK’s move to version 2 has brought a lot of exciting changes and along with these changes, some deprecations.
📚 Please take a look at our Android SDK version 2 migration guide for a full list of the deprecations made.
New payment methods
- Added support for Coinbase
- Added support for OpenNode
- Added support for 2c2p
- We have added support for 3DS processor
- Added support for the RN bridge
Improvements the Headless Universal Checkout - Beta for cards and APMs (except for Blik, Adyen Dot Pay and Adyen iDeal)
New payment methods
- Added support for P24 via Mollie
- Added support for Giropay via Mollie
- Added support for EPS via Mollie
- Added support for P24 via PayNL
- Added support for EPS via PayNL
✨ Improvements
- Implements the Headless Universal Checkout - Beta for cards and APMs (except for Blik, Adyen Dot Pay and Adyen iDeal)
✨ Improvements
- Implements the Headless Universal Checkout - Beta for cards and APMs (except for Blik, Adyen Dot Pay and Adyen iDeal
✨ Improvements
- Improvements to tokenization flow
- Improvements to surcharge UI
- Support for capturing postal code in card form and observing using client session actions
- Support for hiding cardholder name in card form
Removed deprecated fetchSavedPaymentInstruments
and getSavedPaymentMethods
methods
- Added support for easier integration with Java
- Better support for Android S
- Minor UI improvements
- Surcharge feature now stable
✨ Improvements
- New payment methods: iDEAL, Giropay, Sofort, EPS and Bancontact via Buckaroo
✨ Improvements
-
Added further support for SDK customisation when generating client session.
-
New payment methods: Bancontact & iDEAL via Mollie and Giropay & Payconiq via PayNL
-
Added loading payment methods screens
✨ Improvements
- Added
Primer.cleanup
method.*This method should be called when disposing the listener in order to free Primer SDK resource.*
- Added Adyen payment methods (Vipps, Mobilepay, iDEAL, Dotpay)
- Additional improvements for PayPal error handling
✨ Improvements
- Improved 3DS handling (VAULT/CHECKOUT)
- Deprecated
PrimerSettings.order
andPrimerSettings.customer
in favour of configuration set through client session creation - Added Adyen AMPs (Giropay, Twint, Trustly, Sofort, Alipay)
✨ Improvements
fetchSavedPaymentInstruments
method has beendeprecated
- Improved card form layout and default theming.
- Enabled 3DS testing in all environments.
✨ Improvements
- Complete redesign of
PrimerTheme
.PrimerTheme.create()
is now deprecated. UsePrimerTheme.build()
or resource files to create custom themes. Primer
singleton object has been redesigned with a new initialisation flow. Please refer to the quick start guide for further info.Primer.initialize()
is now deprecated.
✨ Improvements
- Added support to pre-fill
Apaya
phone number. Please see documentation for integration steps.
✨ Improvements
- Added support for
Apaya
payment method. Please see documentation for integration steps.
✨ Improvements
- Added beta support for 3DS dependency.
- Stability improvements & networking fixes.
✨ Improvements
- Fixes issue with card number validation for American Express.
✨ Improvements
- Issue when pressing Android back button after displaying payment flow with
doNotShowUi = true
addressed. - Improvements to Klarna payment flow error handling & stability.
- Optional
completionHandler
added toTokenizationSuccess
event. Call this to complete flow with error/success screen after completing payment action.
✨ Improvements
- The Klarna flow has been updated so that all user cancellations are captured by the event listener. Refer to
CheckoutEvent.Exit
& itsCheckoutExitReason
parameter to listen to the following events:DISMISSED_BY_USER
orERROR
(error thrown by Klarna). - You can now pass a flag to clear all listeners when dismissing the Primer view with
UniversalCheckout.dismiss(clearListeners = true)
. This is the recommended way to complete the session before navigating to a different activity/fragment.
✨ Improvements
- Bug fixes for PayPal flows.
- Option to pass in flag
clearAllListeners
when callingshowVault()
/showCheckout()
. Set this flag astrue
, if you need to callUniversalCheckout.initialise()
more than once. - Fixes bug where main universal checkout would display checkout options incorrectly.
✨ Improvements
✨ Improvements
- Running the SDK in release mode with app shrinking
minifyEnabled = true
caused the app to crash. This has been addressed so that the SDK will run with all forms of app shrinking. - The Klarna web view flow for Sweden is now configured to automatically redirect to the Mobile BankID app when using direct debit.
- When creating in the
Klarna
object it is now possible to set awebViewTitle
for the Klarna web view’s toolbar. - Improvements to error handling & SDK stability.
✨ Improvements
- Improvements to app links and schemes with new
webBrowserRedirectScheme
param to pass in custom app link scheme when calling the SDK withshowVault()
/showCheckout()
. - New option of
preferWebview
for showing Klarna checkout flow in an integrated web view instead of a separate browser window. - new option to call
UniversalCheckout.showError()
when wishing to display the default SDK error view. - The
locale
is now optionally set inUniversalCheckout.initialize()
and is used solely to determine language and localisation. - A
countryCode
parameter has been added toshowVault()
/showCheckout()
. This is used to determine location for different payment sessions (e.g. Klarna). If a country code has already been passed in when creating a Primer client token on the backend this SDK’scountryCode
value is ignored. - Minor bug fixes & improvements to stability and UX.
✨ Improvements
- Major improvements to UI for checkout view and managing saved payments.
- 1-click checkout enabled in default (universal) checkout view.
- Improved success screens with some customisability.
- Delete/select saved payment methods enhanced.
- Overall improvements to stability and UX.
- No updates to Klarna & direct debit flows.
n/a (testing Maven Central)
- You can easily integrate ACH via Stripe into your payment stack with just a few clicks through Primer. Visit the integrations section of the dashboard to learn more or consult the direct integration guide.