peachpayments_flutter 1.5.3 copy "peachpayments_flutter: ^1.5.3" to clipboard
peachpayments_flutter: ^1.5.3 copied to clipboard

Peach Payments SDK for Flutter — accept card and alternative payments in your Flutter app with a prebuilt, customisable payment sheet.

1.5.3 #

Added

  • Configuration.displayAddNewPaymentMethod hides the "Add new payment method" link, keeping a returning shopper on their saved payment methods. Defaults to true, so nothing changes unless you set it.

    It cannot leave a shopper unable to pay: when there is nothing saved to stay on, the payment sheet shows the new-payment form regardless of this setting. The payment-methods management sheet honours it unconditionally -- that screen only manages existing methods -- so it becomes view-and-delete.

Dependencies

  • iOS: peachpayments-hyperswitch-ios/sentry 0.7.7 -> 0.7.8.
  • Android SDK: io.peachpayments:hyperswitch-sdk-android 1.5.8 -> 1.5.9.
  • Android Gradle plugin: io.peachpayments:hyperswitch-gradle-plugin 0.2.17 -> 0.2.18, in both the plugin build and the coordinates apply_plugins writes into consumer projects.

1.5.2 #

Fixed

  • Alternative payment methods on the peachpaymentsapm connector showed no input fields. The sheet took its field definitions from a configuration service that has no entry for these methods, so PayShap, Capitec Pay, M-PESA, RCS, 1ForYou and the rest rendered with nothing for the shopper to fill in. The fields declared in your payment methods configuration are now used instead, which is what the web SDK has always done.
  • Fields offering a choice rendered as free text. A connector-defined field that supplied a list of options was shown as a text box, so the shopper had to type a value they were meant to pick. Any field supplying options now renders as a picker.
  • 1ForYou voucher PINs are now formatted in groups of four and validated at 16 digits. The formatting keyed off a field name that does not apply when 1ForYou is served under the voucher payment method.

Dependencies

  • iOS: peachpayments-hyperswitch-ios/sentry 0.7.6 -> 0.7.7.
  • Android SDK: io.peachpayments:hyperswitch-sdk-android 1.5.7 -> 1.5.8.
  • Android Gradle plugin: io.peachpayments:hyperswitch-gradle-plugin 0.2.16 -> 0.2.17, in both the plugin build and the coordinates apply_plugins writes into consumer projects.

1.5.1 #

Fixed

  • The card brand selector offered brands the merchant does not accept. For a co-badged card the selector was built from the card number alone, ignoring the networks enabled on your account, so a shopper could choose a brand that would then be declined. It now offers only the brands you have enabled. A co-badged card whose second brand is not enabled no longer shows a selector at all.

Dependencies

  • iOS: peachpayments-hyperswitch-ios/sentry 0.7.5 -> 0.7.6.
  • Android SDK: io.peachpayments:hyperswitch-sdk-android 1.5.6 -> 1.5.7.
  • Android Gradle plugin: io.peachpayments:hyperswitch-gradle-plugin 0.2.15 -> 0.2.16, in both the plugin build and the coordinates apply_plugins writes into consumer projects.

1.5.0 #

Adds support for the alternative payment methods on the peachpaymentsapm connector, which the web SDK already handled. Previously these rendered as generic fields: any country could be selected, numbers were only loosely validated, and errors did not say what was wrong.

Added

  • Phone numbers are locked to the method's own country. M-PESA accepts Kenyan numbers, Blink by Emtel / MCB Juice / MauCAS Mauritian, and PayShap / Capitec Pay / 1ForYou / A+ South African. The dial code is selected automatically rather than being hunted for in a list of every country.
  • Numbers are validated against the format the method accepts -- 9 digits for Kenya and South Africa, 8 for Mauritius, and the leading 5 that Mauritian mobiles carry for Blink and MCB Juice. Errors name the country and format instead of saying "invalid".
  • Guidance where shoppers reach for the wrong identifier -- explanatory panels for Capitec Pay and MCB Juice, and field descriptions for 1ForYou, PayShap, Capitec Pay and MCB Juice.
  • 1Voucher PINs are shown in groups of four like the printed voucher and validated at 16 digits.

