- Merge public master
- 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
- Fix swift build by making BTClient_Metadata.h private (braintree#84 and braintree#85)
- Drop-in - Auto-correction and auto-capitalization improvements for postal code field in BTUICardFormView
- Remove private header
BTClient_Metadata.h
from public headers
- 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