- BraintreePayPal
- Add
BTPayPalRequest.userPhoneNumber
optional property
- Add
- BraintreeVenmo
- Send
url
inevent_params
for App Switch events to PayPal's analytics service (FPTI)
- Send
- BraintreePayPal
- Add
BTPayPalRecurringBillingDetails
andBTPayPalRecurringBillingPlanType
opt-in request objects. Including these details will provide transparency to users on their billing schedule, dates, and amounts, as well as launch a modernized checkout UI.
- Add
- BraintreeCore
- Fix analytics bug where sessionID value in analytics payload was inaccurate; send separate FPTI POST requests per unique sessionID
- BraintreePayPal
- Send
isVaultRequest
for App Switch events to PayPal's analytics service (FPTI)
- Send
- BraintreeShopperInsights (BETA)
- For analytics, send
experiment
as a parameter togetRecommendedPaymentMethods
method - For analytics, send
experiment
andpaymentMethodsDisplayed
analytic metrics to FPTI via the button presented methods
- For analytics, send
- BraintreeCore
- Fix bug where some analytics wouldn't send if
BTAPIClient
instantiated on button click - Fix low-memory crash in ConfigurationCallbackStorage (fixes #1382)
- Fix bug where some analytics wouldn't send if
- BraintreePayPal
- Fix bug where
BTPayPalCheckoutRequest
was not passing the correct data causing issues with some transaction attempts
- Fix bug where
- BraintreeCore
- Update
endpoint
syntax sent to FPTI for 3D Secure and Venmo flows
- Update
- BraintreeThreeDSecure
- Add error code and error message for
exceededTimeoutLimit
- Add error code and error message for
- BraintreeCore
- Prevent duplicate outbound
v1/configuration
requests - Add network timeout of 30 seconds
- Prevent duplicate outbound
- BraintreeShopperInsights (BETA)
- Add error when using an invalid authorization type
- BraintreeCore
- Update
URLOpener.openURL(_:completionHandler:)
protocol method to fix method signature change in Xcode 16 beta 3 (fixes #1359)
- Update
- BraintreeThreeDSecure
- Fix bug to conditionally unwrap
customFields
- this caused an error when this value was not set onBTThreeDSecureRequest
- Fix bug to conditionally unwrap
- BraintreeThreeDSecure
- Add
customFields
param toBTThreeDSecureRequest
- Add
- BraintreeCore
- For analytics, only call
fetchOrReturnRemoteConfig()
when batch uploading, not on each analytic event enqueue - For analytics, add additional metrics on networking timing
- Fix bug causing random crashes in
BTAnalyticsService
- For analytics, only call
- BraintreePayPalNativeCheckout (DEPRECATED)
- Note: This module is deprecated and will be removed in a future version of the SDK
- Add deprecated warning message to all public classes and methods
- BraintreePayPal
- Add PayPal App Switch vault flow (BETA)
- Add
BTPayPalVaultRequest(userAuthenticationEmail:enablePayPalAppSwitch:offerCredit:)
- Add
BTPayPalClient(apiClient:universalLink:)
- Send
link_type
andpaypal_installed
inevent_params
when available to PayPal's analytics service (FPTI) - Note: This feature is currently in beta and may change or be removed in future releases.
- Add
- Add PayPal App Switch vault flow (BETA)
- Re-use existing URLSession instance for
v1/configuration
and subsequent BT GW API calls - BraintreeShopperInsights (BETA)
- Add PrivacyInfo.xcprivacy file
- Add
BTShopperInsightsClient.getRecommendedPaymentMethods()
for returning recommendations based on the buyer
- BraintreePayPal
- Add
BTPayPalCheckoutRequest.userAuthenticationEmail
optional property
- Add
- BraintreeCore
- Batch analytics events to FPTI
- Send
start_time
,end_time
, andendpoint
to FPTI for tracking API request latency - Send
isVaultRequest
to FPTI for tracking in Venmo and PayPal flows
- BraintreePayPalMessaging (BETA)
- Add BTPayPalMessagingRequest, BTPayPalMessagingColor, BTPayPalMessagingLogoType, BTPayPalMessagingOfferType, BTPayPalMessagingPageType, BTPayPalMessagingTextAlignment, and BTPayPalMessagingDelegate
- Add BTPayPalMessagingView to display PayPal messages to promote offers such as Pay Later and PayPal Credit to customers.
- To get started create a BTPayPalMessagingView and call start(_:) with a BTPayPalMessagingRequest
- BraintreePayPal
- Send
start_time
,end_time
, andendpoint
to FPTI for tracking API request latency
- Send
- Updated expiring pinned vendor SSL certificates
- Remove throttle delay in accessing configuration, added in v5.9.0
- Move from URLCache to NSCache for configuration caching
- BraintreePayPalNativeCheckout
- Bump PayPalCheckout to version 1.3.0 with code signing & a privacy manifest file.
- Require Xcode 15.0+ and Swift 5.9+ (per Apple App Store requirements)
- Meets Apple's new Privacy Update requirements
- BraintreePayPalDataCollector
- Update PPRiskMagnes to version 5.5.0 with privacy manifest changes and code-signing
- This version of the PPRiskMagnes framework is dynamic
- BraintreeThreeDSecure
- Bump CardinalMobile SDK to version 2.2.5-9 with code signing and a privacy manifest file.
- Require Xcode 15.0+ and Swift 5.9+ (per App Store requirements)
- Updated expiring pinned vendor SSL certificates
- BraintreeThreeDSecure
- Bump CardinalMobile SDK to version 2.2.5-9 with code signing and a privacy manifest file.
- BraintreeDataCollector
- Bump to PPRiskMagnes version 5.5.0 with fix for Xcode 15.3 Swift Pacakge Manager validation bug (fixes #1229))
- Add
BTPayPalVaultRequest.userAuthenticationEmail
optional property
- BraintreeDataCollector
- Bump to PPRiskMagnes v5.5.0 with code signing & a privacy manifest file
- BraintreeVenmo
- Add
isFinalAmount
toBTVenmoRequest
- Add
BTVenmoRequest.fallbackToWeb
- If set to
true
customers will fallback to a web based Venmo flow if the Venmo app is not installed - This method uses Universal Links instead of URL Schemes
- If set to
- Add
- BraintreeCore
- Send
paypal_context_id
inevent_params
to PayPal's analytics service (FPTI) when available - Send
link_type
inevent_params
to PayPal's analytics service (FPTI) - Fix bug where FPTI analytic events were being sent multiple times
- Send
- BraintreePayPal
- Add
imageURL
,upcCode
, andupcType
toBTPayPalLineItem
- Add
- Update all SDK errors to be public and Equatable (fixes #1152 and #1080)
- BraintreeThreeDSecure
- Fix bug where
BTThreeDSecureClient.initializeChallenge()
callback wasn't properly invoked (fixes #1154)
- Fix bug where
- BraintreePayPalNativeCheckout
- Update PayPalCheckout from 1.1.0 to 1.2.0.
- Add
userAuthenticationEmail
toBTPayPalNativeCheckoutRequest
- BraintreeDataCollector
- Update previously incorrect version of PPRiskMagnes with 5.4.1 for Carthage users
- BraintreePayPalDataCollector
- Update previously incorrect version of PPRiskMagnes 5.4.1 with staging removed
- This version of the PPRiskMagnes framework is dynamic
- BraintreeThreeDSecure
- Add
cardAddChallengeRequested
,uiType
, andrenderTypes
toBTThreeDSecureRequest
- Deprecate
BTThreeDSecureRequest.cardAddChallenge
- Fix bug where defaults for
BTThreeDSecureRequest.accountType
,BTThreeDSecureRequest.requestedExemptionType
, andBTThreeDSecureRequest.dfReferenceID
were improperly returning an error if not passed into the request
- Add
- BraintreeCard
- Deprecate unused
BTCardRequest
class
- Deprecate unused
- BraintreePayPalDataCollector
- Update PPRiskMagnes with 5.4.1 - staging removed (fixes #1107)
- This version of the PPRiskMagnes framework is static
- BraintreeDataCollector
- Update PPRiskMagnes with 5.4.1 - staging removed (fixes #1107)
- BraintreeCore
- Fix bug where
type
was always returned asUnknown
infetchPaymentMethodNonces
(fixes #1099) - Analytics
- Send
tenant_name
inevent_params
to PayPal's analytics service (FPTI) - Update
component
frombtmobilesdk
tobraintreeclientsdk
for PayPal's analytics service (FPTI) - Send
correlation_id
, when possible, in PayPal analytic events
- Send
- Fix bug where
- BraintreePayPalNativeCheckout
- Update PayPalCheckout from 1.0.0 to 1.1.0.
- BraintreeVenmo
- Allow merchants to collect enriched customer data if enabled in the Braintree Control Panel
- Add the following properties to
BTVenmoRequest
collectCustomerBillingAddress
collectCustomerShippingAddress
totalAmount
subTotalAmount
discountAmount
taxAmount
shippingAmount
lineItems
- BraintreeVenmo
- Add additional error parsing for Venmo errors
- Throw cancelation specific error for
BTVenmoClient.tokenize()
(fixes #1085)- The callback style version of this function previously returned
(nil, nil)
for the cancel scenario, but will now return(nil, error)
instead.
- The callback style version of this function previously returned
- BraintreeCore
- Send
live
instead ofproduction
for themerchant_sdk_env
tag to PayPal's analytics service (FPTI)
- Send
- Expose reference documentation for
BTAppContextSwitcher.handleOpen(_:)
andBTAppContextSwitcher.handleOpenURL(context:)
- Fixed a bug to return
firstName
,lastName
,email
, andpayerID
onBTPayPalNativeCheckoutAccountNonce
when available. - BraintreeVenmo
- Fix bug where tokenizations failed when sending an empty dictionary for
transactionDetails
in theCreateVenmoPaymentContext
call (fixes #1074)
- Fix bug where tokenizations failed when sending an empty dictionary for
- BraintreePayPalNativeCheckout (General Availability release)
- Update PayPalCheckout from 0.110.0 to 1.0.0. This is our newly released General Availability version
- Note: This module will now be subject to semantic versioning
- Update PayPalCheckout from 0.110.0 to 1.0.0. This is our newly released General Availability version
- BraintreePayPalNativeCheckout (BETA)
- Fix bug where setting
userAction
does not update button as expected
- Fix bug where setting
- BraintreeSEPADirectDebit
- Add
BTSEPADirectDebitRequest.locale
- Add
- BraintreePayPal
- Fix bug where
BTPayPalAccountNonce
values were not being returned as expected (fixes #1063)
- Fix bug where
- BraintreeVenmo
- Allow merchants to collect enriched customer data if enabled in the Braintree Control Panel
- Add the following properties to
BTVenmoRequest
collectCustomerBillingAddress
collectCustomerShippingAddress
totalAmount
subTotalAmount
discountAmount
taxAmount
shippingAmount
lineItems
- The Braintree SDK is now written in Swift
- Breaking Changes
- All SDK error enums are now internal
- See list of new / updated error cases and codes
Note: Includes all changes in 6.0.0-beta4, 6.0.0-beta3, 6.0.0-beta2, and 6.0.0-beta1
- Require Xcode 14.1 (per App Store requirements)
- Deprecate 3DS v1. Any attempt to use 3DS v1 will now throw an error. See Migrating to 3D Secure 2 for more information.
- Carthage
.framework
s are no longer supported in Xcode 14.1, please replace all Frameworks with XCFrameworks and use--use-xcframeworks
for all Carthage steps- Multi-architecture platforms are not supported when building framework bundles in Xcode 12+. Prefer building with XCFrameworks).
- Move from Braintree to PayPal analytics service
- Make
BTConfiguration
extensions internal - Breaking Changes
- Require Xcode 14.3+ and Swift 5.8+
- Rename
BraintreePaymentFlow
module toBraintreeLocalPayment
- BraintreeThreeDSecure
- Add
BTThreeDSecureClient
- Remove
BTPaymentFlowClient+ThreeDSecure
extension - Move
BTPaymentFlowClient+ThreeDSecure
andBTThreeDSecureRequest
methods toBTThreeDSecureClient
- Remove
BTThreeDSecureError.cannotCastRequest
case
- Remove
- Remove dependency on
BraintreePaymentFlow
module
- Add
- BraintreeLocalPayment (formerly named BraintreePaymentFlow)
- Rename
BTPaymentFlowClient
toBTLocalPaymentClient
- Move
BTLocalPaymentRequest
methods toBTLocalPaymentClient
- Rename
- Remove
iosBaseSDK
,iosDeploymentTarget
,iosIdentifierForVendor
,deviceAppGeneratedPersistentUuid
, anddeviceScreenOrientation
fromBTAnalyticsMetadata
- Fixes error
@objcMembers attribute used without importing module 'Foundation'
in Xcode 14.3+ - Add async/await support back to all public Swift methods
- Convert
BraintreeVenmo
module to Swift - Convert
BraintreeCard
module to Swift - Convert
BraintreeThreeDSecure
module to Swift - Convert
BraintreePaymentFlow
module to Swift - Breaking Changes
- BraintreePaymentFlow
- Replaced
SFSafariViewController
withASWebAuthenticationSession
- Removed
BTViewControllerPresentingDelegate
protocol and correlating methods - Rename
BTLocalPaymentRequest.shippingAddressRequired
toisShippingAddressRequired
- Replaced
- BraintreeApplePay
- Rename
BTApplePayClient.tokenizeApplePay(_:completion:)
toBTApplePayClient.tokenize(_:completion:)
- Rename
BTApplePayClient.paymentRequest()
toBTApplePayClient.makePaymentRequest()
- Make
BTApplePayCardNonce
initializer internal
- Rename
- BraintreeDataCollector
- Update PPRiskMagnes to static XCFramework
- BraintreeVenmo
- Rename
BTVenmoAccountNonce.externalId
toBTVenmoAccountNonce.externalID
- Renamed
BTVenmoClient.tokenizeVenmoAccount(with:completion:)
toBTVenmoClient.tokenize(_:completion:)
- Renamed
BTVenmoClient.isiOSAppAvailableForAppSwitch()
toBTVenmoClient.isVenmoAppInstalled()
- Rename
- BraintreeAmericanExpress
- Rename
BTAmericanExpressClient.getRewardsBalance(forNonce:currencyIsoCode:completion:)
toBTAmericanExpressClient.getRewardsBalance(forNonce:currencyISOCode:completion:)
- Rename
- BraintreeSEPADirectDebit
- Rename
BTSEPADirectDebitClient.tokenize(request:completion:)
toBTSEPADirectDebitClient.tokenize(_:completion:)
- Rename
- BraintreeCard
- Make
BTAuthenticationInsight
initializer internal - Rename
BTCardClient.tokenizeCard(_:completion)
toBTCardClient.tokenize(_:completion:)
- Make
- BraintreeThreeDSecure
- 3D Secure version 1 is no longer supported
- Removed the following:
BTThreeDSecureV1UICustomization
class,BTThreeDSecureRequest.v1UICustomization
property, andBTThreeDSecureVersion
enum- All 3D Secure requests will use version 2
- Rename
BTThreeDSecureV2ButtonType
enum cases to:.verify
,.continue
,.next
,.cancel
, and.resend
- Removed the following:
- 3D Secure version 1 is no longer supported
- BraintreePaymentFlow
- Add missed deprecation warnings to
BTCardRequest
Union Pay properties - Update Cardinal SDK to version 2.2.5-6
- BraintreePayPalNativeCheckout (BETA)
- Expose
payerID
property onBTPayPalNativeCheckoutAccountNonce
publicly - Expose all properties on
BTPayPalNativeCheckoutAccountNonce
to Objective-C
- Expose
- BraintreePayPalNativeCheckout (BETA)
- Fix bug where some request dictionaries were being constructed incorrectly
- Fix bug where passing
BTPayPalNativeVaultRequest.shippingAddressOverride
asnil
was incorrectly throwing an error
- Convert
BraintreePayPal
module to Swift - Breaking Changes
- BraintreePayPal
- Rename
BTPayPalRequest.riskCorrelationId
toBTPayPalRequest.riskCorrelationID
- Removed
BTPayPalRequest.activeWindow
property- The window will be set to the first window or a new
ASPresentationAnchor
if the first window isnil
- The window will be set to the first window or a new
- Update
BTPayPalRequestLandingPageType
enum default case to.none
- Update enum values
.none
= 0.login
= 1.billing
= 2
- Update enum values
BTPayPalRequestUserAction
- Update enum cases to
.none
and.payNow
- Update enum values
.none
= 0.payNow
= 1
- Update enum cases to
- Update
BTPayPalRequestIntent
enum values.authorize
= 0.sale
= 1.order
= 2
- Update
BTPayPalLineItemKind
enum values.debit
= 0.credit
= 1
- Create
BTPayPalLocaleCode
enum BTPayPalRequest.localeCode
now uses theBTPayPalLocaleCode
enum instead of aString
- Renamed and replaced
BTPayPalClient.tokenizePayPalAccount
with two methods calledtokenize()
taking in requests of eitherBTPayPalCheckoutRequest
orBTPayPalVaultRequest
- Make
BTPayPalNonce
initializer internal
- Rename
- BraintreePayPalNativeCheckout (BETA)
- Renamed and replaced
BTPayPalNativeCheckoutClient.tokenizePayPalAccount
with two methods calledtokenize()
taking in requests of eitherBTPayPalNativeCheckoutRequest
orBTPayPalNativeVaultRequest
BTPayPalNativeCheckoutRequest
now takes in anintent
of typeBTPayPalRequestIntent
instead ofBTPayPalNativeRequestIntent
BTPayPalNativeCheckoutRequest.localeCode
now uses theBTPayPalLocaleCode
enum instead of aString
value
- Renamed and replaced
- BraintreeUnionPay
- Remove
BraintreeUnionPay
module- UnionPay cards can now be processed as regular cards (through the BraintreeCard module) due to their partnership with Discover
- Remove
- BraintreeCore
- Remove
BTPreferredPaymentMethods
andBTPreferredPaymentMethodResult
- Remove
- BraintreeSEPADirectDebit
- The
tokenize
method no longer takes in acontext
parameter - Merchants no longer need to conform to the
ASWebAuthenticationPresentationContextProviding
protocol
- The
- BraintreePayPal
- BraintreeThreeDSecure
- Add
requestedExemptionType
toBTThreeDSecureRequest
- Add
- BraintreePayPalNativeCheckout (BETA)
- Update NativeCheckout version from 0.108.0 to 0.110.0
- Fix issue with multiple clientIDs causing incorrect web fallback
- Convert
BraintreeCore
module to Swift - Convert
BraintreeAmericanExpress
module to Swift - Convert
BraintreeDataCollector
module to Swift - Removed
PayPalDataCollector
module in favor of singleBraintreeDataCollector
- Kount is no longer supported through the SDK
- Breaking Changes
- Bump minimum supported deployment target to iOS 14+
- Require Carthage 0.38.0+ and xcframeworks via
carthage update --use-xcframeworks
- Require Xcode 14
- Bump Swift Tools Version to 5.7 for CocoaPods & SPM
- BraintreeCore
- Renamed
BTAppContextSwitchDriver
protocol to `BTAppContextSwitchClient BTViewControllerPresentingDelegate
protocol now takes in theclient
parameter instead ofdriver
- Renamed
BTClientMetadataSourceType
toBTClientMetadataSource
- Renamed
BTClientMetadataIntegrationType
toBTClientMetadataIntegration
- Removed static wrapper methods from
BTAppContextSwitcher
- Replaced
BTLogger
withBTLogLevel
andBTLogLevelDescription
- Renamed
BTCardNetworkUKMaestro
toBTCardNetworkUkMaestro
inBTCardNetwork
enum
- Renamed
- BraintreeVenmo
- Renamed
BTVenmoDriver
toBTVenmoClient
- Remove
.unspecified
case fromBTVenmoPaymentMethodUsage
enum - Require
paymentMethodUsage
param inBTVenmoRequest
initializer - Move category extension of
BTConfiguration
intoBraintreeCore
- Renamed
- BraintreePayPal
- Renamed
BTPayPalDriver
toBTPayPalClient
- Remove
BTPayPalDriver.requestOneTimePayment
in favor ofBTPayPalClient.tokenizePayPalAccount
- Remove
BTPayPalDriver.requestBillingAgreement
in favor ofBTPayPalClient.tokenizePayPalAccount
- Move category extension of
BTConfiguration
intoBraintreeCore
- Renamed
- BraintreeAmericanExpress
- Make
BTAmericanExpressRewardsBalance
initializer private
- Make
- BraintreePaymentFlow
- Renamed
BTPaymentFlowDriver
toBTPaymentFlowClient
- Renamed
BTPaymentFlowDriverDelegate
protocol toBTPaymentFlowClientDelegate
handleRequest
in delegate protocol now takes inpaymentClientDelegate
parameter instead ofpaymentDriverDelegate
- Move category extension of
BTConfiguration
intoBraintreeCore
- Renamed
- PayPalDataCollector
- Removed
PayPalDataCollector
module in favor of singleBraintreeDataCollector
- Removed
- BraintreeDataCollector
- Kount is no longer supported through the SDK
- Combine
PayPalDataCollector
andBraintreeDataCollector
into one module to create single entrypoint for data collection - Merchants should use the new
collectDeviceData
function for data collection which will now return a completion with either device data or an error
- BraintreeApplePay
- Move category extension of
BTConfiguration
intoBraintreeCore
- Move category extension of
- BraintreeUnionPay
- Move category extension of
BTConfiguration
intoBraintreeCore
- Move category extension of
- BraintreeThreeDSecure
- Move category extension of
BTConfiguration
intoBraintreeCore
- Move category extension of
- Deprecate Kount Custom integrations
- Deprecate the
BraintreeUnionPay
module and containing classes- UnionPay cards can now be processed as regular cards (through the
BraintreeCard
module) due to their partnership with Discover
- UnionPay cards can now be processed as regular cards (through the
- BraintreePayPalNativeCheckout (BETA)
- Fix CocoaPods bug emitting "Cannot find interface declaration" error (CocoaPods issue #11672)
- Rename
riskCorrelationId
toriskCorrelationID
- Rename
nativeRequest
torequest
internally intokenizePayPalAccount
tokenizePayPalAccount
now takes in arequest
of typeBTPayPalNativeRequest
instead of anativeRequest
of typeBTPayPalRequest
- BraintreePayPalDataCollector
- Update PPRiskMagnes with a version of 5.4.0 with
ENABLE_BITCODE
removed- The App Store no longer accepts bitcode submissions from Xcode 14
- This version of PPRiskMagnes drops support for Xcode 12 and requires Swift 5.5+
- This version of the PPRiskMagnes framework is dynamic. This reverts a breaking change that was introduced in minor version 5.8.0 (See GitHub issue #920).
- Update PPRiskMagnes with a version of 5.4.0 with
- BraintreePayPalNativeCheckout (BETA)
- Fix
merchant_account_id
andcorrelation_id
keys to be nested at the top level of the internal create order request - Update Package.swift to fetch
PayPalCheckout
binary dependency directly instead of hosting copy inbraintree_ios
repo
- Fix
- BraintreePayPal
- Resolve depreciation warning with
UIApplication.sharedApplication
for iOS 15+ targets (fixes #884)
- Resolve depreciation warning with
- Remove
ENABLE_BITCODE
from framework target build settings- The App Store no longer accepts bitcode submissions from Xcode 14
- BraintreePayPalNativeCheckout (BETA)
- Update NativeCheckout version from 0.106.0 to 0.108.0
- Fixes an issue where merchants with multiple client IDs would fallback to web on subsequent checkout sessions
- Remove exit survey when canceling Native Checkout flow
- BraintreeSEPADirectDebit
- Resolve Invalid Bundle error when uploading to the App Store
- BraintreePayPalNativeCheckout (BETA)
- Fix CocoaPods integrations to pin exact
PayPalCheckout
version - Update NativeCheckout version from 0.100.0 to 0.106.0
- This version update allows US based customers with a confirmed phone number to log into their PayPal account using a one time passcode sent via SMS without needing to authenticate through a webview.
- Update Package.swift to use local
PayPalCheckout
dependency instead of fetching remotely.- Fixes a bug where all Braintree merchants using SPM (including those not using the
BraintreePayPalNativeCheckout
module), would getPayPalCheckout
in their projects.
- Fixes a bug where all Braintree merchants using SPM (including those not using the
- Fix CocoaPods integrations to pin exact
- Adds support for Xcode 14 and iOS 16
- BraintreeSEPADirectDebit
- Update
BTSEPADirectDebitNonce
to pull inibanLastFour
andcustomerID
as expected - Remove unused
presentationContextProvider
(fixes #854)
- Update
- BraintreeSEPADirectDebit
- Add support for SEPA Direct Debit for approved merchants through the Braintree SDK
- SEPA Direct Debit is only available to select merchants, please contact your Customer Support Manager or Sales to start processing SEPA bank payments
- Merchants should use the
BTSepaDirectDebitClient.tokenize
method while passing in theBTSEPADirectDebitRequest
andcontext
while conforming toASWebAuthenticationPresentationContextProviding
- BraintreePayPalNativeCheckout (BETA)
- This module can handle the same flows as the existing
BraintreePayPal
module, but will present the end user with an in-context checkout flow using native UI components. - To get started, create a
BTPayPalNativeCheckoutClient
, and calltokenizePayPalAccount
with either aBTPayPalNativeCheckoutRequest
(for one time payment transactions), or aBTPayPalNativeVaultRequest
(for vaulted flows)
- This module can handle the same flows as the existing
- Fix potential crash when http request fails with no error but empty data (thanks @cltnschlosser)
- Update Cardinal SDK to version 2.2.5-3
- Venmo
- Reduce network connection lost error frequency on older iOS and Venmo app versions
- PPDataCollector
- Allow passing isSandbox bool for data collection in
clientMetadataID
andcollectPayPalDeviceData
functions
- Allow passing isSandbox bool for data collection in
- PPRiskMagnes
- Update PPRiskMagnes to 5.4.0
- This version of PPRiskMagnes replaces the dynamic framework/xcframework with a static framework/xcframework
- Fix configuration caching
- Swift Package Manager
- Add explicit package dependancies for
BraintreeDataCollector
,BraintreeThreeDSecure
, andPayPalDataCollector
(fixes #735)
- Add explicit package dependancies for
- Update import statement of header file from
kDataCollector
toKDataCollector
- Fix error construction for duplicate card error
- Card Tokenization
- Remove expiration date duplication in card tokenization (fixes #772)
- Add
BTCardClientErrorTypeCardAlreadyExists
toBTCardClientErrorType
- 3DS
- Add nil checks for 3DS handlers (fixes #769)
- Add
displayName
toBTLocalPaymentRequest
- Add
riskCorrelationId
toBTPayPalRequest
- Update
CardinalMobile
frameworks- Update
CardinalMobile.xcframework
to 2.2.5-2- Adds
arm64
simulator / Apple Silicon support (discussed in #564) - Fixes 3DS (iOS 15 translucent toolbar issue)[#748]
- Adds
- Update
CardinalMobile.framework
to 2.2.5-1 - Note:
- This release allows all SPM, CocoaPods, and Carthage users using
--use-xcframeworks
to get Apple Silicon support and the iOS 15 3DS toolbar fix. - Carthage users not using
--use-xcframeworks
will not get these updates until a later version. - See PR #750 for more details.
- This release allows all SPM, CocoaPods, and Carthage users using
- Update
- Re-organize
/Frameworks
binaries into nested/FatFrameworks
and/XCFrameworks
directories.- Provides fix for this CocoaPods issue & allows proper usage of
PPRiskMagnes.xcframework
byPayPalDataCollector
subspec.
- Provides fix for this CocoaPods issue & allows proper usage of
- Swift Package Manager
- Update Package.swift to include
PPRiskMagnes
as explicit target for library products that requirePayPalDataCollector
- Note: No longer requires manual inclusion of
PayPalDataCollector
in order to useBraintreeThreeDSecure
,BraintreePayPal
, andBraintreePaymentFlow
- Update Package.swift to include
- Add
offerPayLater
toBTPayPalRequest
- Swift Package Manager
- Adds
NS_EXTENSION_UNAVAILABLE
annotations to methods unavailable for use in app extensions. Fixes (Drop-In issue #343)[braintree/braintree-ios-drop-in#343] for Xcode 13-beta3.
- Adds
- ThreeDSecure
- Add
cardAddChallenge
toBTThreeDSecureRequest
- Add
- Swift Package Manager
- Remove product libraries for
KountDataCollector
,PPRiskMagnes
, andCardinalMobile
(requires Xcode 12.5+)- Notes:
- This was a workaround for an Xcode bug discussed in #576. The bug resolved in Xcode 12.5.
- You can remove the
KountDataCollector
,PPRiskMagnes
, andCardinalMobile
explicit dependencies. - You can also remove any run-script phase or post-action previously required for using these frameworks.
- Notes:
- Xcode 13 Beta
- Remove invalid file path exclusions from
Package.swift
(thanks @JonathanDowning)
- Remove invalid file path exclusions from
- Remove product libraries for
- Re-add
BraintreeCore
dependency toPayPalDataCollector
for Swift Package Manager archive issue workaround (fixes #679)
- Venmo
- Add
paymentMethodUsage
toBTVenmoRequest
- Add
displayName
toBTVenmoRequest
- Add
- Update PPRiskMagnes to 5.2.0
- Carthage
- Add xcframework support (requires Carthage 0.38.0+)
- Fix
Braintree-Swift.h
imports for React Native projects using CocoaPods (fixes #671) - Fix
BTJSON
compatability for Swift
- Update Kount SDK to v4.1.5
- Fix bug where
userAction
onBTPayPalCheckoutRequest
was ignored
- Update PPRiskMagnesOC to 4.0.12 (resolves potential duplicate symbols errors)
- Add CardinalMobile.xcframework version 2.2.5-1
- Update Kount SDK to v4.1.4
NOTE: For Swift Package Manager integrations using BraintreeThreeDSecure
, manually including CardinalMobile.framework
is no longer required. You should delete it from your project and add CardinalMobile
via SPM. If you added the run script to remove simulator architectures from CardinalMobile.framework
, you should remove this as well. See the Swift Package Manager guide for more information.
- Fix potential crash if
legacyCode
param missing from GraphQL error response - PayPal
- Add
offerCredit
toBTPayPalVaultRequest
- Add
- Local Payment Methods
- Add
bic
(Bank Identification Code) toBTLocalPaymentRequest
- Add
- Apple Pay
- Add support for
PKPaymentNetworkElo
to Apple Pay configuration
- Add support for
- SPM
- Remove
KountDataCollector
binary dependency fromBraintreeDataCollector
target (fixes #624) - Remove
PPRiskMagnes
binary dependency fromPayPalDataCollector
target (fixes #624)
- Remove
- Carthage
- Fix timeout when building from source using --no-use-binaries or --use-xcframeworks flags
- Breaking Changes
- Make
shippingMethod
property onBTThreeDSecureRequest
an enum instead of a string - Remove
BTTokenizationService
- Make
BTPaymentMethodNonceParser
private - Remove
BTAppSwitchDelegate
- Rename
BTAppSwitch
toBTAppContextSwitcher
- Rename
handleAppSwitchReturnURL()
tohandleReturnURL()
- Rename
canHandleAppSwitchReturnURL()
tocanHandleReturnURL()
- Remove
unregisterAppSwitchHandler()
- Rename
- Rename properties to use
ID
instead ofId
:BTAmericanExpressRewardsBalance.requestID
BTCard.merchantAccountID
BTThreeDSecureInfo.acsTransactionID
BTThreeDSecureInfo.dsTransactionID
BTThreeDSecureInfo.threeDSecureAuthenticationID
BTThreeDSecureInfo.threeDSecureServerTransactionID
BTBinData.productID
BTClientMetadata.sessionID
BTConfiguration+DataCollector.kountMerchantID
BTDataCollector.fraudMerchantID
BTPayPalAccountNonce.clientMetadataID
BTPayPalAccountNonce.payerID
BTPayPalRequest.merchantAccountID
BTLocalPaymentRequest.merchantAccountID
BTLocalPaymentResult.clientMetadataID
BTLocalPaymentResult.payerID
BTThreeDSecureAdditionalInformation.accountID
BTThreeDSecureLookup.transactionID
- Rename methods to use
ID
instead ofId
:BTLocalPaymentRequest.localPaymentStarted(request:paymentID:start:)
BTVenmoDriver.authorizeAccount(profileID:vault:completion:)
- Remove
initWithNumber
andinitWithParameters
initializers fromBTCard
- Replace
BTVenmoDriver.authorizeAccount
methods withBTVenmoDriver.tokenizeVenmoAccount
- PayPal
- Update
BTPayPalDriver.requestOneTimePayment
to expect aBTPayPalCheckoutRequest
and deprecate method - Update
BTPayPalDriver.requestBillingAgreement
to expect aBTPayPalVaultRequest
and deprecate method - Remove
offerCredit
fromBTPayPalRequest
(offerPayLater
should be used instead)
- Update
- BraintreeDataCollector
- Remove
BTDataCollectorDelegate
- Remove
BTDataCollector.collectCardFraudData()
- Remove
BTDataCollectorKountErrorDomain
- Remove
- Make
- Add
environment
toBTConfiguration
- Add
BTVenmoRequest
- Update Kount SDK to v4.1.3 (includes arm64 simulator architecture for Apple silicon)
- PayPal
- Fix memory leak in
BTPayPalDriver
- Add
BTPayPalCheckoutRequest
- Add
BTPayPalVaultRequest
- Add
tokenizePayPalAccount
method toBTPayPalDriver
- Add
offerPayLater
andrequestBillingAgreement
toBTPayPalCheckoutRequest
- Fix memory leak in
- Update CardinalMobile.framework to v2.2.5
Note: Includes all changes in 5.0.0-beta2 and 5.0.0-beta1
- Add SPM support for
BraintreeDataCollector
andBraintreeThreeDSecure
- Add SPM libraries for
KountDataCollector
andPPRiskMagnes
to workaround Xcode bug (addresses #576) - Bump Kount to v4.0.4.3 pre-release (provides an xcframework for SPM)
- Bump PPRiskMagnes to v5.10.0 (resolves #564)
- Fix Xcode 12.3 issue with building PPRiskMagnes.framework for iOS + iOS Simulator
- Add
accountType
toBTThreeDSecureRequest
- Breaking Changes
- Remove
type
andnonce
params onBTApplePayCardNone
initializer - Replace
uiCustomization
withv2UICustomization
onBTThreeDSecureRequest
- Introduce new classes for 3DS2 UI customization:
BTThreeDSecureV2UICustomization
BTThreeDSecureV2ButtonCustomization
BTThreeDSecureV2LabelCustomization
BTThreeDSecureV2TextBoxCustomization
BTThreeDSecureV2ToolbarCustomization
- Default
versionRequested
onBTThreeDSecureRequest
to 3DS2 instead of 3DS1
- Remove
- Add
paymentTypeCountryCode
toBTLocalPaymentRequest
- Add support for Swift Package Manager (resolves #462)
- Bump Kount to v4.0.4.2 (supports iOS 9.3+)
- Replace deprecated
SecTrustEvaluate
withSecTrustEvaluateWithError
(fixes #536) - Only check if the Venmo app is installed if the BraintreeVenmo module is being used (resolves #231)
- Breaking Changes
- Bump minimum supported deployment target to iOS 12
- Remove deprecated
BraintreeUI
module - Remove all deprecated methods and properties
- Core
- Remove the
localizedDescription
property onBTPaymentMethodNonce
- Update all methods on
BTAppSwitchDelegate
to be optional - Remove
options
andsourceApplication
params onBTAppSwitch
methods
- Remove the
- PaymentFlow
- Update dismiss button style from done to cancel for
SFSafariViewController
s presented via theBTPaymentFlowDriver
. This update applies to both the 3D Secure and Local Payments payment flows. - Remove the
localizedDescription
property onBTLocalPaymentResult
- Remove unused
BTPaymentFlowDriverErrorTypeInvalidRequestURL
option fromBTPaymentFlowDriverErrorDomain
- Update dismiss button style from done to cancel for
- PayPal
- Remove PayPalOneTouch and PayPalUtils modules
- Remove
authorizeAccountWithCompletion
andauthorizeAccountWithAdditionalScopes
methods fromBTPayPalDriver
- Remove
requestOneTimePayment
andrequestBillingAgreement
overloads with customhandler
parameters fromBTPayPalDriver
- Remove
viewControllerPresentingDelegate
property fromBTPayPalDriver
- Remove use of
SFSafariViewController
from PayPal flow - Replace deprecated
SFAuthenticationSession
withASWebAuthenticationSession
in PayPal flow - Update
requestBillingAgreement
andrequestOneTimePayment
completion blocks to return an error when user cancels the PayPal flow - Remove custom URL scheme requirement for PayPal flow
- Update
BTPayPalDriverErrorType
enum- Remove
BTPayPalDriverErrorTypeIntegrationReturnURLScheme
- Remove
BTPayPalDriverErrorTypeAppSwitchFailed
- Remove
BTPayPalDriverErrorTypeInvalidConfiguration
- Remove
- ThreeDSecure
- Remove deprecated
Braintree3DSecure
module - Restructure
BTThreeDSecureResult
andBTThreeDSecureLookup
- Create a stand-alone 3DS module
- Remove deprecated
- PayPalDataCollector
- Add
PPRiskMagnes.framework
andPPRiskMagnes.xcframework
v5.0.1 (requires Swift 5.1+) - Remove
collectPayPalDeviceInfoWithClientMetadataID
method onPayPalDataCollector.h
- Add
- Update CardinalMobile.framework to v2.2.4-1
- Exclude arm64 simulator architectures via Podspec (fixes Drop-In #233)
- Add
cardholderName
toBTCardNonce
- Add support for
PKPaymentNetworkMaestro
to Apple Pay configuration
- Update CardinalMobile.framework to v2.2.3-1
- Add
expirationMonth
andexpirationYear
toBTCardNonce
- Update PPDataCollector
- Add
environment
property toBTPayPalUAT
- Add support for iOS 13 SceneDelegate to
BTAppSwitch
- Add
lastFour
property toBTCardNonce
- Make
BTURLUtils.h
public - Add support for authorizing the Braintree SDK with a
PayPalUAT
(universal access token) - Remove
AddressBook.framework
from Podspec (thanks @ignotusverum) - Add
threeDSecureAuthenticationId
toBTThreeDSecureInfo
- Fix crash when
ThreeDSecureRequest
amount
field is set to NaN (resolves #507) - Update CardinalMobile.framework to v2.2.2-1 for Carthage users
- Update CardinalMobile.framework to v2.2.2-1
- Update PPDataCollector
- Add support for basic UI customization of 3DS1 flows. See
BTThreeDSecureV1UICustomization
.
- Updated CardinalMobile.framework to v2.2.1-2
- Updated CardinalMobile.framework to v2.2.1
- Fix nullability annotations on
BTPostalAddress
fields (resolves #472) - Add ability to request
AuthenticationInsight
when tokenizing a credit card, which can be used to make a decision about whether to perform 3D Secure verification - Set error message on
BTThreeDSecureInfo
when 3D Secure 2.0 challenge fails
- Fix issue when returning from the Venmo app on iOS13
- Fix crash and return error when
threeDSecureRequest.amount
isnil
and 3DS v1 is requested
- Add ability to customize UI for 3D Secure challenge views
- Add authentication and lookup transaction status information to BTThreeDSecureInfo
- Fix url parsing bug (thanks @pedrocid)
- Remove unneeded pre-processor directives
- Added new fields to BTThreeDSecureInfo
- Fixed issue with Carthage binary spec for CardinalMobile
- Add support for CardinalMobile binary only framework when using Carthage
- Update CardinalMobile to v2.1.4-2
- Fix issue distributing to App Store
- Send analytics timestamps in milliseconds
- Fix crash on apps with deployment targets without minor version (thanks @squall09s)
- Add additional fields to BTThreeDSecureInfo
- Correct importing of BTConfiguration+ThreeDSecure (thanks @ejensen)
- Add missing header documentation for BTThreeDSecureLookup
- Update CardinalMobile to v2.1.4
- Remove use of
advertisingIdentifier
- Remove use of
- Add 3DS 2 Support
- Update 3DS redirect to newest version
- Update platform to iOS 8.0 in podspec
- Remove location data from analytics collection
- Fix issue that caused a crash when 3DS auth response is invalid
- Update analytics parameters
- Update local payment endpoint
- Add Hiper and Hipercard support
- Add support for
BTPayPalLineItem
- Fix build issue for Demo app
- Fix occasional crash in
libPPRiskComponent.a
- Fix minimum iOS version in
libPPRiskComponent.a
- Update
libPPRiskComponent.a
to latest version
- Luhn validate UnionPay cards
- Luhn-invalid UnionPay cards were previously rejected server side rather than client side
- Fix retain cycle when ovewriting an NSURLSession
- Update
PayPalDataCollector
to include latestlibPPRiskComponent.a
- Update properties on BTLocalPaymentRequest
- Add optional merchantAccountId to BTPayPalRequest
- Add openVenmoAppPageInAppStore to BTVenmoDriver
- Add BTLocalPayment to BTPaymentFlow
- Replaces the BTIdeal integration
- Update GraphQL URLs
- Add shippingAddressEditable flag to BTPayPalRequest
- Fix issue where address override was not set for PayPal billing agreements
- Use angled brackets for BraintreeVenmo header imports (thanks @vicpenap)
- 3D Secure
- Add support for American Express SafeKey params
- Ensure animations are consistent for PayPal SFSafariViewController flow (thanks @nudge)
- Update header documentation
- Add BTAppSwitchDelegate events
appContextWillSwitch
andappContextDidReturn
- Addresses the issue that notifications were inconsistent across app switches #383
- Update
PayPalDataCollector
to include latestlibPPRiskComponent.a
- Add support for Venmo profiles
- Fix demo app issue with CocoaPods
- Fix code for implicit retain self warning (thanks @keith)
- Add BTThreeDSecureInfo to BTCardNonce
- Use angled brackets for BraintreePayPal header imports (thanks @nudge)
- Add iDEAL support
- Add new 3D Secure integration with browser support
- Fix issue where ApplePay nonces were not having their default property set (Thanks @rksaraf)
- Fix issue where Venmo attempted to vault when using a Tokenization Key
- Fix a timeout issue on configuration fetch
- Static analysis fixes
- Add BraintreeAmericanExpress module and getRewardsBalance method
- Fix Xcode9 compatibility issues with iOS 7.0
- Update Xcode 9 code for availability checking
- Fix analytics thread issue
- Fix Xcode9 build warnings
- Add additional billing address params to card builder
- Country Code Alpha 3
- Country Code Numeric
- Company
- Extended Address
- Update libPPRiskComponent to latest version
- Add support for
SFAuthenticationSession
for PayPal payments
- Add firstName and lastName to BTCard
- Add additional bin data to card based payment methods
- Fix bug that caused a crash on iOS11 (Beta 3) when using a Tokenization Key in production (Thanks @peterstuart)
- Update to Kount 3.2
- Update Demo to support Xcode9 (Beta 1) and iOS11
- Update README
- Fix Pay with Venmo bug
- Add PayPal Credit support to PayPal Billing Agreements flow
- Add V3 Client Token support
- Enable client side vaulting of Venmo nonces
- Fix potential memory leak issue #312
- Fix bug causing random crashes in 3DS flow #329
- Optimize BTAPIClient:initWithAuthorization: when using a client token
- Fix invalid documentation tags
- Enable PayPal Credit
- Add support for
displayName
andlanding_page_type
PayPal options - Fix issue with 3DS error callbacks #318
- Resolve build error in Xcode 8.3
- Fix issue where PayPal correlation_id was not set correctly
- Add support for custom PayPal authentication handler
- Update docs to specify Xcode 8+ requirement
- Fix header import in BTAnalyticsMetadata.m
- Additional tuning for Travis CI
- Update UnitTests to Swift 3
- Update PayPal header docs
- Update CocoaDocs and remove styling
- Allow
BraintreeCore
to be compatible with App Extensions - Fix
BraintreePayPal
use ofqueryItems
for iOS 7 compatibility - Present SFSafariViewControllers from the top UIViewController via Drop-in to avoid blank SFSafariViewController
- Set
BTPaymentRequest
presentViewControllersFromTop
toYES
to opt in to this behavior
- Set
- Fix
@param
warning for incorrect argument name - Fix CocoaDocs and add styling
- Update Apple-Pay
- Fix issue when using
BTConfiguration:applePaySupportedNetworks
withDiscover
enabled on devices<iOS 9
- Add
BTApplePayClient:paymentRequest:
- creates aPKPaymentRequest
with values from your Braintree Apple Pay configuration
- Fix issue when using
- Update documentation and README
- Update to Kount 3.1
- Update libPPRiskComponent to latest version
- Refactored ACKNOWLEDGEMENTS.md with links instead of text
- Re-add new Drop-In demo from BraintreeDropIn
- Fix fbinfer warnings
- Move
BraintreeDropIn
andBraintreeUIKit
to a new separate repository to allow cleaner separation and iteration for newer versions of Drop-In.- Please see the new repository for updated integration instructions if you were using the Beta Drop-In Update.
- If you were using Drop-In from
BraintreeUI
, you do not have to update. However, you may want to check out the new Drop-In for an updated experience.
- Fix issue with
DataCollector
setting the merchant ID automatically to configure Kount
- Fix conflicting private API name Fixes #265
- Fix deprecation warnings for Xcode 8 Fixes #267
- Fix target membership for static library Fixes #264
- Improve Maestro card number recognition
- Fix nullability annotations for Xcode 8 Fixes #260
- Add
userAction
property toBTPayPalRequest
- (BETA) Updates to
BraintreeDropIn
- Update
DataCollector
API- Add initializer and new data collection methods that take a completion block
- New data collection methods use Braintree gateway configuration to configure Kount
- Previous API for
BTDataCollector
has been deprecated
- Add initializer and new data collection methods that take a completion block
- Remove Venmo user whitelist β all Venmo users may now make merchant purchases using Venmo.
- Update and fix issues in
BraintreeDropIn
based on feedback - Make more headers public in
BraintreeUIKit
- Fix
BraintreeUIKit
module name for Cocoapods - Add support for 3D Secure to
BraintreeDropIn
(see Drop-In docs) - Update the Drop-In docs
- Add features to support vaulting Venmo when using Drop-In (coming soon)
- (BETA) Release of new
BraintreeDropIn
andBraintreeUIKit
frameworksBraintreeDropIn
bundles our new UI components and Braintree API's for a whole new Drop-In experience- UI components, helpers, vector art and localizations are now public and fully accessible via
BraintreeUIKit
- Learn more about our Drop-In Update
- Note that our legacy Drop-In (
BraintreeUI
) has not changed
- (BETA) Various updates to the UnionPay component
- Improve error messages when Braintree gateway returns 422 validation errors
- Update Pay with Venmo to use merchant ID and environment from configuration
- PayPal Checkout supports an intent option, which can be authorize or sale
- See
BTPayPalRequest
'sintent
property
- See
- Provide better
NSError
descriptions when Braintree services return a 4xx or 5xx HTTP error
- Add public method to fetch a customer's vaulted payment method nonces
- Drop-in bug fixes
- Do not show mobile phone number field
- Fix issue where American Express display text is truncated
- Merge #241 - Add missing source files to Braintree static library target. (Thanks @AlexDenisov!)
- Add support for UnionPay cards
- UnionPay is now in private beta. To request access, email [email protected].
- Drop-in displays vaulted payment methods by default first
- Payment method nonces have an
isDefault
property
- Payment method nonces have an
- Add
BTHTTPErrorCodeRateLimitError
to indicate when Braintree is rate-limiting your app's API requests - Update support for static library integrations
- Fix issues with missing classes in the Braintree static library target
- Add guide for Static Library integrations
- Use in-memory
NSURLCache
for configuration caching - Analytics events are batched together for better performance
- Update theme of card form child components when using custom theme
PayPalOneTouch
is less chatty when logging to console- Add ACKNOWLEDGEMENTS.md
- Update
PayPalDataCollector
to include latestlibPPRiskComponent.a
- Remove unused targets and schemes:
Demo-StaticLibrary
,UnitTests-CocoaPods
, andUnitTests-StaticLibrary
- Remove assertion from PayPal One Touch Core when reading from Keychain fails
- Remove NSLog() from PayPal One Touch Core
- Fix nullability annotation in
PPFPTITracker.h
to squelch error in Xcode 7.3 Beta
- Fix crash that occurs when downgrading Braintree from 4.2.x to previous versions
- Fix deprecation warning/error in PayPal One Touch for apps that target >= iOS 9.0
- Open source PayPal One Touch library
- Source code for PayPal One Touch library is now included in Braintree iOS SDK repository
- Added CocoaPods subspecs for PayPalOneTouch and PayPalDataCollector
- Improve
BTPaymentButton
- Payment button displays payment options based on configuration
- Shows loading activity indicator when fetching configuration
- Updated style for PayPal button when PayPal is the only available payment option
- Can manually configure available payment options via
enabledPaymentOptions
property
- Added
setCardNumber:
andsetCardExpirationMonth:year:
toBTDropInViewController
- Drop-in card form can be prepopulated, e.g. by card.io
- Deprecate
BTDataCollector
payPalClientMetadataID
andcollectPayPalClientMetadataId
- Use
PPDataCollector
collectPayPalDeviceData
when you only need to collect PayPal device data
- Use
- Add Travis CI to run tests
- Prevent crash when
BTPayPalDriver
instantiatesSFSafariViewController
with an invalid URL, and return an error instead - Update
BTTokenizationService
allTypes
property to beNSArray <NSString *>
- Workaround for Swift compiler bug that causes
BTJSON
to conflict with Alamofire (see Issue #195)- For the merchant apps that read their configuration directly from
BTJSON
via Objective-C, you may need to switch from dot syntax to square brackets to callBTJSON
methods
- For the merchant apps that read their configuration directly from
- Ignore
UIAlertView
deprecation warning inBTDropInErrorAlert
- Bug fix for Drop-in view controller showing empty
BTPaymentButton
- Update Kount to 2.6.2
- Limited release of Pay With Venmo
- Contact [email protected] if you are interested in early access
- Fix for Carthage integrations: remove reference to Braintree developer team from Xcode framework targets
- Streamlined vector graphics for JCB logo to reduce build time of BraintreeUI
- If the Client Token has a Customer ID, Drop-in will automatically fetch the customer's vaulted payment methods.
- A bug in 4.0.0-4.0.1 prevented Drop-in from fetching payment methods even if a Customer ID is provided in the Client Token; apps needed to call
fetchPaymentMethodsOnCompletion
before presenting Drop-in. - You can still call
fetchPaymentMethodsOnCompletion
to pre-fetch payment methods, so that Drop-in doesn't need to show its own loading activity indicator.
- A bug in 4.0.0-4.0.1 prevented Drop-in from fetching payment methods even if a Customer ID is provided in the Client Token; apps needed to call
- Prevent calling requestsDismissalOfViewController on iOS 8 when there is nothing to dismiss. (Merge #199 - thanks, @Reflejo!)
- Drop-in Add Payment Method fixes
- Show/hide CVV and postal code fields without flicker
- Use Save bar button item in upper right to add additional payment methods
BTPayPalDriver
will not callBTAppSwitchDelegate
callback methods whenSFSafariViewController
is presented (Issue #188)
- Drop-in fixes
- Fixed a bug that prevented cards from being vaulted.
- Fixed a bug that prevented card types from being parsed.
- Updated Demo to use paymentRequest and always call completionBlock.
- Resolved an analyzer warning in BTAPIClient.m.
- Remodel the iOS SDK into frameworks with smaller filesize and greater flexibility.
- The public API has changed significantly in this release. For details, see the v4 Migration Guide and the public header files.
- APIs have been refactored to use completion blocks instead of delegate methods.
- BTPaymentProvider has been removed. Instead, use payment option frameworks. For example, import BraintreeApplePay and use BTApplePayClient.
- Added support for Tokenization Keys in addition to Client Tokens.
- All methods and properties have been updated with nullability annotations.
- Added support for Carthage in addition to CocoaPods.
- PayPal One Touch is greatly improved in this release. It's slimmer and provides a better user experience, with browser switch on iOS 8 and SFSafariViewController on iOS 9.
- Added support for PayPal billing agreements (the New Vault Flow) and one-time payments.
- Drop-in is now part of the new BraintreeUI framework. BraintreeUI has been refactored for greater flexibility; it will automatically exclude any payment options that are not included in your build (as determined by CocoaPods subspecs or Carthage frameworks).
- Venmo One Touch has been excluded from this version. To join the beta for Pay with Venmo, contact Braintree Support.
- BTData has been renamed to BTDataCollector.
- BTPaymentMethod has been renamed to BTPaymentMethodNonce.
As always, feel free to open an Issue with any questions or suggestions that you have.
- Ignore
UIAlertView
deprecation warning inBTDropInErrorAlert
- Update Kount DeviceCollectorSDK to v2.6.2 to fix #175 (thanks, @keith)
- Add runtime checks before using new features in Apple Pay iOS 9
- Bug in 3.9.4 caused
shippingContact
,billingContact
, andpaymentMethod
to be used on < iOS 9 devices, which causes unrecognized selector crashes
- Bug in 3.9.4 caused
- π¨ This version requires Xcode 7 and iOS SDK 9.0+
- Update README.md and Braintree Demo app for iOS 9 and Xcode 7
- Update PayPal mSDK to 2.12.1 with bitcode
- Update Kount library with bitcode support
- Update Apple Pay support for iOS 9.
BTApplePayPaymentMethod
changes:- Deprecate
ABRecordRef
properties:billingAddress
andshippingAddress
- Add
PKContact
properties:billingContact
andshippingContact
- Deprecate
- PayPal
- Fix canOpenUrl warnings in iOS9
- Added
PayerId
andClientMetadataId
toBTPayPalPaymentMethod
- PayPal
- Fix Billing Agreements support
- Update PayPal One Touch Core
- PayPal
- Update support for PayPal Checkout
- Add support for PayPal Billing Agreement authorization
- Update PayPal One Touch Core
- PayPal
- For single payments,
BTPayPalPaymentMethod
now providesfirstName
,lastName
,phone
,billingAddress
, andshippingAddress
properties. - For future payments, add support for additional scopes.
- Add demo for PayPal Checkout and scopes.
- For single payments,
- Change @import to #import (#124).
- Add accessibility label to BTUICTAControl.
- Replace mSDK with One Touch Core
- This replaces PayPal in-app login with browser switch for future payments consent
- This adds the capability to perform checkout (single payments) with One Touch
- Xcode 7 support
- Improved Swift interface with nullability annotations and lightweight generics
- Update PayPal mSDK to 2.11.4-bt1
- Remove checking via canOpenURL:
- Bug fix for
BTPaymentButton
edge case where it choose the wrong payment option when the option availability changes after UI setup.
- π¨ This version requires Xcode 6.3+ (otherwise you'll get duplicate symbol errors)
- π¨ New:
Accelerate.framework
must be linked to your project (CocoaPods should do this automatically) - Remove Coinbase CocoaPods library as an external dependency
- Integrating Coinbase SDK is no longer a prerequisite for manual integrations
- No change to Braintree Coinbase support; existing integrations remain unaffected
- Braintree iOS SDK now vendors Coinbase SDK
- Add session ID to analytics tracking data
- Add
BTPayPalScopeAddress
- Update PayPal mSDK to 2.11.1-bt1
- Requires Xcode 6.3+
- Fix an iPad display issue
- Improve mSDK screen blurring when app is backgrounded. NOTE: This change requires that you add
Accelerate.framework
to your project - Bug fixes
- Add support for additional scopes during PayPal authorization
- Specifically supporting the
address
scope - BTPayPalPaymentMethod now has a
billingAddress
property that is set when an address is present. This property is of typeBTPostalAddress
.
- Specifically supporting the
- Fix bug in Demo app
- Menu button now works correctly
- Fix bug with PayPal app switching
- The bug occurred when installing a new app after the Braintree SDK had been initialized. When attempting to authorize with PayPal in this scenario, the SDK would switch to the
wallet
and launch thein-app
authorization.
- The bug occurred when installing a new app after the Braintree SDK had been initialized. When attempting to authorize with PayPal in this scenario, the SDK would switch to the
- 3D Secure only: π¨ Breaking API Changes for 3D Secure π¨
- Fix a bug in native mobile 3D Secure that, in some cases, prevented access to the new nonce.
- Your delegate will now receive
-paymentMethodCreator:didCreatePaymentMethod:
even when liability shift is not possible and/or liability was not shifted. - You must check
threeDSecureInfo
to determine whether liability shift is possible and liability was shifted. This property is now of typeBTThreeDSecureInfo
. Example:
- (void)paymentMethodCreator:(__unused id)sender didCreatePaymentMethod:(BTPaymentMethod *)paymentMethod {
if ([paymentMethod isKindOfClass:[BTCardPaymentMethod class]]) {
BTCardPaymentMethod *cardPaymentMethod = (BTCardPaymentMethod *)paymentMethod;
if (cardPaymentMethod.threeDSecureInfo.liabilityShiftPossible &&
cardPaymentMethod.threeDSecureInfo.liabilityShifted) {
NSLog(@"liability shift possible and liability shifted");
} else {
NSLog(@"3D Secure authentication was attempted but liability shift is not possible");
}
}
}
- Important: Since
cardPaymentMethod.threeDSecureInfo.liabilityShiftPossible
andcardPaymentMethod.threeDSecureInfo.liabilityShifted
are client-side values, they should be used for UI flow only. They should not be trusted for your server-side risk assessment. To require 3D Secure in cases where the buyer's card is enrolled for 3D Secure, set therequired
option totrue
in your server integration. See our 3D Secure docs for more details.
- Work around iOS 8.0-8.2 bug in UITextField
- Fix subtle bug in Drop-in and BTUICardFormView float label behavior
- It is now possible to set number, expiry, cvv and postal code field values programmatically in BTUICardFormView
- This is useful for making the card form compatible with card.io
- Upgrade PayPal mSDK to 2.10.1
- Revamp Demo app
- Merge with 3.7.x changes
- Coinbase improvements
- Resolved: Drop-in will now automatically save Coinbase accounts in the vault
- Coinbase accounts now appear correctly in Drop-in
- Expose method to disable Coinbase in Drop-in
- Demo app: Look sharp on iPhone 6 hi-res displays
- Modified
BTUIPayPalWordmarkVectorArtView
,BTUIVenmoWordmarkVectorArtView
slightly to help logo alignment inBTPaymentButton
and your payment buttons
- Coinbase integration - beta release
- Coinbase is now available in closed beta. See the Coinbase page on our website to join the beta.
- Coinbase UI is integrated with Drop-in and BTPaymentButton
- Known issue: Drop-in vaulting behavior for Coinbase accounts
- [Internal only] Introduced a new asynchronous initializer for creating the
Braintree
object
- Bugfixes
- Fix recognition of Discover, JCB, Maestro and Diners Club in certain cases (Thanks, @RyPoints!)
- Fix a bug in Drop-in that prevented Venmo from appearing if PayPal was disabled
- Revise text for certain Venmo One Touch errors in Drop-in
- Fix compile error that could occur when 'No Common Blocks' is Yes
- Demo app
- Look sharp on iPhone 6 hi-res displays
- Improve direct Apple Pay integration: use recommended tokenization method and handle Cancel gracefully
- Update tooling for Xcode 6.3
- Improve Apple Pay error handling
- Localization helpers now fall-back to [NSBundle mainBundle] if the expected i18n bundle resource is not found
- Update PayPal Mobile SDK to new version (PayPal-iOS-SDK 2.8.5-bt1)
- Change "Send Payment" button to simply "Pay"
- Minor fixes
- Remove
en_UK
from Braintree-Demo-Info.plist (while keepingen_GB
) - Fix for Venmo button in BTPaymentButton #103
- Fix issue with wrapping text in Drop-in (thanks nirinchev)
- Update manual integration doc
- Refactor and improve SSL Pinning code
- Update PayPal Mobile SDK to new version (PayPal-iOS-SDK 2.8.4-bt1) that does not include card.io.
-
π¨ Please note! π¨
This change breaks builds that depend on a workaround introduced in 3.4.0 that added card.io headers to fix card.io duplicate symbol issues.
Since card.io is not officially part of the Braintree API, and since the headers were only included as part of a workaround for use by a small group of developers, this potentially-breaking change is not accompanied by a major version release.
If your build breaks due to this change, you can re-add card.io to your project's Podfile:
pod 'CardIO', '~> 4.0'
And adjust your card.io imports to:
#import <CardIO/CardIO.h>
-
- Fixes
- Remove
GCC_TREAT_WARNINGS_AS_ERRORS
andGCC_WARN_ABOUT_MISSING_NEWLINE
config from podspec.
- Remove
- Features
- Beta support for native mobile 3D Secure
- Requires additional import of a new subspec in your Podfile,
pod "Braintree/3d-secure"
- See
BTThreeDSecure
for full more details
- Requires additional import of a new subspec in your Podfile,
- Make Apple Pay a build option, enabled via
Braintree/Apple-Pay
subspec, which adds aBT_ENABLE_APPLE_PAY=1
preprocesor macro.
- Beta support for native mobile 3D Secure
- Enhancements
- Minor updates to UK localization
- Expose a new
status
property onBTPaymentProvider
, which exposes the current status of payment method creation (Thanks, @Reflejo!)
- Bug fixes
- Internal changes
- Simplifications to API response parsing logic
- Add localizations to UI and Drop-in subspecs:
- Danish (
da
) - German (
de
) - Additional English locales (
en_AU
,en_CA
,en_UK
,en_GB
) - Spanish (
es
andes_ES
) - French (
fr
,fr_CA
,fr_FR
) - Hebrew (
he
) - Italian (
it
) - Norwegian (
nb
) - Dutch (
nl
) - Polish (
pl
) - Portugese (
pt
) - Russian (
ru
) - Swedish (
sv
) - Turkish (
tr
) - Chinese (
zh-Hans
)
- Danish (
- Add newlines to all files to support
GCC_WARN_ABOUT_MISSING_NEWLINE
- Upgrade PayPal Mobile SDK to version 2.7.1
- Fixes symbol conflicts with 1Password
- Upgrades embedded card.io library to version 3.10.1
- Bug fixes
- Remove duplicate symbols with 1Password SDK by upgrading internal PayPal SDK
-
Features
- Stable Apple Pay support
- New method in
Braintree
for tokenizing aPKPayment
into a nonce- This is useful for merchants who integrate with Apple Pay using
PassKit
, rather thanBTPaymentProvider
- This is useful for merchants who integrate with Apple Pay using
BTPaymentProvider
support for Apple PayBTApplePayPaymentMethod
with nonce and address information
- New method in
BTData
now includes PayPal application correlation ID in device data blob- Card.IO headers are now included in SDK
- In-App PayPal login now supports 1Password
- Stable Apple Pay support
-
API Changes and Deprecations
-[Braintree tokenizeCard:completion:]
and-[BTClient saveCardWithRequest:success:failure:]
now take an extensible "request" object as an argument to pass the various raw card details:- The previous signatures that accepted raw details in the arguments are now deprecated.
- These will be removed in the next major version (4.0.0).
-
Integration
- This SDK now officially supports integration without CocoaPods
- Please see
docs/Manual Integration.md
- Report bugs with these new integration instructions via Github
- Please see
- Project Organization
- All library code is now located under
/Braintree
- All library code is now located under
- This SDK now officially supports integration without CocoaPods
-
Bug fixes
- Fix a number of minor static analysis recommendations
- Avoid potential nil-block crasher
- Fix iOS 8
CoreLocation
deprecation inBTData
- Fix double-dismisal bug in presentation of in-app PayPal login in Drop-in
-
New minimum requirements
- Xcode 6+
- Base SDK iOS 8+ (still compatible with iOS 7+ deployment target)
- Enhancements
- Update Kount library to 2.5.3, which removes use of IDFA
- Use @import for system frameworks
- Fixes
- Crasher in Drop-in that treats BTPaymentButton like a UIControl
- Xcode 6 and iOS 8 deprecations
- Bug in BTPaymentButton intrinsic size height calculation
- Autolayout ambiguity in demo app
-
Features
- App switch based payments for Venmo and PayPal ("One Touch")
- New methods for registering a URL Scheme:
+[Braintree setReturnURLScheme:]
and+[Braintree handleOpenURL:]
- PayPal continues to have a view controller option for in-app login
- Both providers can be enabled via the Control Panel and client-side overrides
- See the docs for full upgrade instructions
- New methods for registering a URL Scheme:
- Unified Payment Button (
BTPaymentButton
) for Venmo and/or PayPal payments- New UI and API designs for PayPal button
- All new Venmo button
- Unified mechanism for custom (headless) multi-provider payments (
BTPaymentProvider
)
- App switch based payments for Venmo and PayPal ("One Touch")
-
Enhancements
- Minor fixes
- Test improvements
- Internal API tweaks
- Update PayPal implementation to always support PayPal display email/phone across client and server
- Your PayPal app (client ID) must now have the email scope capability. This is default for Braintree-provisioned PayPal apps.
- Improved Braintree-Demo app that demonstrates many integration styles
- Upgraded underlying PayPal Mobile SDK
-
Deprecations (For each item: deprecated functionality -> suggested replacement)
BTPayPalButton
->BTPaymentButton
-[Braintree payPalButtonWithDelegate:]
->-[Braintree paymentButtonWithDelegate:]
BTPayPalButtonDelegate
->BTPaymentCreationDelegate
-
Known Issues
- Crasher when app switching to Venmo and
CFBundleDisplayName
is unavailable.- Workaround: add a value for
CFBundleDisplayName
in yourInfo.plist
- Workaround: add a value for
- Crasher when app switching to Venmo and
- Update BTData (fraud) API to match Braintree-Data.js
- New method
collectDeviceData
provides a device data format that is identical to the JSON generated by Braintree-Data.js
- New method
- Minor improvements to developer demo app (Braintree Demo)
- Fix another PayPal payment method display issue in Drop-in UI
- Fixes
- Minor internationalization issue
- PayPal payment method display issue in Drop-in UI
- Enhancements
- Accept four digit years in expiry field
- Internationalize
- Support iOS 8 SDK
- Integration changes
- Merge
api
andAPI
directory content - Deprecate
savePaypalPaymentMethodWithAuthCode:correlationId:success:failure
in favor ofsavePaypalPaymentMethodWithAuthCode:applicationCorrelationID:success:failure
- Merge
- Integration Change:
Braintree/data
is no longer a default subspec. If you are currently usingBTData
, please addpod "Braintree/data"
to yourPodfile
.
- Enhancements
- Add support for PayPal Application Correlation ID
Initial release of 3.0.0
https://www.braintreepayments.com/v.zero
- Enhancements since rc8
- Added details to DEVELOPMENT.md
- Updated demo app to not use removed card properties
- Updated PayPal acceptance tests
- Breaking Change
- Renamed a method in
BTDropInViewControllerDelegate
to send cancelation messages to user. All errors within Drop-in are now handled internally with user interaction. - Removed completion block interface on
BTDropInViewController
- Removed crufty
BTMerchantIntegrationErrorUnknown
which was unused
- Renamed a method in
- Enhancements
- Added basic analytics instrumentation
- Improved Drop-in's error handling
- BTPayPalPaymentMethod now implements
NSMutableCopying
-
Breaking Change
- Based on feedback from our beta developers, we have removed the block-based interfaces from
Braintree and BTPayPalButton.
- If you were previously relying on the completion block for receiving a payment method nonce, you should replace that code with a delegate method implementation which reads the nonce from the BTPaymentMethod object it receives.
- Based on feedback from our beta developers, we have removed the block-based interfaces from
Braintree and BTPayPalButton.
-
Bug fixes:
- Fix Braintree/PayPal subspec build
-
Bug fixes:
- Fix issue with incorrect nesting of credit-card params in API requests, which caused incorrect behavior while validating credit cards in custom and Drop-in.
- Bugfixes and improvements to demo app
- Fix crasher in demo app when PayPal is not enabled
- Demo App now points to a publicly accessible merchant server
-
Enhancements:
- Drop-in now supports server-side validation, including CVV/AVS verification failure
- Drop-in's customer-facing error handling is now consistent and allows for retry
- Increased robustness of API layer
-
Features:
- π
BTData
- Advanced fraud solution based on Kount SDK
- π
- π¨ Remove dependency on AFNetworking!
- π¨ Rename
BTPayPalControl
->BTPayPalButton
. - Security - Enforce SSL Pinning against a set of vendored SSL certificates
- Drop-in
- Improve visual customizability and respect tint color
- UI and Layout improvements
- Detailing and polish
- UI
- Float labels on credit card form fields
- Vibration upon critical validation errors π³
Thanks for the feedback so far. Keep it coming!
- UX/UI improvements in card form and Drop-in
- PayPal button and payment method view are full width
- Vibration on invalid entry
- Improved spinners and loading states
- Detailing and polish
- Add support for v2 client tokens, which are base64 encoded
- Reverse compatibility with v1 client tokens is still supported
- Clean up documentation
- Fix crashes when adding PayPal an additional payment method, when displaying PayPal as a payment method, and in offline mode
- Add
dropInViewControllerWillComplete
delegate method. - Add transitions, activity indicators, and streamline some parts of UI.
- Simplify implementation of
BTPayPalButton
. - π¨ Remove
BTDropInViewController shouldDisplayPaymentMethodsOnFile
property.
- π¨ Breaking API Changes π¨
- Reduce BTPayPalButton API
- Rename a number of classes, methods, and files, e.g.
BTCard
->BTCardPaymentMethod
.
- First release candidate of the 3.0.0 version of the iOS SDK.
- Known issues:
- Pre-release public APIs
- SSL pinning not yet added
- Incomplete / unpolished UI
- Minor UX card validation issues in the card form
- Drop-in UX flow issues and unaddressed edge cases