xmoney 1.0.0
xmoney: ^1.0.0 copied to clipboard
Flutter SDK for xMoney checkout — Payment Sheet, Payment Element, Apple Pay, and Google Pay.
Changelog #
All notable changes to the xmoney package are documented here.
The format follows Keep a Changelog, and versioning follows Semantic Versioning.
1.0.0 - 2026-10-22 #
First stable release.
Changed #
- Pins native SDKs to CocoaPods
XMoneyPaymentSheet1.1.0 and Mavencom.xmoney:*1.1.0 (viaxmoney_androidandxmoney_ios1.0.0). Readyfires once per mounted surface, after the form or wallet button has drawn. It is not emitted when the first load fails. The Apple Pay button waits for its mount order to bind as well.- Set the widget's
intentto the orderupdateOrderWithreturns. A configuration change rebindswidget.intenton both platforms, so an order left only on the controller is replaced by the previous one. Changing wallet appearance or whether the button is enabled does not. - Changing the widget's
intentduring a charge does not throw. That order is bound when the charge ends.
Added #
PaymentElementController.updateOrderWithlocks Pay before your callback creates the next order, matching nativeupdateOrder(createOrder:).PaymentElementController.isUpdateCurrent, so a debounced callback can stop before calling your server once a newer update has replaced it.WalletPayButtonController.updateOrderWithandisUpdateCurrentlock a standalone Apple Pay or Google Pay button while your server creates the next order.PaymentElementUpdateFailedEventwhen binding a new order fails after one was already bound. Pay stays locked until a laterupdateOrdersucceeds.XMoneyPaymentErrorcodePAYMENT_IN_PROGRESSwhenupdateOrderasks for a different order during a charge.
Breaking changes #
- Exhaustive switches on
PaymentElementEventmust handlePaymentElementUpdateFailedEvent. Switches onPaymentSheetEventandWalletPayEventmust handle the new update-failed event fromxmoney_platform_interface1.0.0. - On iOS, a failed Apple Pay button
updateOrdermatches Google Pay: before any update has bound it sends a failedonResult; after one has, it sendsonUpdateFailedand noonResult.PAYMENT_IN_PROGRESSsends neither. The button no longer emitsprocessingduringupdateOrder. updateOrderWiththrowsPAYMENT_IN_PROGRESSduring a charge, rather thanSUPERSEDED_UPDATE_ORDER.
Fixed #
- If
updateOrderWiththrows before the first ready event, the surface binds the order the widget was mounted with and then sends ready. - A widget-relayed intent rejected as
PAYMENT_IN_PROGRESSis bound when the charge ends. isUpdateCurrentis per-controller, so a nestedupdateOrderWithon another controller does not steal the sequence.- Passing an order the controller already sent no longer binds it again.
- A superseded
updateOrderWithno longer reports an unhandled error while your callback is still running. - The Apple Pay button binds its mount order, so a failed cart update locks the button instead of charging the previous order.
- A new intent on a wallet button with no controller now reaches the native button.
- Android: appearance-only Google Pay updates apply without recreating the native button (via
xmoney_android1.0.0). - iOS: a rejected
updateOrderWithbefore Ready rebinds the mount order. Appearance-only Apple Pay updates no longer tear down the button (viaxmoney_ios1.0.0).
Migration #
- End merchant loading on a failed
onResultas well asReady. A failed first load no longer emitsReady.