Releases: stripe/stripe-terminal-ios
Releases · stripe/stripe-terminal-ios
4.1.0
- Built with Xcode 16.0 Swift version 6.0.
- Update: Added field
dynamicCurrencyConversion
toSCPCardPresentDetails
.- If you are interested in joining this preview, please email stripe-terminal-betas@stripe.com.
- New: Affirm support for smart readers is now available in private preview.
- If you are interested in joining this preview, please email stripe-terminal-betas@stripe.com.
- New: Added an
returnUrl
parameter toSCPConfirmConfiguration
to specify desired return_url to redirect to upon completion of a Redirect Payment Method.
4.0.0
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.
3.9.1
- Built with Xcode 15.2, Swift version 5.9.
- Fix #325: Corrects the status of
Terminal.shared.paymentStatus
andTerminal.shared.connectionStatus
after automatically reconnecting to mobile readers during unexpected disconnects.
3.9.0
- Built with Xcode 15.2, Swift version 5.9.
- Beta: WeChat Pay support for smart readers is now available in private beta.
- If you are interested in joining this beta, please email stripe-terminal-betas@stripe.com.
- 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 theBluetoothReaderDelegate
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 aSCPErrorReaderBusy
error. Now, the collection will complete by returning aSCPErrorCanceled
error instead.
v2.23.3
- Built with Xcode 15.2, Swift version 5.9.
- Minimum deployment target changed from iOS 11.0 to iOS 12.0 as required by Xcode 15.
- Fix an issue running on iOS 18 where the SDK fails
collectPaymentMethod
withSCPErrorUnexpectedSdkError
when collecting amounts greater than 99999. - Fix an issue where the
SCPCardPresentDetails
object would be null for aSCPPaymentIntent
.
3.8.3
- Fix the root cause of the deadlocks, further reducing the risk of SDK crashes.
3.8.2
- Fix another path that could result in a logger deadlock, further reducing the risk of SDK crashes.
3.8.1
- Fix a deadlock in the logger that can cause the SDK to crash.
3.8.0
- Built with Xcode 15.2, Swift version 5.9.
- Fix an issue running on iOS 18 where the SDK fails
collectPaymentMethod
withSCPErrorUnexpectedSdkError
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 withSCPErrorReaderBusy
. - Fix
supportsReadersOfType
returningtrue
forSCPDeviceTypeAppleBuiltIn
on iOS versions below 16.7 (minimum supported version).
3.7.0
3.7.0 2024-06-24
- Built with Xcode 15.2, Swift version 5.9.
- Beta: Surcharging is now available in private beta.
- added a
surchargeNotice
parameter toSCPCollectConfiguration
to display a surcharge notice on the payment collection screen. - added a
SCPSurcharge
field to theSCPCardPresentParameters
object. - added a
SCPConfirmConfiguration
class to allow per-transaction overrides forconfirmPaymentIntent
. - added an
amountSurcharge
parameter toSCPConfirmConfiguration
to surcharge when confirming a payment. - If you are interested in joining this beta, please email stripe-terminal-betas@stripe.com.
- added a
- Beta: Added a
collectData
method to collect eligible magstripe data, such as gift cards.- If you are interested in joining this beta, please email stripe-terminal-betas@stripe.com.
- Update: Added
SCPSimulateReaderUpdateLowBatterySucceedConnect
to simulate an error scenario where a required update fails on a mobile reader due to low battery, but the SDK still successfully connects to the reader.- see Simulated reader updates for details.
- Update: if a mobile reader receives the
SCPErrorReaderMissingEncryptionKeys
error during payment collection, the SDK will disconnect from the reader. Note that auto reconnection will not work in this scenario. The error will automatically recover once the reader is reconnected. - Fix: Fixed a crash that occurred when canceling
collectPaymentMethod
afterconfirmPaymentIntent
had already been called on thePaymentIntent
.