peachpayments_flutter 1.5.3
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.displayAddNewPaymentMethodhides the "Add new payment method" link, keeping a returning shopper on their saved payment methods. Defaults totrue, 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/sentry0.7.7 -> 0.7.8. - Android SDK:
io.peachpayments:hyperswitch-sdk-android1.5.8 -> 1.5.9. - Android Gradle plugin:
io.peachpayments:hyperswitch-gradle-plugin0.2.17 -> 0.2.18, in both the plugin build and the coordinatesapply_pluginswrites into consumer projects.
1.5.2 #
Fixed
- Alternative payment methods on the
peachpaymentsapmconnector 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/sentry0.7.6 -> 0.7.7. - Android SDK:
io.peachpayments:hyperswitch-sdk-android1.5.7 -> 1.5.8. - Android Gradle plugin:
io.peachpayments:hyperswitch-gradle-plugin0.2.16 -> 0.2.17, in both the plugin build and the coordinatesapply_pluginswrites 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/sentry0.7.5 -> 0.7.6. - Android SDK:
io.peachpayments:hyperswitch-sdk-android1.5.6 -> 1.5.7. - Android Gradle plugin:
io.peachpayments:hyperswitch-gradle-plugin0.2.15 -> 0.2.16, in both the plugin build and the coordinatesapply_pluginswrites 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/sentry0.7.4 -> 0.7.5. - Android SDK:
io.peachpayments:hyperswitch-sdk-android1.5.5 -> 1.5.6. - Android Gradle plugin:
io.peachpayments:hyperswitch-gradle-plugin0.2.14 -> 0.2.15, in both the plugin build and the coordinatesapply_pluginswrites 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/sentry0.7.3 -> 0.7.4. - Android SDK:
io.peachpayments:hyperswitch-sdk-android1.5.4 -> 1.5.5. - Android Gradle plugin:
io.peachpayments:hyperswitch-gradle-plugin0.2.13 -> 0.2.14, in both the plugin build and the coordinatesapply_pluginswrites 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
requiredfor 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.borderWidthandborderRadiuswere 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.colorsentries for link text, which previously could not be themed at all:link-- link text throughout the sheet, including both payment-method toggles.addPaymentMethodButton-- overrideslinkfor the "add new payment method" toggle.useSavedPaymentMethodButton-- overrideslinkfor the "use saved payment methods" toggle.
Setting
linkalone 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-android1.5.3 -> 1.5.4. - Android Gradle plugin:
io.peachpayments:hyperswitch-gradle-plugin0.2.12 -> 0.2.13, in both the plugin build and the coordinatesapply_pluginswrites into consumer projects. - iOS:
peachpayments-hyperswitch-ios/sentry0.7.2 -> 0.7.3.
Fixed
- The payment sheet ignored the entire
Configurationon iOS. iOS SDK 0.7.x changed the contract ofpresentPaymentSheetWithParams: it now treatsparamsas the configuration itself and wraps it asprops["configuration"]. The plugin was still passing the whole envelope, so the real configuration landed atconfiguration.configurationand the sheet found none of it — noappearance, nodisplaySavedPaymentMethods, 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.fontblock was discarded on both platforms. It was serialised astypography: {fontResId, fontSizeSp}, which is the SDK'sandroidKeysvocabulary. Passingfrom: "flutter"selectsrnKeys, where the block isfont: {family, scale}— the spelling every other part ofAppearancealready used. Both platform plugins' font-registration lookups were updated to match. As a side effectAppearance.fromJsonandFont.fromJson, which always readfont/family/scale, now round-trip correctly. BillingDetails.phoneandShippingDetails.phonewere sent asphone; the native SDK readsphoneNumber, so both were discarded on both platforms.- iOS
presentPaymentSheetoptional-chained on a nil payment session, so calling it beforeinitPaymentSessionnever invoked the result handler and the DartFuturenever 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 onnext_action.type:redirect_to_urlorpopup_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. Seereferences/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.defaultViewandConfiguration.disableBranding, which is where the native SDK reads both from. ThePeachPaymentsParams(hyperParams) equivalents are deprecated: both native SDKs replace the wholehyperParamsobject 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 nestedConfiguration.customerobject 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 supplyephemeralKey,customParamsorsessionId. Tracked inreferences/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
customBackendUrlis set withoutcustomLogUrl. 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 Peachhyperswitch-client-corefork 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-android1.5.1 -> 1.5.3. - Android Gradle plugin:
io.peachpayments:hyperswitch-gradle-plugin0.2.10 -> 0.2.12, in both the plugin build and the coordinatesapply_pluginswrites into consumer projects. - iOS:
peachpayments-hyperswitch-ios/sentry0.7.0 -> 0.7.2.
1.2.0 #
- Added bundled SVG logos for 20 payment methods, exposed through the
PeachPaymentMethodenum and thePeachPaymentMethodLogowidget (fromKeymaps API keys such aspay_shap). Adds a dependency onflutter_svg. - Android SDK:
io.peachpayments:hyperswitch-sdk-android1.5.0 -> 1.5.1. - Android Gradle plugin:
io.peachpayments:hyperswitch-gradle-plugin0.2.9 -> 0.2.10, in both the plugin build and the coordinatesapply_pluginswrites 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-android1.4.0 -> 1.5.0. - Android Gradle plugin:
io.peachpayments:hyperswitch-gradle-plugin0.2.8 -> 0.2.9. - iOS:
peachpayments-hyperswitch-ios/sentry0.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 (nowinternal)PaymentSession(publishableKey:...)initialiser. The Dart API is unchanged. confirmWithLastUsedPaymentMethodon iOS now confirms via the payment token, because the SDK'sconfirmWithCustomerLastUsedPaymentMethodrequires aCVCWidgetthat cannot be satisfied headlessly. Cards whererequiresCvvis 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 topackage:peachpayments_flutter/peachpayments_flutter.dart. - Public Dart API renamed:
FlutterHyperswitch->PeachPaymentsHyperConfig->PeachPaymentsConfigHyperParams->PeachPaymentsParamsHyperswitchException->PeachPaymentsExceptionFlutterHyperswitchPlatform->PeachPaymentsPlatformMethodChannelFlutterHyperswitch->MethodChannelPeachPayments
- Android namespace
io.hyperswitch.flutter_hyperswitch->io.peachpayments.flutter; plugin classFlutterHyperswitchPlugin->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, idio.peachpayments.plugin - iOS:
peachpayments-hyperswitch-ios/sentry0.7.0
- Android:
- Removed the
scripts: post:get:pubspec key. It was never a pub feature, so it never ran. Rundart run peachpayments_flutter:apply_pluginsmanually instead.
Fixed #
apply_pluginsnow injects the Maven repositories needed to resolve the Peach artefacts; previously it added onlymavenCentral(), which cannot resolve them.- Dropped the unused
import 'dart:ffi'fromtypes.dart, which caused the package to be reported as not supporting web. - Removed the deprecated
packageattribute fromAndroidManifest.xml(illegal under AGP 8). - Deleted a dead Kotlin unit test that asserted a
getPlatformVersionmethod the plugin no longer has and had no test dependencies declared, so it never compiled.
Added #
repository:andissue_tracker:pubspec metadata.- A rewritten README covering the Maven registry and CocoaPods spec-repo setup that the Peach artefacts require.