Fixed

  • Field labels now turn red on a validation error, alongside the border and the message.

Dependencies

  • iOS: peachpayments-hyperswitch-ios/sentry 0.7.4 -> 0.7.5.
  • Android SDK: io.peachpayments:hyperswitch-sdk-android 1.5.5 -> 1.5.6.
  • Android Gradle plugin: io.peachpayments:hyperswitch-gradle-plugin 0.2.14 -> 0.2.15, in both the plugin build and the coordinates apply_plugins writes into consumer projects.

1.4.0 #

Fixes for the payment sheet's billing fields and appearance handling, and new appearance options for the saved/new payment method toggles.

Dependencies

  • iOS: peachpayments-hyperswitch-ios/sentry 0.7.3 -> 0.7.4.
  • Android SDK: io.peachpayments:hyperswitch-sdk-android 1.5.4 -> 1.5.5.
  • Android Gradle plugin: io.peachpayments:hyperswitch-gradle-plugin 0.2.13 -> 0.2.14, in both the plugin build and the coordinates apply_plugins writes into consumer projects.

Fixed

  • Billing details were collected on card even when switched off for the merchant. The SDK hardcoded the "collect billing details" flag to required for every payment method, and the connector configuration decides which fields to show from exactly that flag -- so there was no way to turn them off. It now follows the merchant's actual setting. If your profile has billing collection disabled and your connector does not require it, those fields will stop appearing.
  • State/province never prefilled. The country/state dataset was only fetched when a country field was shown. When the country already came from your payment methods configuration the state list was never loaded, so a state the SDK already held could not be displayed and the field rendered empty.
  • Appearance.shapes.borderWidth and borderRadius were ignored by most inputs. Only the country and state pickers applied them; every plain text input -- address line 1, city, postal code, full name, phone, email -- used hardcoded defaults instead.

Added

  • Three Appearance.colors entries for link text, which previously could not be themed at all:

    • link -- link text throughout the sheet, including both payment-method toggles.
    • addPaymentMethodButton -- overrides link for the "add new payment method" toggle.
    • useSavedPaymentMethodButton -- overrides link for the "use saved payment methods" toggle.

    Setting link alone restyles both toggles; the per-button keys are only needed to colour one differently from the other.

1.3.0 #

Fixes for configuration values that were serialised under names the native SDK does not read, a native SDK bump that makes redirect 3DS work for every connector, plus diagnostics for integration problems that previously failed silently.

Dependencies

  • Android SDK: io.peachpayments:hyperswitch-sdk-android 1.5.3 -> 1.5.4.
  • Android Gradle plugin: io.peachpayments:hyperswitch-gradle-plugin 0.2.12 -> 0.2.13, in both the plugin build and the coordinates apply_plugins writes into consumer projects.
  • iOS: peachpayments-hyperswitch-ios/sentry 0.7.2 -> 0.7.3.

