github stripe/stripe-terminal-ios 4.0.0

6 hours ago

4.0.0 includes breaking changes in both symbols and behavior. See the migration guide for more details.

  • Built with Xcode 16.0, Swift version 6.0.
  • Update: Minimum deployment target updated from iOS 13.0 to iOS 14.0.

New Features

  • Mail order / telephone order (MOTO) payment support for smart readers.

    • Contact Stripe support to enable this feature on your account.
  • Global card saving after payment support by updating customer consent capture. The following breaking changes are required:

    • A valid allowRedisplay value is now required to be set in collectConfiguration when using setupFutureUsage for SCPTerminal's collectPaymentMethod.
    • Removed the customerConsentCollected parameter from SCPTerminal's collectSetupIntentPaymentMethod and replaced it with allowRedisplay.

⚠️ Breaking changes required

Reader discovery

  • New: Added a new enum value discovering to SCPConnectionStatus to represent when discovery is running.
  • Update: Subsequent calls to SCPTerminal's discoverReaders:delegate:completion: cancel all previously queued discovery operations. Only one discovery operation can run at any given time; all other discovery attempts will fail with SCPErrorCanceledDueToIntegrationError.
  • Update: Internet and Tap to Pay discovery will now call the discoverReaders completion block when the operation completes since these are not long running discovery operations.

Reader connection

  • Update: There is now a single connectReader call used for all connection methods. This replaces the previous methods: connectBluetoothReader, connectInternetReader, and connectLocalMobileReader.

    • For mobile readers and Tap to Pay readers, the ReaderDelegate has been removed from the connectReader method as a parameter, and moved into the connectionConfig, replacing autoReconnectionDelegate. - For smart readers, the InternetConnectionConfiguration now also expects an InternetReaderDelegate to be passed in, which will alert your integration of reader disconnects.
  • Update: Auto reconnect on unexpected disconnect is now enabled by default for mobile and Tap to Pay readers.

    • The SCPReconnectionDelegate has been removed and the methods have been moved to the common ReaderDelegate.
  • Update: The method for handling reader disconnects has changed.

    • Removed terminal:didReportUnexpectedReaderDisconnect: from the SCPTerminalDelegate. Use reader:didDisconnect: to be informed of reader disconnects.
    • When auto-reconnect on unexpected disconnect is enabled, both -readerDidFailReconnect: and reader:didDisconnect: methods will be called if the SDK fails to reconnect to the reader and it becomes disconnected.

Payment acceptance

  • New: Added a new enum value SCPCardPresentCaptureMethodManual to SCPCardPresentCaptureMethod for simplifying manual card capture without affecting automatic non-card payment capture.
  • Update: SCPTerminal's confirmPaymentIntent:completion, confirmSetupIntent:completion, and confirmRefund:completion operations now return SCPCancelable's that allow you to cancel the operation in certain scenarios.
  • Update: Calls to SCPTerminal's cancelPaymentIntent:completion or cancelSetupIntent:completion will now cancel ongoing operations related to the specified intent.
  • Update: SCPOfflineDelegate now conforms to NSObject.
  • Update: SCPPaymentIntentParameters and SCPSetupIntentParameters now keep payment method types as values of the SCPPaymentMethodType enum rather than strings.
  • Update: SCPSetupIntent.stripeId is now nullable to be consistent with SCPPaymentintent.stripeId. The SCPSetupIntent.stripeId will continue to be present.

Renaming

  • Update: BluetoothReaderDelegate has been renamed to MobileReaderDelegate.
  • Update: In SCPReaderSoftwareUpdate, renamed estimatedUpdateTime to durationEstimate.
  • Update: Renamed SCPUpdateTimeEstimate to SCPUpdateDurationEstimate.
  • Update: Renamed "local mobile" and "apple built in" to "Tap To Pay" in all SDK types, function names, and error codes to align with Stripe branding for this functionality.

Non-breaking changes

  • Update: The SCPInternetDiscoveryConfiguration now supports an optional timeout value, specifying the timeout in seconds for the discover readers request. If the online discovery attempt fails, the operation will automatically fall back to offline discovery if offline mode is enabled.
  • Update: Improved accuracy of smart reader errors that are reported as SCPError. Errors that were previously reported as a SCPErrorGenericReaderError are now mapped to a more specific SCPError type.

Don't miss a new stripe-terminal-ios release

NewReleases is sending notifications on new releases.