- ThreeDSecure
- Bump Cardinal version to
2.2.6-2
- Bump Cardinal version to
- Add
invalidateClientToken
method toBraintreeClient
(thanks @josephyanks) - Add
isExplicitCancelation
parameter toUserCanceledException
- Trim tokenization key and client token before parsing
- DataCollector
- Use configuration environment to set Magnes environment correctly
- ThreeDSecure
- Support AndroidX and remove Jetifier requirement (fixes #315)
- Bump Cardinal version to
2.2.6-1
- Fix null pointer error in V2 UI customization
- Deprecate
ThreeDSecureV2BaseCustomization
- Deliver browser switch result asynchronously on main thread
- SamsungPay
- Support AndroidX and remove Jetifier requirement
- Local Payment
- Deliver browser switch result asynchronously on main thread
- PayPal
- Deliver browser switch result asynchronously on main thread (fixes #500)
- Braintree Core
- Add
ClientTokenProvider
interface for asynchronously fetching client token authorization - Add new
BraintreeClient
constructors that acceptClientTokenProvider
- Update pinned certificates used by
BraintreeGraphQLClient
- Add
- Google Pay
- Add
GooglePayListener
to receive results from the Google Pay flow - Deprecate methods requiring a callback in favor of listener pattern
- Add
- ThreeDSecure
- Add
ThreeDSecureListener
to receive results from the 3DS flow - Deprecate methods requiring a callback in favor of listener pattern
- Add
- Venmo
- Add
VenmoListener
to receive results from the Venmo flow - Deprecate methods requiring a callback in favor of listener pattern
- Add
- PayPal
- Add
PayPalListener
to receive results from the PayPal flow - Deprecate methods requiring a callback in favor of listener pattern
- Add
- Local Payment
- Add
LocalPaymentListener
to receive results from the Local Payment flow - Deprecate methods requiring a callback in favor of listener pattern
- Add
- PayPal
- Fix issue where billing agreement description was not showing (fixes #509)
- Venmo
- Fix issue where null value causes VenmoAccountNonce#fromJSON() to throw.
- GooglePay
- Deprecate
googleMerchantId
- Bump
play-services-wallet
version to18.1.3
- Deprecate
- SharedUtils
- Use byte array to hold
HttpRequest
data. Dispose data immediately after making http request.
- Use byte array to hold
- BraintreeCore
- Bump
browser-switch
version to2.1.1
- Bump
- SharedPreferences
- Encrypt shared preferences data stored by SDK (fixes #440)
- Local Payments
- Add
displayName
toLocalPaymentRequest
- Add
- DataCollector
- Fix memory leak from
PayPalDataCollector
(fixes #419)
- Fix memory leak from
- Local Payments
- Add
displayName
toLocalPaymentRequest
- Add
- PayPal
- Fix issue that caused user cancelations from PayPal browser flow to be incorrectly reported as failures
- Venmo
- Make
VenmoRequest
parcelable
- Make
- ThreeDSecure
- Make
pareq
optional onThreeDSecureLookup
- Make
- Android 12 Support
- Upgrade
targetSdkVersion
andcompileSdkVersion
to API 31 - Bump
browser-switch
version to2.1.0
- Fix issue where Venmo app is not detected on Android 12 devices
- Upgrade
- BraintreeCore
- Add
BraintreeClient
constructor to allow a custom return url scheme to be used for browser and app switching
- Add
- BraintreeDataCollector
- Bump Magnes dependency to version 5.3.0
- Add
BraintreeCore
as anapi
dependency (Fixes #437)
- SamsungPay
- Add additional alias for Amex in
SamsungPay
(fixes #430)
- Add additional alias for Amex in
- ThreeDSecure
- Fix issue that causes
ThreeDSecureRequest
to throw aNullPointerException
when parceling.
- Fix issue that causes
- Core
- Bump
browser-switch
version to2.0.2
- Bump
- SamsungPay
- Add
SamsungPayClient
- Add
SamsungPayClient#goToUpdatePage()
- Add
SamsungPayClient#activateSamsungPay()
- Add
SamsungPayClient#isReadyToPay()
- Add
SamsungPayClient#startSamsungPay()
- Add
SamsungPayClient#buildCustomSheetPaymentInfo()
- Add
SamsungPayClient#updateCustomSheet()
- Add
- Core
- Make
Configuration#getSupportedCardTypes()
public
- Make
- ThreeDSecure
- Make
ThreeDSecureResult#getLookup()
public - Bump Cardinal version to
2.2.5-4
- Add
cardAddChallengeRequested
toThreeDSecureRequest
- Make
- Add
VenmoClient#isReadyToPay()
method - Bump
browser-switch
to2.0.1
(fixes #409)
- Bump Cardinal version to
2.2.5-3
Note: The credentials for integrating with 3DS have changed. If you are using 3DS please update the credentials in your app-level build.gradle
see v4 Migration Guide
- Make
PayPalRequest
and subclassesParcelable
- Add getters to data classes to improve support for Kotlin synthesized properties
- Add
displayName
property toVenmoRequest
- Bump
browser-switch
to2.0.0
- Breaking Changes
- Rename
LocalPaymentTransaction
toLocalPaymentResult
- Rename
LocalPaymentClient#approveTransaction()
toLocalPaymentClient#approvePayment()
- Make
PayPalCreditFinancing#fromJson()
package-private - Make
PayPalCreditFinancingAmount#fromJson()
package-private - Make
UnionPayCapabilities#fromJson()
package-private - Make
PaymentMethodClient#parsePaymentMethodNonces()
package-private - Return
UserCanceledException
on user cancellation - Remove
DataCollector#collectPayPalDeviceData()
- Remove
DataCollector#collectRiskData()
- Make
DataCollector#getPayPalClientMetadataId()
private - Remove
PaymentMethodClient
- Remove
PaymentMethodType
- Remove
PaymentMethodDeleteException
- Remove
GetPaymentMethodNoncesCallback
- Remove
DeletePaymentMethodNonceCallback
- Use primitives instead of boxed types where possible
- Add nullability annotations to public methods
- Remove
Context
parameter fromCardClient#tokenize()
method - Fix typo in
ThreeDSecureAdditionalInformation#getPaymentAccountIndicator()
method name
- Rename
Note: Includes all changes in 4.0.0-beta1, 4.0.0-beta2, and 4.0.0-beta3
- Add
PaymentMethodType
enum - Add
PaymentMethodNonce#getType()
method - Add wallet enabled metadata tag to
AndroidManifest.xml
ingoogle-pay
module - Bump
browser-switch
to2.0.0-beta3
- Callback
BraintreeException
on user cancellation of payment flows - Add
paymentMethodUsage
toVenmoRequest
- Breaking Changes
- Rename
DownForMaintenanceException
toServiceUnavailableException
- Remove
GoogleApiClientException
- Make
BraintreeWalletConstants
package-private - Make
PaymentMethodNonceFactory
package-private - Make
GooglePayException
constructor package-private - Make
VisaCheckoutAccount
package-private - Make
VenmoAccount
package-private - Return an
IllegalArgumentException
instead ofGoogleApiClientException
toGooglePayIsReadyToPayCallback#onResult()
when activity is null - Refactor
GetPaymentMethodNoncesCallback
to have a singleonResult()
method instead ofsuccess()
andfailure()
- Remove
Context
parameter fromPaymentMethodClient#getPaymentMethodNonces
- Rename
PaymentMethodNonce#getNonce()
togetString()
- Move
VenmoAccountNonce
toVenmo
module - Move
AuthenticationInsight
toCard
module - Move
BinData
toCard
module - Move
Card
toCard
module - Move
CardNonce
toCard
module - Move
ThreeDSecureInfo
toCard
module - Move
PayPalAccountNonce
toPayPal
module - Move
PayPalCreditFinancing
toPayPal
module - Move
PayPalCreditFinancingAmount
toPayPal
module - Move
UnionPayCapabilities
toUnionPay
module - Move
UnionPayCard
toUnionPay
module - Move
VisaCheckoutAddress
toVisaCheckout
module - Move
VisaCheckoutNonce
toVisaCheckout
module - Move
VisaCheckoutUserData
toVisaCheckout
module - Remove
PaymentMethodNonce#getTypeLabel()
method - Remove
PaymentMethodNoncesCallback
- Remove
PaymentMethodNonce#getDescription()
method BraintreeClient
constructor no longer throwsInvalidArgumentException
- Make protected static member variables
OPTIONS_KEY
,OPERATION_NAME_KEY
onPaymentMethod
package-private - Make
PaymentMethod
constructor package-private - Rename
setValidate
tosetShouldValidate
and move it fromPaymentMethod
base class toCard
subclass - Make
buildJSON()
package-private forPaymentMethod
base class and all subclasses - Remove
buildGraphQL()
method fromPaymentMethod
base class and all subclasses - Make
PaymentMethod
Parcelable
constructor package-private - Make
PaymentMethod#writeToParcel()
method package-private - Make
PaymentMethod#getDefaultSource()
method package-private - Make
PaymentMethod#getDefaultIntegration()
method package-private - Make
getApiPath()
method package-private inPaymentMethod
base class and subclasses - Remove
getResponsePaymentMethodType()
method fromPaymentMethod
base class and subclasses - Make
BaseCard
class package-private
- Rename
- Add
setCountryCode
toGooglePayRequest
- Add Google Pay support for Elo cards.
- Add
VenmoRequest
- Add new classes for 3DS2 UI Customization:
ThreeDSecureV2UiCustomization
ThreeDSecureV2ButtonCustomization
ThreeDSecureV2LabelCustomization
ThreeDSecureV2TextBoxCustomization
ThreeDSecureV2ToolbarCustomization
- Add
PayPalCheckoutRequest
- Add
PayPalVaultRequest
- Add
tokenizePayPalAccount
method toPayPalClient
- Add
requestBillingAgreement
toPayPalCheckoutRequest
- Fix issue where
onBrowserSwitchResult
crashes ifbrowserSwitchResult
is null - Add
ThreeDSecureResult
- Bump
browser-switch
to2.0.0-beta2
- Breaking Changes
- Make
AmericanExpressRewardsBalance#fromJson()
package-private - Make
TYPE
andAPI_RESOURCE_KEY
inCardNonce
package-private - Make
CardNonce#fromJson()
methods package-private - Make
CardNonce
constructor package-private - Make
TYPE
,API_RESOURCE_KEY
,PAYMENT_METHOD_DATA_KEY
,TOKENIZATION_DATA_KEY
andTOKEN_KEY
inPayPalAccountNonce
package-private - Make
PayPalAccountNonce#fromJson()
methods package-private - Make
PayPalAccountNonce
constructor package-private - Make
DATA_KEY
andTOKEN_KEY
inPaymentMethodNonce
package-private - Make
PaymentMethodNonce#fromJson()
package-private - Make
PaymentMethodNonce#parsePayentMethodNonces()
methods package-private - Make
PaymentMethodNonces
constructor package-private - Make
ThreeDSecureAuthenticationResponse#fromJson()
package-private - Make
ThreeDSecureAuthenticationResponse
constructor package-private - Make
ThreeDSecureInfo#fromJson()
package-private - Make
ThreeDSecureInfo#setThreeDSecureAuthenticationResponse()
package-private - Make
ThreeDSecureLookup#fromJson()
package-private - Make
TYPE
andAPI_RESOURCE_KEY
inVenmoAccountNonce
package-private - Make
VenmoAccountNonce#fromJson()
methods package-private - Make
VenmoAccountNonce
constructor package-private - Make
VenmoAccountNonce
parcelable constructor private - Make
TYPE
andAPI_RESOURCE_KEY
inVisaCheckoutNonce
package-private - Make
VisaCheckoutNonce#fromJson()
methods package-private - Make
VisaCheckoutNonce
constructor package-private - Make
API_RESOURCE_KEY
inGooglePayCardNonce
package-private - Make
GooglePayCardNonce#fromJson()
methods package-private - Make
GooglePayCardNonce#postalAddressFromJson()
package-private - Make
GooglePayCardNonce
constructor package-private - Make
API_RESOURCE_KEY
inLocalPaymentNonce
package-private - Make
LocalPaymentNonce#fromJson()
methods package-private - Make
LocalPaymentNonce
constructor package-private - Make
GooglePayClient#tokenize()
package-private - The
shippingMethod
property onThreeDSecureRequest
is now an enum rather than a string. Possible values:SAME_DAY
EXPEDITED
PRIORITY
GROUND
ELECTRONIC_DELIVERY
SHIP_TO_STORE
- Change default
versionRequested
onThreeDSecureRequest
toThreeDSecureVersion.VERSION_2
- Rename
uiCustomization
onThreeDSecureRequest
tov2UiCustomization
and change parameter toThreeDSecureV2UiCustomization
- Update setters on
V1UiCustomization
to remove method chaining - Change Cardinal dependency from
api
toimplementation
- Replace
VenmoClient#authorizeAccount()
withVenmoClient#tokenizeVenmoAccount()
- Rename
VenmoAuthorizeAccountCallback
toVenmoTokenizeAccountCallback
- Remove
activity
parameter fromGooglePayClient#onActivityResult()
- Remove
activity
parameter fromGooglePayClient#getTokenizationParameters()
- Update
PayPalClient#requestOneTimePayment()
to expect aPayPalCheckoutRequest
and deprecate method - Update
PayPalClient#requestBillingAgreement()
to expect aPayPalVaultRequest
and deprecate method - Make
PayPalRequest
abstract - Update
PayPalRequest
setter method names and remove method chaining - Make
PayPalAccountBuilder
package-private - Remove
ThreeDSecureClient#performVerification()
convenience overload - Remove
ThreeDSecureAuthenticationResponse
- Remove
errorMessage
andthreeDSecureAuthenticationResponse
properties fromThreeDSecureInfo
- Remove
cardNonce
property fromThreeDSecureLookup
- Remove
ThreeDSecureLookupCallback
- Remove
firstName
andlastName
properties fromThreeDSecurePostalAddress
- Update
ThreeDSecureResultCallback
to expect aThreeDSecureResult
parameter - Update
ThreeDSecureClient#continuePerformVerification()
to expect aThreeDSecureResult
parameter - Update callback type in
ThreeDSecureClient#initializeChallengeWithLookupResponse
methods - Replace
CardBuilder
withCard
- Replace
BaseCardBuilder
withBaseCard
- Replace
PaymentMethodBuilder
withPaymentMethod
- Replace
UnionPayCardBuilder
withUnionPayCard
- Replace
PayPalAccountBuilder
withPayPalAccount
- Replace
VenmoAccountBuilder
withVenmoAccount
- Replace
VisaCheckoutBuilder
withVisaCheckoutAccount
- Remove builder pattern from the following classes:
PostalAddress
GooglePayRequest
ReadyForGooglePayRequest
LocalPaymentRequest
ThreeDSecureAdditionalInformation
ThreeDSecurePostalAddress
ThreeDSecureRequest
- Rename
PayPalPaymentIntent
enums:INTENT_ORDER
toORDER
INTENT_SALE
toSALE
INTENT_AUTHORIZE
toAUTHORIZE
- Remove
paymentRequested
param fromGooglePayRequestPaymentCallback
- Refactor
BraintreeClient
constructor to take aString
instead ofAuthorization
and change parameter ordering - Make
Authorization
package-private - Make
TokenizationKey
package-private - Make
ClientToken
package-private - Make
PayPalUAT
package-private
- Make
- Add
requestBillingAgreement
toPayPalRequest
- Bump Cardinal version to
2.2.5-4
- Upgrade
targetSdkVersion
andcompileSdkVersion
to API 31 - Bump
browser-switch
version to1.2.0
- Fix issue where Venmo and PayPal apps are not detected on Android 12 devices
- Revert release 3.17.3 (local repository does not propagate MPI aar file)
Remove Bintray dependency for Cardinal SDK (fixes #373 - Cardinal bintray credentials can now be removed)
- Bump Cardinal version to
2.2.5-2
- Add PayPal to
queries
element inAndroidManifest.xml
- Add Venmo to
queries
element inAndroidManifest.xml
(fixes issue in Android 11 not properly detecting if Venmo app is installed)
- Add a
client
for each feature:AmericanExpressClient
BraintreeClient
CardClient
DataCollector
GooglePayClient
LocalPaymentClient
PayPalClient
PaymentMethodClient
PreferredPaymentMethodsClient
ThreeDSecureClient
UnionPayClient
VenmoClient
VisaCheckoutClient
- Create callback interfaces to enforce callback pattern:
AmericanExpressGetRewardsBalanceCallback
CardTokenizeCallback
ConfigurationCallback
DataCollectorCallback
DeletePaymentMethodNonceCallback
GetPaymentMethodNoncesCallback
LocalPaymentBrowserSwitchResultCallback
LocalPaymentStartCallback
PayPalBrowserSwitchResultCallback
PayPalFlowStartedCallback
PreferredPaymentMethodsCallback
ThreeDSecureLookupCallback
ThreeDSecurePrepareLookupCallback
ThreeDSecureResultCallback
UnionPayEnrollCallback
UnionPayFetchCapabilitiesCallback
UnionPayTokenizeCallback
VenmoAuthorizeAccountCallback
VenmoOnActivityResultCallback
- Migrate
braintree-android-google-payment
intobraintree_android
- Migrate
braintree-android-visa-checkout
intobraintree_android
- Add
Configuration#getEnvironment()
- Add
Configuration#getPayPalPrivacyUrl()
- Add
Configuration#getPayPalUserAgreementUrl()
- Add
Configuration#isGooglePayEnabled()
- Add
Configuration#isLocalPaymentEnabled()
- Add
Configuration#isSamsungPayEnabled()
- Add
Configuration#isUnionPayEnabled()
- Add
Configuration#isVenmoEnabled()
- Add
Configuration#isVisaCheckoutEnabled()
- Update Visa Checkout aar dependency to version
6.6.1
- Add
LocalPaymentTransaction
to represent Local Payment transactions - Add
amount
setter toPayPalRequest
- Breaking Changes
- Bump
browser-switch
to2.0.0-beta1
- Change
GooglePayCapabilities#isGooglePayEnabled()
parameters - Create
american-express
module - Create
card
module - Create
local-payment
module - Create
pay-pal
module - Create
union-pay
module - Create
venmo
module - Remove PayPal
data-collector
module - Remove PayPal
paypal-one-touch
module - Remove
AmericanExpressListener
- Remove
AnalyticsIntentService
- Remove
AnalyticsSender
- Remove
AmericanExpressRewardsBalance
default constructor - Remove
amount
parameter fromPayPalRequest
constructor - Remove
approvalUrl
andpaymentId
properties fromLocalPaymentRequest
- Remove
Beta
interface - Remove
BraintreeApiError
- Remove
BraintreeApiErrorResponse
- Remove
BraintreeApiHttpClient
- Remove
BraintreeBrowserSwitchActivity
- Remove
BraintreeCancelListener
- Remove
BraintreeErrorListener
- Remove
BraintreeFragment
- Remove
BraintreeListener
- Remove
BraintreePaymentResult
- Remove
BraintreePaymentResultListener
- Remove
BrowserSwitchException
constructor - Remove
ConfigurationListener
- Remove
ConfigurationManager
- Remove
Configuration#getCardConfiguration()
- Remove
Configuration#getGraphQL()
- Remove
Configuration#getGooglePayment()
- Remove
Configuration#getKount()
- Remove deprecated 3DS
performVerification
methods - Remove
InstallationIdentifier
- Remove
LocalPaymentResult
- Remove
PaymentMethodNonceCreatedListener
- Remove
PaymentMethodNonceDeletedListener
- Remove
PaymentMethodNoncesUpdatedListener
- Remove
PaymentMethodNotAvailableException
- Remove
PayPalApprovalCallback
- Remove
PayPalApprovalHandler
- Remove
PayPalProductAttributes
- Remove
PayPalTwoFactorAuth
- Remove
PayPalTwoFactorAuthCallback
- Remove
PayPalTwoFactorAuthRequest
- Remove
PayPalTwoFactorAuthResponse
- Remove
PreferredPaymentMethodsListener
- Remove
QueuedCallback
- Remove
ThreeDSecureLookupListener
- Remove
ThreeDSecurePrepareLookupListener
- Remove
TokenizationParametersListener
- Remove
UnionPayListener
- Remove
VisaCheckoutConstants
- Remove
VisaCheckoutNotAvailableException
- Rename
AmericanExpress
toAmericanExpressClient
- Rename
Card
toCardClient
- Rename
GooglePayment
toGooglePayClient
- Rename
LocalPayment
toLocalPaymentClient
- Rename
PayPal
toPayPalClient
- Rename
PaymentMethod
toPaymentMethodClient
- Rename
PreferredPaymentMethods
toPreferredPaymentMethodsClient
- Rename
ThreeDSecure
toThreeDSecureClient
- Rename
UnionPay
toUnionPayClient
- Rename
Venmo
toVenmoClient
- Rename
VisaCheckout
toVisaCheckoutClient
- Rename
core
module toshared-utils
- Rename
LocalPaymentResult
toLocalPaymentNonce
- Rename
braintree
module tobraintree-core
- Rename
GooglePayment
classes toGooglePay
- Rename
BraintreeRequestCodes.GOOGLE_PAYMENT
toBraintreeRequestCodes.GOOGLE_PAY
- Make
AnalyticsConfiguration
package-private - Make
AnalyticsDatabase
package-private - Make
AnalyticsEvent
package-private - Make
AppHelper
package-private - Make
AppSwitchNotAvailableException
constructor package-private - Make
AuthenticationException
constructor package-private - Make
AuthorizationException
package-private - Make
BraintreeApiConfiguration
package-private - Make
BraintreeError
constructors package-private - Make
BraintreeException
package-private - Make
BraintreeGraphQLHttpClient
package-private - Make
BraintreeHttpClient
package-private - Make
BraintreeSharedPreferences
package-private - Make
BraintreeResponseListener
package-private - Make
CardConfiguration
package-private - Make
ClassHelper
package-private - Make
ConfigurationException
constructor package-private - Make
DeviceInspector
package-private - Make
DownForMaintenanceException
constructor package-private - Make
ErrorWithResponse
constructors package-private - Make
GraphQLConfiguration
package-private - Make
GraphQLConstants
package-private - Make
GraphQLQueryHelper
package-private - Make
GooglePaymentConfiguration
package-private - Make
HttpClient
package-private - Make
HttpResponseCallback
package-private - Make
IntegrationType
package-private - Make
InvalidArgumentException
package-private - Make
Json
package-private - Make
KountConfiguration
package-private - Make
ManifestValidator
package-private - Make
MetadataBuilder
package-private - Make
PaymentMethodDeleteException
constructor package-private - Make
PayPalConfiguration
package-private - Make
PayPalDataCollector
package-private - Make
PayPalDataCollectorRequest
package-private - Make
PayPalPaymentResource
package-private - Make
PostalAddressParser
package-private - Make
PreferredPaymentMethodsResult
constructor package-private - Make
RateLimitException
constructor package-private - Make
SamsungPayConfiguration
package-private - Make
ServerException
constructor package-private - Make
SignatureVerification
package-private - Make
StreamHelper
package-private - Make
ThreeDSecureV1BrowserSwitchHelper
package-private - Make
TLSSocketFactory
package-private - Make
UnexpectedException
constructor package-private - Make
UnionPayConfiguration
package-private - Make
UnprocessableEntityException
constructor package-private - Make
UpgradeRequiredException
constructor package-private - Make
UUIDHelper
package-private - Make
VenmoConfiguration
package-private - Make
VisaCheckoutConfiguration
package-private - Move all classes to
com.braintreepayments.api
package
- Bump
- Add
bic
(Bank Identification Code) toLocalPaymentRequest
- Bump Cardinal version to
2.2.5-1
- Add
accountType
toThreeDSecureRequest
- Add
offerPayLater
toPayPalRequest
- Add
paymentTypeCountryCode
toLocalPaymentRequest
- Upgrade PayPal Data Collector to 5.1.1 (fixes #325)
- Bump Cardinal version to
2.2.4-1
(fixes #305) - Bump
browser-switch
to1.1.3
- Update
compileSdkVersion
andtargetSdkVersion
to 30
- Expose cardholder name on
CardNonce
. - Expose expiration month and year on
CardNonce
. - Update
browser-switch
module to1.1.0
. - Fix bug where
onError
callback was invoked instead of theonCancel
callback in the Local Payment Method flow (fixes #299, thanks @vijayantil1) - Fix bug where
getReturnUrlScheme
is called and an Activity is no longer attached to the fragment (fixes #308, thanks @hakanbagci)
- Update
browser-switch
module to1.0.0
- Make PayPalUAT::Environment enum public
- Add Card#tokenize overload to allow a custom
PaymentMethodNonceCallback
to be provided.
- Changed
Configuration#isPayPalEnabled
to no longer consider deprecated integration requirements.
- Add default
uiCustomization
toThreeDSecureRequest
to prevent null pointer exception when interacting with Cardinal SDK
- Bump Cardinal version to 2.2.3-2
- Check if Fragment is active before handling Pay with PayPal result (fixes #295, thanks @brudaswen)
- Allow new BraintreeFragment instances to be created using FragmentActivity
- Add support for authorizing the Braintree SDK with a
PayPalUAT
(universal access token) - Fix bug that accepted raw JSON string as valid authorization to
BraintreeFragment.newInstance(...)
- Add
threeDSecureAuthenticationId
field toThreeDSecureInfo
- Update
braintree-android-google-payment
module to3.3.1
- Update Cardinal SDK to
2.2.2-1
- Fix bug in 3DS1 browser switch around accented characters in the redirect button and description (fixes #288)
- Add support for basic UI customization of 3DS1 flows. See
ThreeDSecureV1UiCustomization
.
- Update Cardinal SDK to
2.2.1-2
- Use
synchronized
when adding to callback queue inBraintreeFragment
(thanks @skauss) - Update paypal-data-collector to 4.1.2
- Update
braintree-android-google-payment
module to3.1.0
- Fix a bug so that
BraintreeFragment.newInstance
returns a new fragment whenever a new authorization string is passed in (Resolves issue #274. Thanks @krunk4ever and @bramley-stride.)
- Update 3DS
prepareLookup
method to function asynchronously to wait for Cardinal SDK - 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
ThreeDSecureInfo
when 3D Secure 2.0 challenge fails - Include reference to Cardinal's docs for
uiCustomization
property onThreeDSecureRequest
. - Add
requiresUserAuthentication
method toThreeDSecureLookup
- Add support for
PayPalLineItem
- Add authentication and lookup transaction status information to ThreeDSecureInfo
- Add ability to customize UI for 3D Secure challenge views
- Fix race condition that caused inconsistent 3DS version flows
- Add 3DSecure authentication details to card nonce
- Add
acsTransactionId
,threeDSecureServerTransactionId
andparesStatus
fields toThreeDSecureInfo
- Update Cardinal SDK to 2.1.4-1
- Send analytics timestamps in milliseconds
- Add additional fields to ThreeDSecureInfo
- Fix potential crash when 3DSecure 2.0 JWT is not available
- Correctly includes the 3DSecure 2.0 module
- Add 3DS 2 Support
- Update 3DS redirect to newest version
- BraintreeFragment can now attach to a Fragment (fixes #252)
- Update google-payment to 3.0.1
- Update endpoint for creating local payments
- Bump minSdkVersion to 21
- Convert to AndroidX
- BraintreeFragment moves to the support fragment
- Requires AppCompatActivity to attach the BraintreeFragment to
- Removed Visa Checkout 1.0.0 as a dependency
- Add Visa Checkout's dependency to your app to get the latest version
- Removed deprecated ThreeDSecureWebView flow
- Removed deprecated Venmo#isVenmoWhitelisted(ContentResolver)
- Removed deprecated method from PostalAddress
- Removed deprecated country setters
- Removed deprecated methods from DataCollector
- Removed deprecated PayPalOneTouchActivity
- Removed deprecated Ideal
- Rename AndroidPay classes to GooglePayment
- Deprecate PayPal Future Payments, use PayPal Billing Agreements
- Deprecate AndroidPayConfiguration, use the GooglePaymentConfiguration alias
- Fix null address properties on PayPalAccountNonce
- Those addresses should always be at least an empty PostalAddress
- Google Pay
- Add groundwork for v2 compatibility
- Split PostalAddress into PostalAddress and PostalAddressParser
- Deprecates PostalAddress.fromJson - use PostalAddressParser.fromJson
- Add fromUserAddressJsonn to PostalAddressParser
- Add additional fields
- Move Google Payment to a separate module
- Downgrade browser-switch to 0.1.6
- Exclude customtabs from browser-switch dependency
- Upgrade browser-switch to 0.1.7 fixes Chrome Custom Tab integration when using Jetifier to use AndroidX
- Upgrade Android SDK to 28
- Fix PayPal JavaDoc
- Local Payments
- Upgrade PayPal Data Collector to 4.0.3
- Add optional merchant account Id to PayPalRequest
- Add openVenmoAppPageInGooglePlay method which opens Venmo on the Google Play
- Fix NoClassDefFoundError compile error for PayPalDataCollector
- Fix InvalidPathException error
- Add
PaymentMethod#deletePaymentMethod
which allows customers to remove their vaulted payment methods - Fix DataCollector not being available for instant run builds
- Fix issue with TLS cipher in API < 21
- Removed unused PayPal analytics event
- Add shippingAddressEditable to PayPalRequest
- Fix issue where address override was not set for PayPal billing agreements
- Update 3D Secure redirect URL
- 3D Secure
- Add support for American Express SafeKey params
- Update PayPalDataCollector library to 3.1.6
- Catch possible SQLite exceptions
- Move Visa Checkout to separate module
- Update Visa Checkout to 5.5.2
- Update SDK to 27
- Add support for Venmo profiles
- Update PayPalDataCollector library to 3.1.5
- Update GooglePaymentException to be parcelable
- Add browser switch support to 3D Secure integrations
- Internal performance optimizations
- Deprecate
countryName
,countryCodeAlpha2
,countryCodeAlpha3
, andcountryCodeNumeric
in favor ofcountryCode
inCardBuilder
andUnionPayCardBuilder
.
- Support
lastFour
inGooglePayCardNonce
- Add Google Pay branding
- Add support for iDEAL payments
- Check package name is valid for PayPal Wallet switch
- Fix phoneNumberRequired in GooglePayment
- Add AmericanExpress support with getRewardsBalance method
- Use ExecutorService for async database operations
- Increase minimum version of Google Play Services Wallet to 11.4.0
- Add support for the Google Payments API
- Deprecate Android Pay
- Add additional billing address params to
CardBuilder
- Fix potential crash due to optional Visa Checkout dependency
- Fix potential crash due to optional Google Play Services dependency
- Upgrade Kount DataCollector to 3.2
- Stop using dependency ranges (braintree/android-card-form#29)
- Relax
PRNGFixes
check forPRNGSecureRandomProvider
to prevent race condition with other providers (#151) - Stop sending
Content-Type
header for GET requests (#155) - Upgrade browser-switch to 0.1.4 to prevent losing Chrome Custom Tab when switching to a password manager or other app
- Add additional bin data to card based payment methods
- Add DOM and database storage to
ThreeDSecureWebView
to improve compatibility with some bank web pages (#159) - Update compile and target SDK versions to 26
- Any support library dependencies must now be 26.0.0 or newer
- Use custom task instead of overriding the clean task (fixes #153)
- Accept third party cookies in ThreeDSecureWebView for Lollipop and above
- Add PayPal Credit for Billing Agreements
- Include cause in
ConfigurationException
(#143) - Ignore ProGuard warnings for Visa Checkout (fixes #144)
- Fix Android Pay behavior during configuration changes (fixes #145, #146, #147)
- Fix crash when run in an Android Instant App
- Fix non-optional
data-collector
dependency in Braintree - Create
BraintreeRequestCodes
for use withBraintreeCancelListener#onCancel
- Move PayPal browser switches to use browser-switch-android
- Add option to set display name in
PayPalRequest
- Add option to set landing page type in
PayPalRequest
- Add option to enable PayPal Credit in
PayPalRequest
- Add Visa Checkout as a payment method
- Prevent dependency resolution of alpha major versions of support libraries
- Improve
GoogleApiClientException
to include error type as well as reason code - Changes to PayPalDataCollector to make it easier to use
- Fix NPE in
AndroidPay#changePaymentMethod
(fixes #139) Venmo#authorizeAccount
will now correctly vault the payment method when the vault option is true- Fix missing client metadata ids in
PayPalAccountNonce
s - Update paypal-data-collector to 3.1.4
- Add workaround for Kount/kount-android-sdk#2
- Fix error returned by
AndroidPay#changePaymentMethod
- Fix back button during PayPal browser switch on Samsung devices (fixes #137)
- Add new intent option to
PayPalRequest
- Fix crash when excluding the PayPal dependency
- Increase
minSdkVersion
to 16- API 16 is the first version of Android that supports TLSv1.2. For more information on Braintree's upgrade to TLSv1.2 see the blog post.
- Improve PayPal address validations
- Work around
NullPointerException
inBraintreeFragment#newInstance
(fixes #125) - Document supported locales for PayPal
- Fix rare
NullPointerException
(#128)
- Fix ProGuard rules (fixes #124)
- Fix
NullPointerException
when using deprecated DataCollector methods - Update compile and target SDK versions to 25
- Add
BraintreeFragment#getListeners
to get a list of all the registered listeners - Upgrade paypal-data-collector to 3.1.3
- Upgrade Kount DataCollector to 3.1
- Add
AndroidPay#requestAndroidPay
andAndroidPay#changePaymentMethod
methods to simplify requesting Android Pay from a user and changing the backing payment method. - Include ProGuard directives in the SDK (#120)
- Work around bug in
JSONObject#optString
- Use
FragmentTransaction#commitNow
andFragmentManager#executePendingTransactions
inBraintreeFragment#newInstance
to synchronously set upBraintreeFragment
and avoid race conditions caused by asynchronousFragment
setup.
- Update
AndroidPayCardNonce
description to include card type and last 4
- Support changing user call to action in PayPal flows, see
PayPalRequest#userAction
- Fix validate option not being sent when set to false in
PaymentMethodBuilder
- Add merchant supported card types to
Configuration
- Expose methods on
BraintreeFragment
for getting cached payment methods - Update
paypal-data-collector
to 3.1.2 - Move Drop-In to it's own repo
- Update exception message when Android Manifest setup is invalid
- Fix unclosed
InputStream
(fixes #115) - Post exception to error listener instead of throwing
IllegalStateException
whenBraintreeFragment
is not attached to anActivity
- Restore url when
BraintreeFragment
is recreated (fixes #117) - Upgrade gradle build tools to 2.1.3
- Parse and return errors when Android Pay tokenization fails
- Add support for changing the backing card for Android Pay in Drop-In
- Call configuration callback whenever a new Activity is attached to
BraintreeFragment
- Allow vaulting of Venmo accounts. See
Venmo#authorizeAccount
. - Remove Venmo whitelist check
- Fix
BraintreeCancelListener#onCancel
being invoked twice for PayPal cancellations (fixes #112)
- Change
UnionPayCallback
to includesmsCodeRequired
- Change
UnionPayCapabilities#isUnionPayEnrollmentRequired
toUnionPayCapabilities#isSupported
- Upgrade Google Play Services to [9.0.0,10.0.0)
- Upgrade support annotations to [24.0.0,25.0.0)
- Upgrade build tools to 24.0.0
- Update compile and target API versions to 24
- Fix
NullPointerException
inAnalyticsIntentService
- Prevent invalid schemes from being used for browser switching (Packages containing underscores would generate invalid schemes)
- Fix
NoClassDefFoundError
inDataCollector
- Fix
NullPointerException
inBraintreeFragment
- Add PayPal Checkout intent option (authorize or sale). See
PayPalRequest#intent
- Update UnionPay support in demo app custom integration
- Update
android-card-form
to 2.3.1 - Fix
NullPointerException
inAddPaymentMethodViewController
(fixes #100) - Fix
IllegalStateException
when creating aBraintreeFragment
(fixes #104) - Fix
NullPointerException
whenBraintreeFragment
is not attached to anActivity
(fixes #105)
- Fix
NullPointerException
when handling a PayPal response (fixes #101)
- Fix
NullPointerException
s inBraintreeFragment
when not attached to anActivity
- Fix Chrome Custom Tabs Intent flags interfering with browser switch
- Add new
DataCollector#collectDeviceData
methods that use a callback; deprecate synchronous methods - Reduce size of assets in Drop-In
- UnionPay Beta Please note: this API is in beta and subject to change
- Add support for fetching a customer's payment methods
- Return a
RateLimitException
when a merchant account is being rate limited
- Fixes
- Update BraintreeHttpClient to support UTF-8 encoding (fixes #85)
- Update PayPalDataCollector to 3.1.1
- Fixes
- Update device collector to 2.6.1 (fixes #87)
- Fix crash when
BraintreeFragment
has not been attached to anActivity
- Features
- Add
PaymentRequest#defaultFirst
option - Add support for Chrome Custom tabs when browser switching
- Add
- Fixes
- Fix incorrect
groupId
of dependencies in pom file for 2.2.2
- Fix incorrect
🚨 The groupId
s in this version's pom files are incorrect and dependencies will not resolve. Do not use. 🚨
- Update
PaymentButton
styling when PayPal is the only visible option - Features
- Add client side overrides for payment methods in Drop-in and
PaymentButton
toPaymentRequest
- Add support for non-USD currencies and non-US shipping addresses in Android Pay
- Return email, billing address and shipping address as part of an
AndroidPayCardNonce
from Drop-in
- Add client side overrides for payment methods in Drop-in and
- Fixes
- Fix back button not doing anything in Drop-in after an Android Pay error is returned
- Deprecate
DataCollector#collectDeviceData
and add new signature to prevent a NullPointerException when using a fragment that is not attached to anActivity
- Fixes
- Fix support annotations being bundled in PayPalDataCollector jar
- Open source PayPal SDK
- Deprecate
PayPalOneTouchActivity
and remove from Android manifest - Add Travis CI build
- Improve errors and manifest validation
- Features
- Add
CardBuilder#cardholderName
- Add
PayPalRequest#billingAgreementDescription
- Add
- Fixes
- Fix back button not working in Drop-in after adding a payment method
- Fix failure to return a payment method nonce after browser switch when the fragment was recreated.
- Update Google Play Services Wallet to 8.4.0
- Use
ENVIRONMENT_TEST
for Android Pay requests in sandbox - Add
AndroidPay#isReadyToPay
method
- Demo app upgrades
- Update PayPal SDK to 2.4.3 (fixes #67)
- Update android-card-form to 2.1.1
- Update gradle to 2.8
- Update build tools to 23.0.2
- Features
- Add support for fraud data collection in Drop-in
- Fixes
- Add rule to suppress ProGuard warnings
- Fix Drop-in crash
- Fix NPE when there is no active network (fixes #77)
- Pay with Venmo
PaymentButton#newInstance
now accepts a container id to addPaymentButton
to that container- Android Pay assets
- Fixes
- Add
onInflate
method for Android versions < 23 - PayPal cancel events (fixes #63)
- Add
- Make support annotations an optional dependency
- Cache configuration to prevent unnecessary network requests
- Fixes
- Fix BraintreeDataCollector as an optional dependency
- Fix
PaymentRequest
crash when Google Play Services is not present
- Increase
minSdkVersion
to 15 (see Platform Versions for the current distribution of Android versions) - Remove Gson dependency
- Replace
Braintree
class with headlessBraintreeFragment
- Move methods for creating payment methods from central
Braintree
class to their own classes e.g.PayPal#authorizeAccount
,Card#tokenize
- Move methods for creating payment methods from central
- Add support for Tokenization Keys in addition to Client Tokens
- Rename PaymentMethod to PaymentMethodNonce
- Rename BraintreeData module to BraintreeDataCollector
- Update PayPal
- Remove PayPal Android SDK dependency
- Replace in-app log in with browser based log in
- Add support for PayPal billing agreements and one-time payments
- Convert
PaymentButton
class from a view to a fragment - Create
PaymentRequest
class for specifying options in Drop-in and thePaymentButton
- Remove Venmo One Touch. To join the beta for Pay with Venmo, contact Braintree Support
- Remove Coinbase
- Many additional structural and name changes. For more details, see the migration guide and the source code
- Fixes
- Increase minimum version of Google Play Services Wallet to 8.0.0 to prevent
VerifyError
- Increase minimum version of Google Play Services Wallet to 8.0.0 to prevent
- Fixes
- Fix Android Pay bug caused by shared state between Activities
- Update PayPal SDK to 2.11.1 (fixes #48)
- Fixes
- Fix tokenization failure in Coinbase
- Update gradle plugin to 1.3.1
- Update build tools to 23.0.1
- Update
compileSdkVersion
andtargetSdkVersion
to 23 - Update PayPal SDK to 2.10.0
- Increase maximum version of Google Play Services to 9.0.0 (#50)
- Set compile options to use Java 7
- Features
- Add support for Coinbase. Please note: this API is in beta and subject to change.
- Fixes
- Update PayPal SDK to 2.9.10
- Fixes
- Fix incorrect custom integration in demo app
- Fix incorrect selected payment method in Drop-in after creating a new payment method
- Fix
NoClassDefFoundError
crash in Drop-in
- Update PayPal SDK to 2.9.8
- Improvements
- Follow Android convention around button and text casing in Drop-in
- Update android-card-form to 2.0.1
- Improvements
- BraintreeData can now be optionally excluded
- Fixes
- Remove optional dependency from full jar
- Update PayPal SDK to 2.9.7
- Add support for additional PayPal scopes to
PaymentButton
- Fixes
- Return error instead of silently failing setup with bad client tokens
- Fix
NoClassDefFoundError
in Drop-in caused by optional dependency
- Fixes
- Fix
NoClassDefFoundError
in Drop-in andPaymentButton
caused by optional dependency (#34)
- Fix
- Update PayPal SDK to 2.9.6
- Update gradle plugin to 1.2.3
- Update build tools to 22.0.1
- Features
- Add Android Pay support. Please note: this API is in beta and subject to change.
- Add
Braintree#onActivityResult
method - Add support for additional PayPal scopes
- A
List
of additional scopes may be passed toBraintree#startPayWithPayPal
PayPalAccount#getBillingAddress
can be used to retrieve the billing address when the address scope is requested.
- A
- Update PayPal SDK to 2.9.5
- Switch to OkHttp for Demo app
- Improvements
- Add methods to persist state across rotations
- Fixes
- Update PayPal SDK to 2.9.4
- Move
CardForm
to separate repo - Deprecate
Braintree#getInstance
in favor ofBraintree#setup
- Fixes
- Remove metadata from assets, fixes #16
- Update gradle plugin to 1.1.2
- Update build tools to 22
- Update
compileSdkVersion
andtargetSdkVersion
to 22 - Update PayPal SDK to 2.9.0
- Features
- Add support for 3D Secure. Please note: this API is in beta and subject to change.
- Fixes
- Fix missing expiration date float label (#21)
- Remove Drop-In support for Eclipse
- Open source card form separate from Drop-In
- Update PayPal SDK to 2.8.5
- card.io is no longer included in the SDK
- Update Espresso to 2.0
- Remove unused PayPal
PROFILE
scope
- Update gradle plugin to 0.14.1
- Update build tools to 21.1.1
- Update PayPal SDK to 2.7.3
- Remove
android:allowBackup="false"
from library manifests, apps will now be able to choose if they allow backups - Remove
ACCESS_WIFI_STATE
permission - Improvements
- Add localizations for more locales (da-rDK, en-rAU, es, fr-rCA, iw-rIL, nl, no, pl, pt, ru, sv-rSE, tr, zh-rCN)
- Add initial right to left language support
- Add type safety to
Braintree#addListener(Listener)
. Thanks @adstro!
- Increase
targetSdkVersion
to 21 - Increase
buildToolsVersion
to 21.0.2 - Fixes
- Fix max length on
EditText
s - Fix crash caused by
PRNGFixes
- Fix max length on
- Improvements
- Update PayPal SDK
- Add first and last name to
CardBuilder
- Fixes
- Fix incorrectly named language resource directories
- Fixes
- Work around manifest merging issues on newer build plugins
- minSdk is now 10
- Fixes
- Set max length on card field for unknown card types in Drop-In
- Update PayPal SDK to fix rotation bug
- Fix edge cases in expiration entry in Drop-In
- Improvements
- Error messages are now returned from Drop-In
- Drop-In auto advances to next field now
- Fixes
- Fix crash caused by too large request code in
PaymentButton
- Resume the payment method form after rotation
- Fix crash caused by too large request code in
- Improvements
- Updated PayPal SDK
- email scope is now requested in all PayPal requests
correlationId
is now included in the device data string returned fromBraintreeData#collectDeviceData
- Updated PayPal SDK
- Fixes
- BraintreeApi release now includes the PayPal SDK again. Sorry!
- Improvements
- All assets are now namespaced to avoid any conflicts on import.
- Updated PayPal SDK
- Features
- App switch based payments for PayPal and Venmo (One Touch)
- No changes for existing Pay With PayPal integrations
- See the docs for more information
- Unified payment button (
PaymentButton
) for PayPal and/or Venmo payments
- App switch based payments for PayPal and Venmo (One Touch)
- Improvements
- Minor bugfixes and internal tweaks
- Deprecations
PayPalButton
is deprecated in favor ofPaymentButton
- Breaking Change
- BraintreeData returns
deviceData
instead ofdeviceSessionId
oncollectDeviceData
- BraintreeData returns
- Improvements
- References
sdk-manager-plugin
from vendor to simplify build process
- References
- Improvements
- CardBuilder now accepts billing address fields other than postal code (credit: @chiuki)
- Packaging
- Fixed an issue building Drop-In in Eclipse
- Improvements
- BraintreeApi no longer depends on OkHttp
- Added localizations for more locales (UK, FR, DE, IT)
- Fixes
- Fixed disabled submit button in landscape
- Fixed next field button in landscape
- Add max length to expiration date and prevent user from typing illegal characters
- Move to sdk-manager-plugin for CI dependencies
- Packaging
- Set Braintree package to default to AAR instead of ZIP
- Improvements
- Added assets for a wider range of resolutions
- Enforce maximum length for card and postal code fields
- Added README for fraud tools
- Packaging
- Improvements for usage in environments other than Maven or Gradle
- Fixes
- Fixed lint errors
- Fixes
- Fix crash on Android SDK < 19
- Add PayPal
correlationId
to PayPal account creation
- Fixes
- Improved packaging for non-Gradle uses of SDK
- Fixes
- Attach Javadocs and sources to Maven Central build.
- Breaking Changes
- Bump
minSdkVersion
to 21.
- Bump
- Fix
allowedCardNetworks
inisReadyToPayRequest
to be uppercased. Thanks @fcastagnozzi.
- Add support for Google Pay's
existingPaymentMethodRequired
option
- Add support for
isNetworkTokenized
Fix setting the correct version in metadata
- Add check in
requestPayment
to avoid Null Pointer Exception
- Resolve issue where optional shipping parameters were treated as if they were required
- Use GooglePayment PayPal client ID
- Convert to AndroidX
- Replace AndroidPayConfiguration with GooglePaymentConfiguration
- Disable PayPal payment method in Google Payment when the merchant is not able to process PayPal
- Add support for Google Pay v2
- Remove support for Google Pay v1
- To continue using v1, add google-payment:1.0.0 to your build.gradle
- v1 will remain the defaul for braintree android until the next major version bump
- Replace all UserAddress objects with PostalAddress objects
- Public release of v.zero SDK