Fixed

  • The payment sheet ignored the entire Configuration on iOS. iOS SDK 0.7.x changed the contract of presentPaymentSheetWithParams: it now treats params as the configuration itself and wraps it as props["configuration"]. The plugin was still passing the whole envelope, so the real configuration landed at configuration.configuration and the sheet found none of it — no appearance, no displaySavedPaymentMethods, no header labels — and silently used defaults for every one. Android nests correctly, which is why this presented as an iOS-only loss of theming and options.
  • The whole Appearance.font block was discarded on both platforms. It was serialised as typography: {fontResId, fontSizeSp}, which is the SDK's androidKeys vocabulary. Passing from: "flutter" selects rnKeys, where the block is font: {family, scale} — the spelling every other part of Appearance already used. Both platform plugins' font-registration lookups were updated to match. As a side effect Appearance.fromJson and Font.fromJson, which always read font/family/scale, now round-trip correctly.
  • BillingDetails.phone and ShippingDetails.phone were sent as phone; the native SDK reads phoneNumber, so both were discarded on both platforms.
  • iOS presentPaymentSheet optional-chained on a nil payment session, so calling it before initPaymentSession never invoked the result handler and the Dart Future never completed. It now fails with a message, matching Android.
  • Redirect 3DS never started for connectors returning redirect_inside_popup. A confirm response carries the redirect URL in one of two places depending on next_action.type: redirect_to_url or popup_url. The native SDK read the first unconditionally, so on the popup shape the URL resolved to an empty string and the authentication session was never presented — no browser, no error, no failure callback. Which shape you get is decided by the connector, which is why this looked like a device-versus-simulator problem. Fixed in the native SDKs this version pins. See references/bug-report-3ds-redirect-silent-failure.md.
  • A throw from the native in-app browser was swallowed, leaving the sheet open with no callback ever fired. It is now reported through the error callback.

Added

  • Configuration.defaultView and Configuration.disableBranding, which is where the native SDK reads both from. The PeachPaymentsParams (hyperParams) equivalents are deprecated: both native SDKs replace the whole hyperParams object before it reaches the sheet, so setting them there never had any effect. Both old spellings are forwarded into the configuration for compatibility, so no integrator code needs to change.
  • PaymentMethodParams.ephemeralKey. The native SDK only reads the ephemeral key from the top level of the props map; the nested Configuration.customer object is ignored. Note this reaches the sheet on Android only — iOS SDK 0.7.x builds the top-level props itself, leaving no way for a wrapper to supply ephemeralKey, customParams or sessionId. Tracked in references/bug-report-ios-params-contract.md.
  • Configuration.debugLogging, an opt-in flag that makes both platform plugins log the parameter set they hand to the native sheet — useful when an option "does not work" and you cannot attach a debugger to the device.
  • A warning when customBackendUrl is set without customLogUrl. That combination resolves the SDK's logging endpoint to "none" and silently discards every log event, including the ones that explain a failed payment.

Documentation

  • New README sections on 3-D Secure (the app-based and redirect flows do not fall back to one another), billing-details visibility (decided by connector configuration, not by defaultBillingDetails, which the native SDK parses and never reads), and diagnostics.
  • New upstream bug reports under references/, verified against the Peach hyperswitch-client-core fork rather than juspay upstream.

1.2.1 #

Dependency bump picking up the upstream fix for app ids that are not valid URL schemes. An applicationId / bundle identifier containing a character outside [A-Za-z0-9+.-] (an underscore, typically) used to make the SDK send an unparseable return_url, so the router rejected /payments/confirm on Android and the host app terminated on iOS. See references/bug-report-app-id-url-scheme.md.

  • Android SDK: io.peachpayments:hyperswitch-sdk-android 1.5.1 -> 1.5.3.
  • Android Gradle plugin: io.peachpayments:hyperswitch-gradle-plugin 0.2.10 -> 0.2.12, in both the plugin build and the coordinates apply_plugins writes into consumer projects.
  • iOS: peachpayments-hyperswitch-ios/sentry 0.7.0 -> 0.7.2.

1.2.0 #

  • Added bundled SVG logos for 20 payment methods, exposed through the PeachPaymentMethod enum and the PeachPaymentMethodLogo widget (fromKey maps API keys such as pay_shap). Adds a dependency on flutter_svg.
  • Android SDK: io.peachpayments:hyperswitch-sdk-android 1.5.0 -> 1.5.1.
  • Android Gradle plugin: io.peachpayments:hyperswitch-gradle-plugin 0.2.9 -> 0.2.10, in both the plugin build and the coordinates apply_plugins writes into consumer projects.

1.1.0 #

