Releases: stripe/stripe-terminal-ios
Releases · stripe/stripe-terminal-ios
3.6.0
- Built with Xcode 15.2, Swift version 5.9.
- Update: Using
SCPOfflineBehaviorRequireOnline
will attempt online network calls regardless of the current network status. This may cause requests while the network is offline to take longer as requests will always be attempted online first. - Update: Tapping or inserting an unsupported card will now report
SCPReaderDisplayMessageTryAnotherCard
instead ofSCPReaderDisplayMessageTryAnotherReadMethod
. - Update:
paymentStatus
now staysready
while API-only commands are in-progress. This includescreatePaymentIntent
,createSetupIntent
,cancelPaymentIntent
, andcancelSetupIntent
. - Update:
paymentStatus
now updates towaitingForInput
whilecollectInputs
is running. - Update: If a reader receives the
SCPErrorReaderMissingEncryptionKeys
error when collecting a payment the SDK now also reboots the reader in addition to the existing behavior of disconnecting from the reader. Reconnecting to the reader should re-install the keys and allow the reader to collect payments again.
3.5.0
3.5.0 2024-04-12
- Built with Xcode 15.2, Swift version 5.9.
- Beta:
CollectInputs
can now display optionaltoggles
in each input type.- If you are interested in joining this beta, please email stripe-terminal-betas@stripe.com.
- New: Support for connecting to mPOS readers over USB-C on iPads with M-series chips.
- This feature is in private beta. Please contact us if you are interested in joining this beta.
- New: Added an xcprivacy file to the framework listing our data use and required reason API usage.
- Update: Added
SetupIntentParameters.paymentMethodTypes
.- Note for internet reader integrations, this feature requires reader software version
2.22
or later to be installed on your internet reader.
- Note for internet reader integrations, this feature requires reader software version
- Update:
supportsReadersOfType
now returns NO with errorSCPErrorInvalidDiscoveryConfiguration
if the device type and discovery method are incompatible. - Update: When a Bluetooth reader has an error installing a required update the SDK will allow connecting to the reader if the reader is running a recent version. The error installing the update will still be communicated in the
reader:didFinishInstallingUpdate:error:
callback. The update will be available to be retried usinginstallAvailableUpdate
. If the update isn't installed withinstallAvailableUpdate
the installation will be retried the next time connecting to the reader. - Fixes #291: Fixes a bug where the cancelable returned by
collectPaymentMethod
was not responsive in certain conditions when a card was left in the reader or inserted before callingcollectPaymentMethod
. - Fixes a bug where
rebootReader
would returnSCPErrorUnexpectedSdkError
if called after the reader received a firmware update.
3.4.0
- New: For Tap to Pay on iPhone, added
autoReconnectOnUnexpectedDisconnect
andautoReconnectionDelegate
to theSCPLocalMobileConnectionConfiguration
. WhenautoReconnectOnUnexpectedDisconnect
is enabled, the SDK will attempt to restore connection upon any unexpected disconnect to your local mobile reader. See Stripe documentation for details. - Update: Formatting on certain fields exposed in
SCPOfflineCardPresentDetails
is now consistent withSCPCardPresentDetails
expYear
is a four-digit numberreceiptDetails.accountType
is no longer a number, and is one ofdefault
,savings
,checking
, orcredit
- Update: The SDK now requires that a
NSBluetoothAlwaysUsageDescription
key be present in your app's Info.plist instead of aNSBluetoothPeripheralUsageDescription
key. - Update: Allow
SCPCollectConfiguration.updatePaymentIntent
to be true for offline enabled readers whenSCPCreateConfiguration
hasofflineBehavior
set toSCPOfflineBehaviorRequireOnline
. - Update: Added new
SCPErrorReaderMissingEncryptionKeys
. Returned in a rare condition where the reader is missing the required keys to encrypt payment method data. The reader will disconnect if this error is hit. Reconnecting to the reader should re-install the keys. - Update: More descriptive error messages in
SCPErrorKeyMessage
for operations that fail due to network-related errors. - Fixes a bug where
SCPPaymentIntent.stripeId
was notnil
in the response toconfirmPaymentIntent
when operating offline with a smart reader. - Fixes a rare bug where Bluetooth readers could get into a state where they would no longer accept payments and needed to be replaced.
3.3.1
3.3.0
- Built with Xcode 15.2, Swift version 5.9.
- New:
rebootReader
method to reboot Bluetooth readers. - New: An optional
reader:didDisconnect:
method was added toSCPBluetoothReaderDelegate
which provides a newSCPDisconnectReason
to communicate known reasons why a Bluetooth reader disconnected. - New: Support refunding payments with the
SCPPaymentIntent.stripeId
.- Note for internet reader integrations, this feature requires reader software version
2.19
or later to be installed on your internet reader.
- Note for internet reader integrations, this feature requires reader software version
- New: Added support for retrieving and updating reader settings on WisePOS E and Stripe S700 by calling
retrieveReaderSettings
andsetReaderSettings
onSCPTerminal
.- Beta: Accessibility settings are provided at this time, allowing text-to-speech via speakers to be turned on and off as needed.
- Please contact us if you are interested in joining this beta.
- Beta: Added a
collectInputs
method to display forms and collect information from customers.- If you are interested in joining this beta, please email stripe-terminal-betas@stripe.com.
- Fixes a bug where collected offline payments using a reader that wasn't connected to online first would fail to be forwarded.
- Fixes #272: Removed old note about
discoverReaders
not returning an error when canceled. In 3.x SDKs cancelingdiscoverReaders
reportsSCPErrorCanceled
. - Fixes #251: Allow acceptance of Discover cards stored in Apple Pay.
- Fixes #279: Canceling collectPaymentMethod no longer hangs if card was removed early and the reader went back to the tipping input screen.
3.2.1
3.2.0
- Built with Xcode 14.3, Swift version 5.8.
- Update:
retrievePaymentIntent
andretrieveSetupIntent
no longer require a connected reader. - Update: Adds
SCPCharge.authorizationCode
to the sdk'sSCPCharge
model when it is available.- Note for internet reader integrations, this feature requires reader software version
2.18
or later to be installed on your internet reader.
- Note for internet reader integrations, this feature requires reader software version
- Update: Added
network
andwallet
toSCPCardPresentDetails
. - Update: Added
paymentMethodId
toSCPPaymentIntent
. - Update: The amount of time a reader can be used offline before needing to be activated online has been reduced to 30 days.
- Update:
SCPReaderNetworkStatus
has a new case (SCPReaderStatusUnknown
) that represents the network status of an internet reader that was discovered while the SDK is operating in offline mode. - Fix:
SCPSetupIntent.status
is nowSCPSetupIntentStatusRequiresConfirmation
after the payment has been collected. - Fixes a rare crash when connecting to a Bluetooth reader with a critically low battery.
- Fixes a rare crash when installing a Bluetooth reader update.
- Fixes a bug where cancelPaymentIntent, createSetupIntent, and cancelSetupIntent were not being queued and could error with an unexpected SDK error if called while another command was in progress.
- Fixes merchant choice routing not updating upon switching reader regions.
- Fixes #262: Initial Bluetooth reader battery level is reported immediately after connecting to the reader.
- Fixes error messaging to not return an unexpected SDK error in some situations when connected to a smart reader.
- Fixes an issue where integrations could hit
SCPErrorSessionExpired
when the SDK comes back online while using offline mode.
3.1.0
- Built with Xcode 14.3, Swift version 5.8.
- New: Public beta support for offline payments.
- See Collect payments while offline for details.
- Beta: Allow customer-initiated cancellation for PaymentIntent, SetupIntent, and Refund payment method collection with internet readers. See
setEnableCustomerCancellation:
onSCPCollectConfigurationBuilder
,SCPSetupIntentConfigurationBuilder
, andSCPRefundConfigurationBuilder
.- Note: This feature requires reader software version
2.17
or later to be installed on your internet reader. - Please contact us if you want to support customer-initiated cancellation.
- Note: This feature requires reader software version
- Update: When connecting to internet readers, the SDK no longer relies on DNS. This resolves an error experienced by users of some DNS providers.
- Fixes an issue where tipping and offline configs may not be fetched when connecting to an mPOS reader. Tipping and offline mode users should upgrade their SDK.
- Fixes an issue where the SDK wouldn't announce an unexpected disconnect if an internet reader receives an invalid session error. This can happen after the reader reboots while the SDK is in the background.
- Fixes an issue where the SDK would error with
SCPErrorFeatureNotAvailableWithConnectedReader
instead ofSCPErrorNotConnectedToReader
when calling certain commands without being connected to a reader. - Fixes a bug where the SDK could deadlock if attempting to connect to the same reader twice.
- Fixes a crash running
Terminal.shared.supportsReaders
on M1 Mac. - Improved
confirmPaymentIntent
performance when location is not available.
v2.23.2
- Fixes an issue where the SDK wouldn't announce an unexpected disconnect if an internet reader receives an invalid session error. This can happen after the reader reboots while the SDK is in the background.
- Fixes #252:
SCPLocalMobileConnectionConfiguration
- initWithLocationId:merchantDisplayName:onBehalfOf:tosAcceptancePermitted:
now correctly sets thetosAcceptancePermitted
value in the retuned configuration.
3.0.0
- Built with Xcode 14.3, Swift version 5.8.
- New: Private beta support for offline payments.
- See Collect payments while offline for details.
- Update: Minimum deployment target updated from iOS 11.0 to iOS 13.0.
- Update:
SCPPaymentIntent.stripeId
is now nullable to support offline payments. - Update:
Terminal.processPayment
has been renamed toTerminal.confirmPaymentIntent
. - Update:
Terminal.processRefund
has been renamed toTerminal.confirmRefund
. - Update:
ReconnectionDelegate
methods now provide the instance of theReader
that is being reconnected to instead of theTerminal
instance. - Update: Removed the
SCPErrorBusy
error. The SDK will now queue incoming commands if another command is already running. - Update: Removed
SCPErrorCannotConnectToUndiscoveredReader
andSCPErrorMustBeDiscoveringToConnect
errors. The SDK now supports connecting to anSCPReader
instance that was previously discovered without needing to restart discovery. - Update: Removed
Terminal.readReusableCard
. This functionality is replaced by SetupIntents. - Update:
discoverReaders
is now completed whenconnectReader
is called. This is a behavior change from 2.x wherediscoverReaders
would continue running until connect succeeded. If connect fails you can retry connecting to a previously discoveredSCPReader
or restartdiscoverReaders
. - Update: Canceling
discoverReaders
now completes with anSCPErrorCanceled
error. Previously no error was provided when canceled. - Update:
DiscoveryConfiguration
is now a protocol with concrete classes for each discovery method:BluetoothScanDiscoveryConfiguration
,BluetoothProximityDiscoveryConfiguration
,InternetDiscoveryConfiguration
, andLocalMobileDiscoveryConfiguration
. Each class has aBuilder
exposing only the configuration values that apply to that discovery method. - Update: Configuration and parameter classes are now immutable and need to be built with builders. Example: To create
SCPPaymentIntentParameters
useSCPPaymentIntentParametersBuilder
which has setters for all the parameters and abuild:
method to create theSCPPaymentIntentParameters
instance. - Update: Removed
CardDetails.fingerprint
andCardPresentDetails.fingerprint
. You will still be able to access the fingerprint server-side using Stripe server-side SDKs. - Fixes #240:
SCPDiscoveryConfiguration.timeout
is now respected when using simulated Bluetooth scan.