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.
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: 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.
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.
4.0.0 includes breaking changes in both symbols and behavior. See the migration guide for more details.
New Features
Mail order / telephone order (MOTO) payment support for smart readers.
Global card saving after payment support by updating customer consent capture. The following breaking changes are required:
allowRedisplay
value is now required to be set incollectConfiguration
when usingsetupFutureUsage
forSCPTerminal
'scollectPaymentMethod
.customerConsentCollected
parameter fromSCPTerminal
'scollectSetupIntentPaymentMethod
and replaced it withallowRedisplay
.⚠️ Breaking changes required
Reader discovery
discovering
toSCPConnectionStatus
to represent when discovery is running.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
.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
.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.Update: Auto reconnect on unexpected disconnect is now enabled by default for mobile and Tap to Pay readers.
SCPReconnectionDelegate
has been removed and the methods have been moved to the commonReaderDelegate
.Update: The method for handling reader disconnects has changed.
terminal:didReportUnexpectedReaderDisconnect:
from theSCPTerminalDelegate
. Usereader:didDisconnect:
to be informed of reader disconnects.-readerDidFailReconnect:
andreader:didDisconnect:
methods will be called if the SDK fails to reconnect to the reader and it becomes disconnected.Payment acceptance
SCPCardPresentCaptureMethodManual
toSCPCardPresentCaptureMethod
for simplifying manual card capture without affecting automatic non-card payment capture.SCPTerminal
'sconfirmPaymentIntent:completion
,confirmSetupIntent:completion
, andconfirmRefund:completion
operations now returnSCPCancelable
's that allow you to cancel the operation in certain scenarios.SCPTerminal
'scancelPaymentIntent:completion
orcancelSetupIntent:completion
will now cancel ongoing operations related to the specified intent.SCPOfflineDelegate
now conforms toNSObject
.SCPPaymentIntentParameters
andSCPSetupIntentParameters
now keep payment method types as values of theSCPPaymentMethodType
enum rather than strings.SCPSetupIntent.stripeId
is nownullable
to be consistent withSCPPaymentintent.stripeId
. TheSCPSetupIntent.stripeId
will continue to be present.Renaming
BluetoothReaderDelegate
has been renamed toMobileReaderDelegate
.SCPReaderSoftwareUpdate
, renamedestimatedUpdateTime
todurationEstimate
.SCPUpdateTimeEstimate
toSCPUpdateDurationEstimate
.Non-breaking changes
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.SCPError
. Errors that were previously reported as aSCPErrorGenericReaderError
are now mapped to a more specificSCPError
type.