Dependency bump to the Peach Payments SDK 1.5.0 / iOS 0.7.0 line.

  • Android SDK: io.peachpayments:hyperswitch-sdk-android 1.4.0 -> 1.5.0.
  • Android Gradle plugin: io.peachpayments:hyperswitch-gradle-plugin 0.2.8 -> 0.2.9.
  • iOS: peachpayments-hyperswitch-ios/sentry 0.6.0 -> 0.7.0.
  • iOS plugin migrated to the 0.6.0+ SDK API: sessions are now created through Hyperswitch.initPaymentSession(configuration:) rather than the (now internal) PaymentSession(publishableKey:...) initialiser. The Dart API is unchanged.
  • confirmWithLastUsedPaymentMethod on iOS now confirms via the payment token, because the SDK's confirmWithCustomerLastUsedPaymentMethod requires a CVCWidget that cannot be satisfied headlessly. Cards where requiresCvv is true return an explicit error instead of failing silently; Android is unaffected.

1.0.0 #

First release under the Peach Payments name. Replaces the upstream flutter_hyperswitch package; version history restarts here because Peach Payments never published that package. The inherited upstream changelog is kept for reference in CHANGELOG-upstream-flutter_hyperswitch.md.

Breaking #

  • Package renamed flutter_hyperswitch -> peachpayments_flutter. Update your import to package:peachpayments_flutter/peachpayments_flutter.dart.
  • Public Dart API renamed:
    • FlutterHyperswitch -> PeachPayments
    • HyperConfig -> PeachPaymentsConfig
    • HyperParams -> PeachPaymentsParams
    • HyperswitchException -> PeachPaymentsException
    • FlutterHyperswitchPlatform -> PeachPaymentsPlatform
    • MethodChannelFlutterHyperswitch -> MethodChannelPeachPayments
  • Android namespace io.hyperswitch.flutter_hyperswitch -> io.peachpayments.flutter; plugin class FlutterHyperswitchPlugin -> PeachPaymentsPlugin. Update any ProGuard rules or manual plugin registration.
  • Method channel renamed flutter_hyperswitch -> peachpayments_flutter.
  • Native dependencies now resolve to Peach Payments' own artefacts rather than upstream Juspay's. This requires additional repository configuration -- see the README.
    • Android: io.peachpayments:hyperswitch-sdk-android:1.5.0
    • Android Gradle plugin: io.peachpayments:hyperswitch-gradle-plugin:0.2.9, id io.peachpayments.plugin
    • iOS: peachpayments-hyperswitch-ios/sentry 0.7.0
  • Removed the scripts: post:get: pubspec key. It was never a pub feature, so it never ran. Run dart run peachpayments_flutter:apply_plugins manually instead.

Fixed #

  • apply_plugins now injects the Maven repositories needed to resolve the Peach artefacts; previously it added only mavenCentral(), which cannot resolve them.
  • Dropped the unused import 'dart:ffi' from types.dart, which caused the package to be reported as not supporting web.
  • Removed the deprecated package attribute from AndroidManifest.xml (illegal under AGP 8).
  • Deleted a dead Kotlin unit test that asserted a getPlatformVersion method the plugin no longer has and had no test dependencies declared, so it never compiled.

Added #

  • repository: and issue_tracker: pubspec metadata.
  • A rewritten README covering the Maven registry and CocoaPods spec-repo setup that the Peach artefacts require.
0
likes
140
points
629
downloads

Documentation

API reference

Publisher

verified publisherpeachpayments.com

Weekly Downloads

Peach Payments SDK for Flutter — accept card and alternative payments in your Flutter app with a prebuilt, customisable payment sheet.

Homepage
Repository (GitLab)
View/report issues

License

Apache-2.0 (license)

Dependencies

flutter, flutter_svg, http, plugin_platform_interface

More

Packages that depend on peachpayments_flutter

Packages that implement peachpayments_flutter