Drop-in Changelog
Adds Adyen Apple Pay and dynamic theme loading from a CDN. Apple Pay and PayPal initialization failures now surface instead of leaving a dead button.
borderRadius.Refreshing a session — an amount update, for example — no longer resets the card form. Input is preserved unless the payment method configuration itself changes.
apiPaths passed to a bundle that enforces its own API URLs now log a console warning instead of being silently ignored.partnerError.Applies to both Wallet and BNPL. The button no longer stays active after a failed attempt.
An incomplete server-side configuration surfaces a visible error. A client that does not support Apple Pay disables the method instead of killing the checkout.
onAmountUpdate is debounced trailing-only, so /init fires once the amount settles. Previously, repeated adjustments — gift card entry, for example — could reach SESSION_MAX_STEPS_REACHED.
The build target is pinned explicitly again. A dependency bump had picked up a narrower default that stopped downleveling ES2022 syntax.
Locale, theme, and hidePayButton can now be updated on a live instance via setConfig(). The token registration checkbox honours save_token_mode. Validation error keys are renamed.
*CannotBeEmptyError are deprecated in favour of *RequiredError.low impactMigration guide
panCannotBeEmptyError becomes panRequiredError, cvvCannotBeEmptyError becomes cvvRequiredError, and so on. The old keys still resolve but will be removed in a future major.
// Before
const options = { hostedForm: { panCannotBeEmptyError: 'Card number is required.' } };
// After
const options = { hostedForm: { panRequiredError: 'Card number is required.' } };
setConfig() updates locale, theme, and hidePayButton on a live instance without remounting.dropinInstance.setConfig({
locale: 'fr-FR',
theme: { fontFamily: 'Montserrat', primaryColor: '#ff0000' },
});
Google Pay buttons strip the region tag from the locale (fr-FR becomes fr) so they render in the right language.
save_token_mode configured per payment method.ALWAYS: hidden, tokenization forced by the backendPREFER: visible, pre-checkedPREFER_NO(default): visible, uncheckedNEVER: hidden, tokenization disabled
plugin_result.logs is absent.Errors returned by the Purse API during initialization — NOT_AUTHORIZED, for example — previously stalled the checkout with no feedback for Wallet and BNPL.
save_token: false overrides any conflicting save_token_mode.This release introduces Stripe Apple Pay as a new payment method, expanding payment options for your buyers. We've also enhanced the Drop-in UI with new theming capabilities for dark backgrounds and addressed several critical integration issues, including preventing unintended form submissions and improving the reliability of hosted fields and session refreshing.
You can now set title.color independently from primary text color for better contrast. Additionally, you can configure button styles for Apple Pay and Google Pay (xpay.apple.buttonstyle, xpay.google.buttonColor) to match dark themes.
// Example for Drop-in configuration
Purse.createDropinCheckout('elementId', {
theme: {
title: {
color: '#FFFFFF' // New option
},
xpay: {
apple: {
buttonStyle: 'white' // New option ('white', 'white-outline', 'black', 'black-outline')
},
google: {
buttonColor: 'black' // New option ('black', 'white')
}
}
}
});
The onRefreshSession callback now correctly handles new session data, ensuring the payment flow can resume smoothly after a session expires.
onRefreshSession hook. Called when the drop-in detects an expired or terminated session, giving you a chance to reinitialize with a fresh one.PurseDropin.init({
session: mySession,
hooks: {
onRefreshSession: async () => {
return await fetchNewSession();
},
},
});
disableMaxWidth option to PayPal button configuration.hideHolderName option to HostedFieldsOptions. When true, hides the cardholder name field if the payment method does not require it; the field remains enforced when holder name is mandatory.additionalAssets with card scheme badge URLs and labels, enabling multi-brand icon display for co-branded cards.paymentProduct320SpecificData is absent, resolving silent tokenization failures.payzen-xpay no longer triggers validation when the payment sheet failed to open.001) are no longer sent during validation.getHostedFields() forms are now included in checkout validation; they were previously skipped silently.Could not find frame errors on rapid re-initialization.This release significantly enhances the stability and reliability of the Purse drop-in SDK, ensuring a smoother payment experience for your buyers. We've resolved several critical issues, including payment flow errors during redirection and crashes with Apple Pay. Additionally, payment information such as currency display for gift cards and validation for cardholder names is now more accurate.
widget_data, ensuring seamless wallet payment experiences.This release introduces several new payment options, including Apple Pay and Google Pay for Sogecommerce, PayPal's Buy Now, Pay Later, and Younited Installments. We've also enhanced existing payment flows with better error handling for Lyra and ANCV Connect, refined UI behavior for Oney private cards and single-method layouts, and improved overall stability.
OFF_SESSION registrations are now correctly displayed and enabled for information requests with zero amount.onBeforeValidate hook, resolving issues with Payzen split payments.