esaalat 0.4.0
esaalat: ^0.4.0 copied to clipboard
Hosted checkout for Flutter — a ready-made pay button, a full-screen WebView, and verified payment results.
Changelog #
0.4.0 - 2026-10-29 #
- Added
variant:CheckoutButtonVariant.dark(default),.lightand.gold, matching the web button. The vector lockup and a custom label are recolored for each surface. - The merchant's Website, WhatsApp and Email links now open outside the checkout, in the OS browser, WhatsApp or mail app, instead of replacing the checkout page inside the WebView. A navigation to another web origin is intercepted the same way.
- The
ESAALAT-SDK-VERSIONheader now reports0.4.0.
0.3.0 #
- The default button lockup is now one self-contained animated SVG: outlined
lead and wordmark, no PNG assets or host fonts, with the logo starting
centred and sliding aside as the lead appears. The platform reduced-motion
setting shows the final frame without animating.
flutter_svgis now a dependency. radiusproperty (default4) configures the button's corners.showTestingWallet(button property andopen()parameter): also offer the account's dedicated testing wallet in the hosted portal. It obeys the same enabled-and-monitored rules as every other wallet and is off by default.- Fixed polling: the public session endpoint deliberately omits
session_tokenandportal_url, but the SDK's read validation required them. Every poll was therefore treated as an unknown session and a live checkout could settle as failed on the first tick (~4s). Reads now validate the fields the endpoint actually returns; create still requires the token and portal URL. - Refreshed the pub README and package metadata; installation and API examples now match the current package.
- Added PNG golden-image tests for the Arabic and English lockup artwork.
- The
ESAALAT-SDK-VERSIONheader now reports0.3.0.
0.2.0 #
EsaalatCheckoutButton: the drop-in branded button. Pass the publishable key (or a server-created session token), the amount and the outcome callbacks — it creates the session, pushes the checkout route and routes the result to exactly one ofonVerified,onCancelled,onWrongAmount,onExpiredoronFailed. No client or lifecycle code in the app.- A client may now be created without a publishable key when every checkout
opens a server-created
sessionToken; the key is still required to create a session, andopen()reports it with the same message as the web SDK. - The portal now posts its terminal result to the
EsaalatNativeBridgeJS channel, so a checkout settles as soon as the payment does instead of on the next poll. Polling stays as the fallback.
0.1.0 #
- Initial release.
EsaalatCheckout.open()creates a hosted checkout session with the publishable key, shows the portal in a full-screen WebView, and completes with the sameCheckoutResultthe TypeScript SDK resolves.- Server-created sessions via
sessionToken/portalUrl. - Result polling of
GET /checkout/public/sessions/{token}using the portal's own mapping (VERIFIED,WRONG_AMOUNT,EXPIRED,CANCELLED,FAILED). - Arabic and English locales, idempotent session creation, itemized orders, and
the demo-only
simulateResultoption.