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 incollectConfiguration
when usingsetupFutureUsage
forSCPTerminal
'scollectPaymentMethod
. - Removed the
customerConsentCollected
parameter fromSCPTerminal
'scollectSetupIntentPaymentMethod
and replaced it withallowRedisplay
.
- A valid
⚠️ Breaking changes required
Reader discovery
- New: Added a new enum value
discovering
toSCPConnectionStatus
to represent when discovery is running. - Update: Subsequent calls to
SCPTerminal
'sdiscoverReaders:delegate:completion:
cancel all previously queued discovery operations. Only one discovery operation can run at any given time; all other discovery attempts will fail withSCPErrorCanceledDueToIntegrationError
. - 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
, andconnectLocalMobileReader
.- For mobile readers and Tap to Pay readers, the
ReaderDelegate
has been removed from theconnectReader
method as a parameter, and moved into theconnectionConfig
, replacingautoReconnectionDelegate
. - For smart readers, theInternetConnectionConfiguration
now also expects anInternetReaderDelegate
to be passed in, which will alert your integration of reader disconnects.
- For mobile readers and Tap to Pay readers, the
-
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 commonReaderDelegate
.
- The
-
Update: The method for handling reader disconnects has changed.
- Removed
terminal:didReportUnexpectedReaderDisconnect:
from theSCPTerminalDelegate
. Usereader:didDisconnect:
to be informed of reader disconnects. - When auto-reconnect on unexpected disconnect is enabled, both
-readerDidFailReconnect:
andreader:didDisconnect:
methods will be called if the SDK fails to reconnect to the reader and it becomes disconnected.
- Removed
Payment acceptance
- New: Added a new enum value
SCPCardPresentCaptureMethodManual
toSCPCardPresentCaptureMethod
for simplifying manual card capture without affecting automatic non-card payment capture.- If you are interested in joining this private preview, please email stripe-terminal-betas@stripe.com.
- Update:
SCPTerminal
'sconfirmPaymentIntent:completion
,confirmSetupIntent:completion
, andconfirmRefund:completion
operations now returnSCPCancelable
's that allow you to cancel the operation in certain scenarios. - Update: Calls to
SCPTerminal
'scancelPaymentIntent:completion
orcancelSetupIntent:completion
will now cancel ongoing operations related to the specified intent. - Update:
SCPOfflineDelegate
now conforms toNSObject
. - Update:
SCPPaymentIntentParameters
andSCPSetupIntentParameters
now keep payment method types as values of theSCPPaymentMethodType
enum rather than strings. - Update:
SCPSetupIntent.stripeId
is nownullable
to be consistent withSCPPaymentintent.stripeId
. TheSCPSetupIntent.stripeId
will continue to be present.
Renaming
- Update:
BluetoothReaderDelegate
has been renamed toMobileReaderDelegate
. - Update: In
SCPReaderSoftwareUpdate
, renamedestimatedUpdateTime
todurationEstimate
. - Update: Renamed
SCPUpdateTimeEstimate
toSCPUpdateDurationEstimate
. - 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 optionaltimeout
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 aSCPErrorGenericReaderError
are now mapped to a more specificSCPError
type.