- 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
ClientTokenProviderinterface for asynchronously fetching client token authorization - Add new
BraintreeClientconstructors that acceptClientTokenProvider - Update pinned certificates used by
BraintreeGraphQLClient
- Add
- Google Pay
- Add
GooglePayListenerto receive results from the Google Pay flow - Deprecate methods requiring a callback in favor of listener pattern
- Add
- ThreeDSecure
- Add
ThreeDSecureListenerto receive results from the 3DS flow - Deprecate methods requiring a callback in favor of listener pattern
- Add
- Venmo
- Add
VenmoListenerto receive results from the Venmo flow - Deprecate methods requiring a callback in favor of listener pattern
- Add
- PayPal
- Add
PayPalListenerto receive results from the PayPal flow - Deprecate methods requiring a callback in favor of listener pattern
- Add
- Local Payment
- Add
LocalPaymentListenerto 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-walletversion to18.1.3
- Deprecate
- SharedUtils
- Use byte array to hold
HttpRequestdata. Dispose data immediately after making http request.
- Use byte array to hold
- BraintreeCore
- Bump
browser-switchversion to2.1.1
- Bump
- SharedPreferences
- Encrypt shared preferences data stored by SDK (fixes #440)
- Local Payments
- Add
displayNametoLocalPaymentRequest
- Add
- DataCollector
- Fix memory leak from
PayPalDataCollector(fixes #419)
- Fix memory leak from
- Local Payments
- Add
displayNametoLocalPaymentRequest
- Add
- PayPal
- Fix issue that caused user cancelations from PayPal browser flow to be incorrectly reported as failures
- Venmo
- Make
VenmoRequestparcelable
- Make
- ThreeDSecure
- Make
pareqoptional onThreeDSecureLookup
- Make
- Android 12 Support
- Upgrade
targetSdkVersionandcompileSdkVersionto API 31 - Bump
browser-switchversion to2.1.0 - Fix issue where Venmo app is not detected on Android 12 devices
- Upgrade
- BraintreeCore
- Add
BraintreeClientconstructor 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
BraintreeCoreas anapidependency (Fixes #437)
- SamsungPay
- Add additional alias for Amex in
SamsungPay(fixes #430)
- Add additional alias for Amex in
- ThreeDSecure
- Fix issue that causes
ThreeDSecureRequestto throw aNullPointerExceptionwhen parceling.
- Fix issue that causes
- Core
- Bump
browser-switchversion 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
cardAddChallengeRequestedtoThreeDSecureRequest
- Make
- Add
VenmoClient#isReadyToPay()method - Bump
browser-switchto2.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
PayPalRequestand subclassesParcelable - Add getters to data classes to improve support for Kotlin synthesized properties
- Add
displayNameproperty toVenmoRequest - Bump
browser-switchto2.0.0 - Breaking Changes
- Rename
LocalPaymentTransactiontoLocalPaymentResult - 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
UserCanceledExceptionon 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
Contextparameter 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
PaymentMethodTypeenum - Add
PaymentMethodNonce#getType()method - Add wallet enabled metadata tag to
AndroidManifest.xmlingoogle-paymodule - Bump
browser-switchto2.0.0-beta3 - Callback
BraintreeExceptionon user cancellation of payment flows - Add
paymentMethodUsagetoVenmoRequest - Breaking Changes
- Rename
DownForMaintenanceExceptiontoServiceUnavailableException - Remove
GoogleApiClientException - Make
BraintreeWalletConstantspackage-private - Make
PaymentMethodNonceFactorypackage-private - Make
GooglePayExceptionconstructor package-private - Make
VisaCheckoutAccountpackage-private - Make
VenmoAccountpackage-private - Return an
IllegalArgumentExceptioninstead ofGoogleApiClientExceptiontoGooglePayIsReadyToPayCallback#onResult()when activity is null - Refactor
GetPaymentMethodNoncesCallbackto have a singleonResult()method instead ofsuccess()andfailure() - Remove
Contextparameter fromPaymentMethodClient#getPaymentMethodNonces - Rename
PaymentMethodNonce#getNonce()togetString() - Move
VenmoAccountNoncetoVenmomodule - Move
AuthenticationInsighttoCardmodule - Move
BinDatatoCardmodule - Move
CardtoCardmodule - Move
CardNoncetoCardmodule - Move
ThreeDSecureInfotoCardmodule - Move
PayPalAccountNoncetoPayPalmodule - Move
PayPalCreditFinancingtoPayPalmodule - Move
PayPalCreditFinancingAmounttoPayPalmodule - Move
UnionPayCapabilitiestoUnionPaymodule - Move
UnionPayCardtoUnionPaymodule - Move
VisaCheckoutAddresstoVisaCheckoutmodule - Move
VisaCheckoutNoncetoVisaCheckoutmodule - Move
VisaCheckoutUserDatatoVisaCheckoutmodule - Remove
PaymentMethodNonce#getTypeLabel()method - Remove
PaymentMethodNoncesCallback - Remove
PaymentMethodNonce#getDescription()method BraintreeClientconstructor no longer throwsInvalidArgumentException- Make protected static member variables
OPTIONS_KEY,OPERATION_NAME_KEYonPaymentMethodpackage-private - Make
PaymentMethodconstructor package-private - Rename
setValidatetosetShouldValidateand move it fromPaymentMethodbase class toCardsubclass - Make
buildJSON()package-private forPaymentMethodbase class and all subclasses - Remove
buildGraphQL()method fromPaymentMethodbase class and all subclasses - Make
PaymentMethodParcelableconstructor 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 inPaymentMethodbase class and subclasses - Remove
getResponsePaymentMethodType()method fromPaymentMethodbase class and subclasses - Make
BaseCardclass package-private
- Rename
- Add
setCountryCodetoGooglePayRequest - Add Google Pay support for Elo cards.
- Add
VenmoRequest - Add new classes for 3DS2 UI Customization:
ThreeDSecureV2UiCustomizationThreeDSecureV2ButtonCustomizationThreeDSecureV2LabelCustomizationThreeDSecureV2TextBoxCustomizationThreeDSecureV2ToolbarCustomization
- Add
PayPalCheckoutRequest - Add
PayPalVaultRequest - Add
tokenizePayPalAccountmethod toPayPalClient - Add
requestBillingAgreementtoPayPalCheckoutRequest - Fix issue where
onBrowserSwitchResultcrashes ifbrowserSwitchResultis null - Add
ThreeDSecureResult - Bump
browser-switchto2.0.0-beta2 - Breaking Changes
- Make
AmericanExpressRewardsBalance#fromJson()package-private - Make
TYPEandAPI_RESOURCE_KEYinCardNoncepackage-private - Make
CardNonce#fromJson()methods package-private - Make
CardNonceconstructor package-private - Make
TYPE,API_RESOURCE_KEY,PAYMENT_METHOD_DATA_KEY,TOKENIZATION_DATA_KEYandTOKEN_KEYinPayPalAccountNoncepackage-private - Make
PayPalAccountNonce#fromJson()methods package-private - Make
PayPalAccountNonceconstructor package-private - Make
DATA_KEYandTOKEN_KEYinPaymentMethodNoncepackage-private - Make
PaymentMethodNonce#fromJson()package-private - Make
PaymentMethodNonce#parsePayentMethodNonces()methods package-private - Make
PaymentMethodNoncesconstructor package-private - Make
ThreeDSecureAuthenticationResponse#fromJson()package-private - Make
ThreeDSecureAuthenticationResponseconstructor package-private - Make
ThreeDSecureInfo#fromJson()package-private - Make
ThreeDSecureInfo#setThreeDSecureAuthenticationResponse()package-private - Make
ThreeDSecureLookup#fromJson()package-private - Make
TYPEandAPI_RESOURCE_KEYinVenmoAccountNoncepackage-private - Make
VenmoAccountNonce#fromJson()methods package-private - Make
VenmoAccountNonceconstructor package-private - Make
VenmoAccountNonceparcelable constructor private - Make
TYPEandAPI_RESOURCE_KEYinVisaCheckoutNoncepackage-private - Make
VisaCheckoutNonce#fromJson()methods package-private - Make
VisaCheckoutNonceconstructor package-private - Make
API_RESOURCE_KEYinGooglePayCardNoncepackage-private - Make
GooglePayCardNonce#fromJson()methods package-private - Make
GooglePayCardNonce#postalAddressFromJson()package-private - Make
GooglePayCardNonceconstructor package-private - Make
API_RESOURCE_KEYinLocalPaymentNoncepackage-private - Make
LocalPaymentNonce#fromJson()methods package-private - Make
LocalPaymentNonceconstructor package-private - Make
GooglePayClient#tokenize()package-private - The
shippingMethodproperty onThreeDSecureRequestis now an enum rather than a string. Possible values:SAME_DAYEXPEDITEDPRIORITYGROUNDELECTRONIC_DELIVERYSHIP_TO_STORE
- Change default
versionRequestedonThreeDSecureRequesttoThreeDSecureVersion.VERSION_2 - Rename
uiCustomizationonThreeDSecureRequesttov2UiCustomizationand change parameter toThreeDSecureV2UiCustomization - Update setters on
V1UiCustomizationto remove method chaining - Change Cardinal dependency from
apitoimplementation - Replace
VenmoClient#authorizeAccount()withVenmoClient#tokenizeVenmoAccount() - Rename
VenmoAuthorizeAccountCallbacktoVenmoTokenizeAccountCallback - Remove
activityparameter fromGooglePayClient#onActivityResult() - Remove
activityparameter fromGooglePayClient#getTokenizationParameters() - Update
PayPalClient#requestOneTimePayment()to expect aPayPalCheckoutRequestand deprecate method - Update
PayPalClient#requestBillingAgreement()to expect aPayPalVaultRequestand deprecate method - Make
PayPalRequestabstract - Update
PayPalRequestsetter method names and remove method chaining - Make
PayPalAccountBuilderpackage-private - Remove
ThreeDSecureClient#performVerification()convenience overload - Remove
ThreeDSecureAuthenticationResponse - Remove
errorMessageandthreeDSecureAuthenticationResponseproperties fromThreeDSecureInfo - Remove
cardNonceproperty fromThreeDSecureLookup - Remove
ThreeDSecureLookupCallback - Remove
firstNameandlastNameproperties fromThreeDSecurePostalAddress - Update
ThreeDSecureResultCallbackto expect aThreeDSecureResultparameter - Update
ThreeDSecureClient#continuePerformVerification()to expect aThreeDSecureResultparameter - Update callback type in
ThreeDSecureClient#initializeChallengeWithLookupResponsemethods - Replace
CardBuilderwithCard - Replace
BaseCardBuilderwithBaseCard - Replace
PaymentMethodBuilderwithPaymentMethod - Replace
UnionPayCardBuilderwithUnionPayCard - Replace
PayPalAccountBuilderwithPayPalAccount - Replace
VenmoAccountBuilderwithVenmoAccount - Replace
VisaCheckoutBuilderwithVisaCheckoutAccount - Remove builder pattern from the following classes:
PostalAddressGooglePayRequestReadyForGooglePayRequestLocalPaymentRequestThreeDSecureAdditionalInformationThreeDSecurePostalAddressThreeDSecureRequest
- Rename
PayPalPaymentIntentenums:INTENT_ORDERtoORDERINTENT_SALEtoSALEINTENT_AUTHORIZEtoAUTHORIZE
- Remove
paymentRequestedparam fromGooglePayRequestPaymentCallback - Refactor
BraintreeClientconstructor to take aStringinstead ofAuthorizationand change parameter ordering - Make
Authorizationpackage-private - Make
TokenizationKeypackage-private - Make
ClientTokenpackage-private - Make
PayPalUATpackage-private
- Make
- Add
requestBillingAgreementtoPayPalRequest
- Bump Cardinal version to
2.2.5-4
- Upgrade
targetSdkVersionandcompileSdkVersionto API 31 - Bump
browser-switchversion 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
querieselement inAndroidManifest.xml
- Add Venmo to
querieselement inAndroidManifest.xml(fixes issue in Android 11 not properly detecting if Venmo app is installed)
- Add a
clientfor each feature:AmericanExpressClientBraintreeClientCardClientDataCollectorGooglePayClientLocalPaymentClientPayPalClientPaymentMethodClientPreferredPaymentMethodsClientThreeDSecureClientUnionPayClientVenmoClientVisaCheckoutClient
- Create callback interfaces to enforce callback pattern:
AmericanExpressGetRewardsBalanceCallbackCardTokenizeCallbackConfigurationCallbackDataCollectorCallbackDeletePaymentMethodNonceCallbackGetPaymentMethodNoncesCallbackLocalPaymentBrowserSwitchResultCallbackLocalPaymentStartCallbackPayPalBrowserSwitchResultCallbackPayPalFlowStartedCallbackPreferredPaymentMethodsCallbackThreeDSecureLookupCallbackThreeDSecurePrepareLookupCallbackThreeDSecureResultCallbackUnionPayEnrollCallbackUnionPayFetchCapabilitiesCallbackUnionPayTokenizeCallbackVenmoAuthorizeAccountCallbackVenmoOnActivityResultCallback
- Migrate
braintree-android-google-paymentintobraintree_android - Migrate
braintree-android-visa-checkoutintobraintree_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
LocalPaymentTransactionto represent Local Payment transactions - Add
amountsetter toPayPalRequest - Breaking Changes
- Bump
browser-switchto2.0.0-beta1 - Change
GooglePayCapabilities#isGooglePayEnabled()parameters - Create
american-expressmodule - Create
cardmodule - Create
local-paymentmodule - Create
pay-palmodule - Create
union-paymodule - Create
venmomodule - Remove PayPal
data-collectormodule - Remove PayPal
paypal-one-touchmodule - Remove
AmericanExpressListener - Remove
AnalyticsIntentService - Remove
AnalyticsSender - Remove
AmericanExpressRewardsBalancedefault constructor - Remove
amountparameter fromPayPalRequestconstructor - Remove
approvalUrlandpaymentIdproperties fromLocalPaymentRequest - Remove
Betainterface - Remove
BraintreeApiError - Remove
BraintreeApiErrorResponse - Remove
BraintreeApiHttpClient - Remove
BraintreeBrowserSwitchActivity - Remove
BraintreeCancelListener - Remove
BraintreeErrorListener - Remove
BraintreeFragment - Remove
BraintreeListener - Remove
BraintreePaymentResult - Remove
BraintreePaymentResultListener - Remove
BrowserSwitchExceptionconstructor - Remove
ConfigurationListener - Remove
ConfigurationManager - Remove
Configuration#getCardConfiguration() - Remove
Configuration#getGraphQL() - Remove
Configuration#getGooglePayment() - Remove
Configuration#getKount() - Remove deprecated 3DS
performVerificationmethods - 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
AmericanExpresstoAmericanExpressClient - Rename
CardtoCardClient - Rename
GooglePaymenttoGooglePayClient - Rename
LocalPaymenttoLocalPaymentClient - Rename
PayPaltoPayPalClient - Rename
PaymentMethodtoPaymentMethodClient - Rename
PreferredPaymentMethodstoPreferredPaymentMethodsClient - Rename
ThreeDSecuretoThreeDSecureClient - Rename
UnionPaytoUnionPayClient - Rename
VenmotoVenmoClient - Rename
VisaCheckouttoVisaCheckoutClient - Rename
coremodule toshared-utils - Rename
LocalPaymentResulttoLocalPaymentNonce - Rename
braintreemodule tobraintree-core - Rename
GooglePaymentclasses toGooglePay - Rename
BraintreeRequestCodes.GOOGLE_PAYMENTtoBraintreeRequestCodes.GOOGLE_PAY - Make
AnalyticsConfigurationpackage-private - Make
AnalyticsDatabasepackage-private - Make
AnalyticsEventpackage-private - Make
AppHelperpackage-private - Make
AppSwitchNotAvailableExceptionconstructor package-private - Make
AuthenticationExceptionconstructor package-private - Make
AuthorizationExceptionpackage-private - Make
BraintreeApiConfigurationpackage-private - Make
BraintreeErrorconstructors package-private - Make
BraintreeExceptionpackage-private - Make
BraintreeGraphQLHttpClientpackage-private - Make
BraintreeHttpClientpackage-private - Make
BraintreeSharedPreferencespackage-private - Make
BraintreeResponseListenerpackage-private - Make
CardConfigurationpackage-private - Make
ClassHelperpackage-private - Make
ConfigurationExceptionconstructor package-private - Make
DeviceInspectorpackage-private - Make
DownForMaintenanceExceptionconstructor package-private - Make
ErrorWithResponseconstructors package-private - Make
GraphQLConfigurationpackage-private - Make
GraphQLConstantspackage-private - Make
GraphQLQueryHelperpackage-private - Make
GooglePaymentConfigurationpackage-private - Make
HttpClientpackage-private - Make
HttpResponseCallbackpackage-private - Make
IntegrationTypepackage-private - Make
InvalidArgumentExceptionpackage-private - Make
Jsonpackage-private - Make
KountConfigurationpackage-private - Make
ManifestValidatorpackage-private - Make
MetadataBuilderpackage-private - Make
PaymentMethodDeleteExceptionconstructor package-private - Make
PayPalConfigurationpackage-private - Make
PayPalDataCollectorpackage-private - Make
PayPalDataCollectorRequestpackage-private - Make
PayPalPaymentResourcepackage-private - Make
PostalAddressParserpackage-private - Make
PreferredPaymentMethodsResultconstructor package-private - Make
RateLimitExceptionconstructor package-private - Make
SamsungPayConfigurationpackage-private - Make
ServerExceptionconstructor package-private - Make
SignatureVerificationpackage-private - Make
StreamHelperpackage-private - Make
ThreeDSecureV1BrowserSwitchHelperpackage-private - Make
TLSSocketFactorypackage-private - Make
UnexpectedExceptionconstructor package-private - Make
UnionPayConfigurationpackage-private - Make
UnprocessableEntityExceptionconstructor package-private - Make
UpgradeRequiredExceptionconstructor package-private - Make
UUIDHelperpackage-private - Make
VenmoConfigurationpackage-private - Make
VisaCheckoutConfigurationpackage-private - Move all classes to
com.braintreepayments.apipackage
- Bump
- Add
bic(Bank Identification Code) toLocalPaymentRequest
- Bump Cardinal version to
2.2.5-1
- Add
accountTypetoThreeDSecureRequest - Add
offerPayLatertoPayPalRequest
- Add
paymentTypeCountryCodetoLocalPaymentRequest - Upgrade PayPal Data Collector to 5.1.1 (fixes #325)
- Bump Cardinal version to
2.2.4-1(fixes #305) - Bump
browser-switchto1.1.3
- Update
compileSdkVersionandtargetSdkVersionto 30
- Expose cardholder name on
CardNonce. - Expose expiration month and year on
CardNonce. - Update
browser-switchmodule to1.1.0. - Fix bug where
onErrorcallback was invoked instead of theonCancelcallback in the Local Payment Method flow (fixes #299, thanks @vijayantil1) - Fix bug where
getReturnUrlSchemeis called and an Activity is no longer attached to the fragment (fixes #308, thanks @hakanbagci)
- Update
browser-switchmodule to1.0.0 - Make PayPalUAT::Environment enum public
- Add Card#tokenize overload to allow a custom
PaymentMethodNonceCallbackto be provided.
- Changed
Configuration#isPayPalEnabledto no longer consider deprecated integration requirements.
- Add default
uiCustomizationtoThreeDSecureRequestto 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
threeDSecureAuthenticationIdfield toThreeDSecureInfo - Update
braintree-android-google-paymentmodule 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
synchronizedwhen adding to callback queue inBraintreeFragment(thanks @skauss) - Update paypal-data-collector to 4.1.2
- Update
braintree-android-google-paymentmodule to3.1.0 - Fix a bug so that
BraintreeFragment.newInstancereturns a new fragment whenever a new authorization string is passed in (Resolves issue #274. Thanks @krunk4ever and @bramley-stride.)
- Update 3DS
prepareLookupmethod to function asynchronously to wait for Cardinal SDK - Add ability to request
AuthenticationInsightwhen tokenizing a credit card, which can be used to make a decision about whether to perform 3D Secure verification - Set error message on
ThreeDSecureInfowhen 3D Secure 2.0 challenge fails - Include reference to Cardinal's docs for
uiCustomizationproperty onThreeDSecureRequest. - Add
requiresUserAuthenticationmethod 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,threeDSecureServerTransactionIdandparesStatusfields 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#deletePaymentMethodwhich 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, andcountryCodeNumericin favor ofcountryCodeinCardBuilderandUnionPayCardBuilder.
- Support
lastFourinGooglePayCardNonce - 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
PRNGFixescheck forPRNGSecureRandomProviderto prevent race condition with other providers (#151) - Stop sending
Content-Typeheader 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
ThreeDSecureWebViewto 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-collectordependency in Braintree - Create
BraintreeRequestCodesfor 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
GoogleApiClientExceptionto 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#authorizeAccountwill now correctly vault the payment method when the vault option is true- Fix missing client metadata ids in
PayPalAccountNonces - 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
minSdkVersionto 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
NullPointerExceptioninBraintreeFragment#newInstance(fixes #125) - Document supported locales for PayPal
- Fix rare
NullPointerException(#128)
- Fix ProGuard rules (fixes #124)
- Fix
NullPointerExceptionwhen using deprecated DataCollector methods - Update compile and target SDK versions to 25
- Add
BraintreeFragment#getListenersto get a list of all the registered listeners - Upgrade paypal-data-collector to 3.1.3
- Upgrade Kount DataCollector to 3.1
- Add
AndroidPay#requestAndroidPayandAndroidPay#changePaymentMethodmethods 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#commitNowandFragmentManager#executePendingTransactionsinBraintreeFragment#newInstanceto synchronously set upBraintreeFragmentand avoid race conditions caused by asynchronousFragmentsetup.
- Update
AndroidPayCardNoncedescription 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
BraintreeFragmentfor getting cached payment methods - Update
paypal-data-collectorto 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
IllegalStateExceptionwhenBraintreeFragmentis not attached to anActivity - Restore url when
BraintreeFragmentis 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#onCancelbeing invoked twice for PayPal cancellations (fixes #112)
- Change
UnionPayCallbackto includesmsCodeRequired - Change
UnionPayCapabilities#isUnionPayEnrollmentRequiredtoUnionPayCapabilities#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
NullPointerExceptioninAnalyticsIntentService
- Prevent invalid schemes from being used for browser switching (Packages containing underscores would generate invalid schemes)
- Fix
NoClassDefFoundErrorinDataCollector - Fix
NullPointerExceptioninBraintreeFragment
- Add PayPal Checkout intent option (authorize or sale). See
PayPalRequest#intent - Update UnionPay support in demo app custom integration
- Update
android-card-formto 2.3.1 - Fix
NullPointerExceptioninAddPaymentMethodViewController(fixes #100) - Fix
IllegalStateExceptionwhen creating aBraintreeFragment(fixes #104) - Fix
NullPointerExceptionwhenBraintreeFragmentis not attached to anActivity(fixes #105)
- Fix
NullPointerExceptionwhen handling a PayPal response (fixes #101)
- Fix
NullPointerExceptions inBraintreeFragmentwhen not attached to anActivity - Fix Chrome Custom Tabs Intent flags interfering with browser switch
- Add new
DataCollector#collectDeviceDatamethods 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
RateLimitExceptionwhen 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
BraintreeFragmenthas not been attached to anActivity
- Features
- Add
PaymentRequest#defaultFirstoption - Add support for Chrome Custom tabs when browser switching
- Add
- Fixes
- Fix incorrect
groupIdof dependencies in pom file for 2.2.2
- Fix incorrect
🚨 The groupIds in this version's pom files are incorrect and dependencies will not resolve. Do not use. 🚨
- Update
PaymentButtonstyling when PayPal is the only visible option - Features
- Add client side overrides for payment methods in Drop-in and
PaymentButtontoPaymentRequest - 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
AndroidPayCardNoncefrom 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#collectDeviceDataand 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
PayPalOneTouchActivityand 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_TESTfor Android Pay requests in sandbox - Add
AndroidPay#isReadyToPaymethod
- 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#newInstancenow accepts a container id to addPaymentButtonto that container- Android Pay assets
- Fixes
- Add
onInflatemethod 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
PaymentRequestcrash when Google Play Services is not present
- Increase
minSdkVersionto 15 (see Platform Versions for the current distribution of Android versions) - Remove Gson dependency
- Replace
Braintreeclass with headlessBraintreeFragment- Move methods for creating payment methods from central
Braintreeclass 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
PaymentButtonclass from a view to a fragment - Create
PaymentRequestclass 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
compileSdkVersionandtargetSdkVersionto 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
NoClassDefFoundErrorcrash 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
NoClassDefFoundErrorin Drop-in caused by optional dependency
- Fixes
- Fix
NoClassDefFoundErrorin Drop-in andPaymentButtoncaused 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#onActivityResultmethod - Add support for additional PayPal scopes
- A
Listof additional scopes may be passed toBraintree#startPayWithPayPal PayPalAccount#getBillingAddresscan 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
CardFormto separate repo - Deprecate
Braintree#getInstancein favor ofBraintree#setup - Fixes
- Remove metadata from assets, fixes #16
- Update gradle plugin to 1.1.2
- Update build tools to 22
- Update
compileSdkVersionandtargetSdkVersionto 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
PROFILEscope
- 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_STATEpermission - 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
targetSdkVersionto 21 - Increase
buildToolsVersionto 21.0.2 - Fixes
- Fix max length on
EditTexts - 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
correlationIdis 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
PayPalButtonis deprecated in favor ofPaymentButton
- Breaking Change
- BraintreeData returns
deviceDatainstead ofdeviceSessionIdoncollectDeviceData
- BraintreeData returns
- Improvements
- References
sdk-manager-pluginfrom 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
correlationIdto PayPal account creation
- Fixes
- Improved packaging for non-Gradle uses of SDK
- Fixes
- Attach Javadocs and sources to Maven Central build.
- Breaking Changes
- Bump
minSdkVersionto 21.
- Bump
- Fix
allowedCardNetworksinisReadyToPayRequestto be uppercased. Thanks @fcastagnozzi.
- Add support for Google Pay's
existingPaymentMethodRequiredoption
- Add support for
isNetworkTokenized
Fix setting the correct version in metadata
- Add check in
requestPaymentto 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