Skip to content

Releases: stripe/stripe-terminal-ios

4.1.0

18 Nov 22:50
Compare
Choose a tag to compare

4.0.0

31 Oct 18:56
4.0.0
ea7265e
Compare
Choose a tag to compare

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.

3.9.1

05 Sep 18:11
Compare
Choose a tag to compare
  • Built with Xcode 15.2, Swift version 5.9.
  • Fix #325: Corrects the status of Terminal.shared.paymentStatus and Terminal.shared.connectionStatus after automatically reconnecting to mobile readers during unexpected disconnects.

3.9.0

03 Sep 17:13
Compare
Choose a tag to compare
  • Built with Xcode 15.2, Swift version 5.9.
  • Beta: WeChat Pay support for smart readers is now available in private beta.
  • New: Adds support for Interac refunds on the Tap to Pay simulated reader.
  • Update: For mobile readers with auto reconnection enabled, the SDK now installs required updates upon reconnection after a reboot. Your application will continue to receive notifications about updates via the BluetoothReaderDelegate and should handle updating its UI to inform the user of the update accordingly.
  • Update: Improved handling of SCPErrorReaderMissingEncryptionKeys error for mobile readers with auto-reconnection enabled. Previously, the SDK would disconnect from the reader without auto-reconnecting when this error occurred. Now, if auto-reconnection is enabled, the SDK will automatically reconnect and recover from this error.
  • Fix #595: Addresses the issue where backgrounding the app while the Tap to Pay PIN collection screen is displayed causes the SDK to become unresponsive until the app is relaunched.
  • Fix: Resolves a race condition that occurs when a card is inserted simultaneously as collectPaymentMethod is being canceled. Previously, this resulted in a SCPErrorReaderBusy error. Now, the collection will complete by returning a SCPErrorCanceled error instead.

v2.23.3

14 Aug 20:10
v2.23.3
40b9a03
Compare
Choose a tag to compare

3.8.3

12 Aug 16:38
3.8.3
d3948ea
Compare
Choose a tag to compare
  • Fix the root cause of the deadlocks, further reducing the risk of SDK crashes.

3.8.2

08 Aug 16:56
3.8.2
6adc1e5
Compare
Choose a tag to compare
  • Fix another path that could result in a logger deadlock, further reducing the risk of SDK crashes.

3.8.1

06 Aug 16:36
3.8.1
b67c3f6
Compare
Choose a tag to compare
  • Fix a deadlock in the logger that can cause the SDK to crash.

3.8.0

31 Jul 16:13
3.8.0
0e0a849
Compare
Choose a tag to compare
  • Built with Xcode 15.2, Swift version 5.9.
  • Fix an issue running on iOS 18 where the SDK fails collectPaymentMethod with SCPErrorUnexpectedSdkError when collecting amounts greater than 99999.
  • Fix an issue where the SDK can report a reader as connected if it had disconnected while installing a required update.
  • Fix a rare race condition where confirmPaymentIntent could incorrectly fail with SCPErrorReaderBusy.
  • Fix supportsReadersOfType returning true for SCPDeviceTypeAppleBuiltIn on iOS versions below 16.7 (minimum supported version).

3.7.0

24 Jun 21:47
Compare
Choose a tag to compare

3.7.0 2024-06-24