- PayPal Checkout v6
- Add
createCheckoutWithVaultSessionmethod to enable charging and vaulting in a single session
- Add
- Alternative Payment Method
- Add support for Alternative Payment Method
crypto
- Add support for Alternative Payment Method
- Update Data Collector error object
- Venmo
- Add
riskCorrelationIdoption for custom risk correlation tracking
- Add
- PayPal Checkout v6
- Mitigating issue from the small window for transient activation in Safari
- Add findEligibleMethods
onShippingAddressChangeandonErrorare no longer passed to the PayPal SDK when not supplied by the user
- Dependencies
- Revert update of @braintree/event-emitter to 2.0.2
- Adding PayPal Checkout v6 component
- Hosted Fields
- Add 8-digit BIN support verification
- Remove Bower package manager & all references to it
- Update dependencies
- inject-stylesheet to 7.0.0
- Update Node to v24
- Update dependencies
- @braintree/event-emitter to 2.0.2
- @braintree/uuid to 2.0.0
- Instant Verification
- add
getAchMandateDetailsmethod
- add
- Hosted Fields
- Change regex pattern for expirationDate field
- Adding CSP meta tag with SRI hashes
- Documentation
- Add cardinaltrusted.com to required Content-Security-Policy directives, when using 3D Secure
- Hosted Fields
- Update supportedCardTypes docs
- Local Payment
- Add support for Local Payment
swish
- Add support for Local Payment
- Venmo
- Fix iOS mobile web polling issue due to Apple's cross-domain restrictions
- Fix Android Webview opening up second tab when it should have been redirecting
- Fix Android Webview not breaking out of iframe
- API Latency Logging
- Added FPTI logs to track the performance metrics
- Instant Verification
- Add support for Instant Verification
- Venmo
- Non-default browser app switch support on iOS and Android
- Add
cancelOnReturnToBrowseroption (default:false) to aid in cases where merchant depends on cancellation signal for UI elements
- Update dependencies
- @braintree/browser-detection to 2.1.0
- Update dependencies:
- Update accelerated-checkout-loader to 1.2.1
- Update dependencies:
- Update accelerated-checkout-loader to 1.2.0
- Fastlane:
- Fix error that would sometimes occur on initialization
- PayPalCheckout
- Fix bug with the observability enhancements introduced in version 3.129.0
- PayPalCheckout
- Change the URL of
teBraintreeenvironment towww.braintree.stage.paypal.com
- Change the URL of
- PayPal Checkout
- Improve observability for App Switch flow
- Hosted Fields
- Add option to fix cursor jumps on iOS
- Payment Ready
- Add support for Payment Ready
- PayPal Checkout
- Fix issue with non-default browsers in app-switch vaulting flow
- Update JS docs on limited
contactPreferenceavailability
- PayPalCheckout
- Added support for teBraintree env in Braintree appSwitch
- Fix vaulted recurring payment issue that allowed successful transactions with missing or null
planType
- Venmo
- Fix Android app switch issue when
mobileWebFallback: false
- Fix Android app switch issue when
- Venmo
- Cancel payment context when Venmo app is not installed and user closes tab
- Accept
resource_idparam in hash fragment query parameters - Fix mobile tokenization canceled error catching
- Update Dependencies
- Update credit-card-type to 10.3.0
- Adds support for Verve cards
- Update credit-card-type to 10.3.0
- PayPalCheckout
- Add support for
userActionin vault flow
- Add support for
- Update dependencies
- Update eslint-config-braintree to 7.0.0
- Update eslint to 9.30.1
- Update dependencies:
- Update card-validator to 10.0.3
- Apple Pay
- Adding support for
domainNameto be inferred from the parent location when inside of an iframe
- Adding support for
- PayPal Checkout
- Add support for RBA metadata for checkout flows
- 3D Secure
- Update documentation for giftCardCurrencyCode
- PayPal Checkout
- Fixed issue with
setup_billing_agreementallowing extra parameters to be passed in
- Fixed issue with
- Venmo
- Adding fix for the Venmo component when it was rendering inside of an iframe inside of a webview
- Adding additional code path for the Venmo component for handling if the device is iOS, not in an iframe, and the native Venmo app isn't installed
- Major refactoring of the appSwitch function
- PayPal Checkout
- Update JS Reference Docs for RBA Metadata to include
planTypein code example
- Update JS Reference Docs for RBA Metadata to include
- 3D Secure
- Retrieve Cardinal songbird script URL and integrity hash from the gateway configuration
- LocalPayment
- Fix onPaymentStart not correctly handling asynchronous functions
- PayPal Checkout
- limit user action support to
flow=checkout
- limit user action support to
- Venmo
- Fix analytics calls to use correct function
- PayPal Checkout
- add PayPal AppSwitch support
- PayPal Checkout
- add support for userAction param for
createPayment - new field
totalAmountincreatePaymentfor RBA Metadata
- add support for userAction param for
- Return commercial data from
binDatain credit card response- New commercial boolean metadata fields:
business,consumer,purchase,corporate
- New commercial boolean metadata fields:
- Local Payment Methods
- Fix to make
paymentIdavailable before full page redirect
- Fix to make
- Venmo
- Fix behavior for Android Chrome on
mobileWebFallback
- Fix behavior for Android Chrome on
- Fastlane
- add
tokensOnDemandto GQL - add
tokenExchangeto GQL
- add
- PayPal Checkout
- Add
contactPreferenceto PayPal Checkout schema for Contact Module
- Add
- Venmo
- fix to set
cspNonceifallowDeskopWebLoginis enabled
- fix to set
- Venmo
- Add missing analytics events for Popup Bridge
- Add
styleCspNonceoption to provide nonce to whitelist injected style in content support policy.
- Fraudnet
- Add new option
cb1todataCollector.create()to allow specifying a callback name that will be invoked when fraudnet has finished initializing.
- Add new option
- PayPal Checkout
- Adding public documentation for riskCorrelationId in createPayment
- Fastlane
- Previous fix for a bug that occured when
termsAndConditionsCountrywas not available for tokenization did not cover all edge cases
- Previous fix for a bug that occured when
- Fastlane
- Fix bug that occured when
termsAndConditionsCountrywas not available for tokenization
- Fix bug that occured when
- Fastlane
- add
termsAndConditionsCountryin tokenization
- add
- 3D Secure
- Remove Legacy framework as v1 has been deprecated completely
- Analytics
- Changed Popup Bridge analytics to standardize around all Braintree SDKs
- Apple Pay
- Add
isDeviceTokentoTokenizePayload
- Add
- Update restricted-input to v4.0.3
- Update dependencies
- UglifyJS to 3.19.3
- Update browserify task
- Setting UglifyJS
arrowsoption tofalse
- Setting UglifyJS
- Docs update
- Add
internationalPhoneoption toshippingAddressOverridein PayPal Checkout JSDoc
- Add
- Update dependencies
- framebus to v6.0.3
- Local Payment Methods
- Allow redirect flow to work when inside an iframe
- PayPal Checkout
- Add
recipientEmailoption toshippingAddressOverride
- Add
- Update dependencies
- @braintree/asset-loader to v2.0.2
- @braintree/browser-detection to v2.0.2
- @braintree/iframer to v2.0.1
- @braintree/uuid to v1.0.1
- card-validator to v10.0.2
- credit-card-type to v10.0.2
- framebus to v6.0.2
- inject-stylesheet to v6.0.2
- PayPal Checkout
- Add support for
shippingCallbackUrlin `createPayment
- Add support for
- Data Collector
- Deprecate Kount
- Local Payment Methods
- Fix hasTokenizationParams to account for token URL param
- Hosted Fields
- add support for
-webkit-text-fill-colorCSS rule
- add support for
- Venmo
- Fix a bug where, after redirecting in the mobile web flow, we were passing in a null context ID to a graphql API call. The fix is to set the Venmo instance's venmoPaymentContextId based on resource_id in url.
- Local Payment
- Remove support of
bicfield for iDeal payments - Update documentation for redirectUrl
- Remove support of
- Utility Functions
- Ensure camelCaseToSnakeCase handles null values correctly
- Node.js
- Updated from Node.js v14 to Node.js v20
- Local Payment Methods
- Add Full Page Redirect
- SEPA
- Add support for new full page redirect flow
- PayPal Checkout
- Add
userAuthenticationEmailtocreatePaymentto enable MPE
- Add
- PayPal
- Support Checkout with Vault on v2 orders API
- Hosted Fields
- Fix passing through a sessionId value
- Hosted Fields
- Add support for passing through a sessionId value
- PayPal Checkout
- Enable option to pass through client-metadata-id
- Fastlane
- Add support for loading the Fastlane component in an AMD environment
- Local Payment
- Added Support for Local Payment
mbwayandbancomatpay
- Added Support for Local Payment
- Fraudnet
- Truncate session id to 32 characters.
- PayPal Checkout
- Add client-metadata-id as a data attribute when loading the PayPal SDK
- Google Pay
- Add string conversion for totalPrice
- Fastlane
- Add support for Fastlane.
- DataCollector
- Correlation ID now defaults to match Client Session ID if no Correlation ID is passed when creating DataCollector.
- Package updates:
- Updates @braintree/asset-loader to v2.0.1
- Updates @braintree/browser-detection to v2.0.1
- Updates @braintree/extended-promise to v1.0.0
- Updates @braintree/iframer to v2.0.0
- Updates @braintree/sanitize-url to v7.0.4
- Updates card-validator to v10.0.0
- Updates credit-card-type to v10.0.1
- Updates framebus to v6.0.0
- Updates inject-stylesheet to v6.0.1
- ThreeDS
- Update base
verifyCardto accept amount = 0
- Update base
- PayPal
- Support new
amountBreakdownand its subfields in theupdatePaymentmethod
- Support new
- FrameService
- Updated to limit messages sent between popup and iframe from the window parent.
- Venmo
- Fix issue introduced in previous patch that would sometimes cause the Venmo flow to crash
- Venmo
- Fix issue where the Venmo Desktop flow would sometimes report as a mobile web transaction
- Venmo
- Add support for
isFinalAmountflag to Venmo create
- Add support for
- Package updates
- Updated @braintree/sanitize-url to 7.0.1
- 3D Secure
- Remove call to V1 modal as 3DS v1 is unsupported
- Local Payment
- Add support for recurrent local payment
- Venmo
- Fix race condition in previous bug fix.
- Venmo
- Fix bug where the Venmo Desktop Popup would sometimes return a tokenization error when a customer canceled within the modal.
- Package updates
- Replace
tomashanacek/gulp-envifywithladjs/gulp-envifydue to missing dependency (tomashanacek/loose-envify).
- Replace
- Venmo
- Update
isBrowserSupportedto return true for iOS Chrome whenallowNewBrowserTabis true and Venmo is not presented in an iFrame.
- Update
- Local Payment
- Add support for seamless/oneclick BLIK local payment
- Venmo
- Change overlay container to be on top of other page components and prevent click-through.
- JS Docs
- Venmo
- Add clarification to
isBrowserSupportedfor iOS Chrome.
- Add clarification to
- Venmo
- JS Docs
- PayPal
- Add clarification to
updatePaymentoptions
- Add clarification to
- Apple Pay
- Updated
displayNamedocs forperformValidationto indicate that maximium length is 64 characters
- Updated
- PayPal
- JS docs
- Add more details about content security policy
- Hosted Fields
- Fix bug where keyboard navigation would sometimes not work in FireFox
- 3D Secure
- Updated documentation for
requestVisaDAFparameter onverifyCard
- Updated documentation for
- SEPA
- Add support for new mandate params,
localeandbillingAddress
- Add support for new mandate params,
- PayPal
- Remove PayPal private url and user agreement url from PayPal configuration response as deprecated
- Venmo
- Change overlay container to
position: fixedto cover the entire viewport.
- Change overlay container to
- Package updates
- Updated @braintree/sanitize-url to 6.0.4
- Updated @braintree/browser-detection to 1.17.1
- Venmo
- Fix bug that does not receive the right
enrichedCustomerDataEnabledflag
- Fix bug that does not receive the right
- Update framebus to v5.2.1
- Hosted Fields
- Remove
inputmode="numerical"attribute from the postal code input so the alphanumerical keyboard is presented on iOS devices.
- Remove
- 3D Secure
- Add
requestVisaDAFoption toverifyCard - Add
customFieldsparam toverifyCard
- Add
- PayPal
- Add support for v2/orders
- 3D Secure
- Add
merchantNameoption toverifyCard
- Add
- Venmo
- Fix
isBrowserSupportedfor Venmo web desktop login
- Fix
- Venmo
- Add
collectCustomerBillingAddress,collectCustomerShippingAddress,totalAmount,subTotalAmount,discountAmount,taxAmount,shippingAmount, andlineItemsparams tocreateVenmoPaymentContextfor rendering in Venmo paysheet
- Add
- 3D Secure
- Adds
collectDeviceDataopt-in flag for 3DS lookups
- Adds
- Updated documentation in regards to 3D secure and CSP recommendations
- Local Payment
- Add support for Pay Upon Invoice local payment type:
pay_upon_invoice
- Add support for Pay Upon Invoice local payment type:
- Remove dependency on
promise-polyfill - Drop depenency on
@braintree/class-list - Drop specific behavior for Internet Explorer (IE)
- Drop handling extra async setting of Hosted Fields iframe src
- Remove special handling for IE9 keyup event in Hosted Fields
- Drop dependencies on code for checking for IE useragents
- Drop specific Frame Service IE open bug handling
- Client/All Components
- Drop support for requests on Internet Explorer 9 over the http protocol
- Package updates
- Moved cached-path-relative to devDependencies
- Moved decode-uri-component to devDependencies
- Moved json5 to devDependencies
- Moved minimist to devDependencies
- Moved terser to devDependencies
-
Hosted Fields
- Fixed bug related to cardholderName having wrong inputmode
-
Package updates
- Updated @braintree/sanitize-url to 6.0.2
- Updated json5 to 2.2.3
- Updated decode-uri-component to 0.2.2
- Updated terser to 4.8.1
- Updated minimist to 1.2.8
- Updated cached-path-relative to 1.1.0
- Venmo
- Fix issue resulting in blocked popups in desktop web login flow
- PayPal
- Remove
amountcalculation inupdatePayment; nowamountparam is required.
- Remove
- 3D Secure
- Clarify format of IP Address in
AdditionalInformationobject
- Clarify format of IP Address in
- 3D Secure
- Add
requestedExemptionTypeoption toverifyCard - Deprecate
exemptionRequestedoption inverifyCard - Made
verifyCardBIN param required - Add error on use of v1
- Add
- Hosted Fields
- Improved accessibility for screen readers
- Paypal
- Add support for
updatePayment
- Add support for
- Venmo
- Fix Desktop Web Login flow running from an iframe
- Venmo
- Update constants to use correct deeplinking url for Venmo
- 3D Secure
- Update the regex to validate cardinal commerce domain
- Venmo Desktop
- Use latest framebus for more secure messaging
- Update framebus to v5.2.0
- Hosted Fields
- Improve iframe communication with parent page
- Sepa: fix jsdoc entry for
tokenize - 3D Secure: update jsdoc entry for
teardown - Client
- Validate graphQL url when instantiating in an iframe/popup
- Hosted Fields
- Patch
binAvailableto only send bind detals to parent page
- Patch
- Local payments
- Fix canceled or failed flow for PopupBridge use cases
- Venmo:
- fix cases where nonce payload data was missing after tokenization
- Venmo
- add
allowAndroidRecreationfor addressing Android PopupBridge use cases - Update terminology around desktop web login
- add
- 3D Secure
- Add check to verify acsUrl if not a cardinal commerce domain
- Venmo fix mobileWebFallback url reference
- Add support for SEPA Direct Debit
- Add support for Desktop Web Login flow
- Add support for Mobile Web Fallback
- Fix internal build issue
- Update @braintree/browser-detection to v1.14.0
- Update @braintree/sanitize-url to v6.0.0
- Update promise-polyfill to v8.2.3
- Update restricted-input to v3.0.5
- Venmo
- Fix issue where Samsung Browser was reporting as a supported browser
- Local Payments
- Fix issue where query strings from URLs with a hash fragment before the query string could not be parsed correctly
- Clarify Vault Manager
options.defaultFirstfunctionality in JSDoc
- Venmo
- Fix issue where iOS Chrome was reporting as a supported browser when Venmo was configured for desktop
- Improve Venmo modal UX in desktop flow
- UnionPay
- Fix typo in our GraphQL Tokenization CREDIT_CARD_BRAND_MAP
- Venmo
- Fix issue where iOS Chrome was reporting as a supported browser
- Client
- Add Elo, Hiper, and Hipercard graphQL adapters to card tokenization responses
- Hosted Fields
- Add support for Elo, Hiper, and Hipercard in tokenization payload
- Fix issue where Hosted Fields won't lose focus if scrolled out of view on iOS
- Payment Request
- Add support for Elo, Hiper, and Hipercard in tokenization payload
- Venmo
- Expose
paymentContextIdwhen available
- Expose
- Client
- Add Elo, Hiper, and Hipercard to
supportedCardTypes - Fix issue where analytics event would report redundant errors when client fails to set up (#606)
- Add Elo, Hiper, and Hipercard to
- Venmo
- Adjust UI for better navigation
- Data Collector
- Updates
clientMetadataIdtoriskCorrelationId(clientMetadataIdis treated as an alias)
- Updates
- Hosted Fields
- Allow passing
iframeTitlein fields configuration to customize iframe titles for field (#545)
- Allow passing
- Local Payments
- Add
options.displayNametostartPayment
- Add
- Venmo
- Fix issue where Facebook on Android would report as a supported browser
- Update @braintree/browser-detection to v1.12.1
- Update inject-stylesheet@v5.0.0
- Venmo
- Correct issue where the Venmo app could not be launched succesfully from the Facebook app
- Data Collector
- Updates
correlationIdtoclientMetadataId(correlationIdis treated as an alias)
- Updates
- Venmo
- Fix issue where
@was sometimes not returned in username param upon successful tokenization
- Fix issue where
- Data Collector
- Allow passing custom correlation id when initializing data collector
- Visa Checkout
- Add
encryptionKeytocreateInitOptions
- Add
- 3D Secure
- deprecate
cardAddinverifyCardin favor ofcardAddChallengeRequested(cardAddcan still be used as an alias) - update
cardAddChallengeRequestedinverifyCardto allow passingfalse - add
typetoverifyCardresponse payload - fix issue where v1 fallback could result in an unrecoverable exception (#582)
- deprecate
- Hosted Fields
- Fix issue where inputs could not tab forward in iOS Safari 14.5+ (tabbing backward is still broken) (#456)
- Fix issue where SDK could not be used with server side rendering in Node v16 (#576)
- Hosted Fields
- Fix issue where integrations with
selectconfiguraitons for expiration month and year would throw an error (#578)
- Fix issue where integrations with
- PayPal Checkout
- Fix issue in
loadPayPalSDKwhere data attributes could be passed in with an extradata-prefix
- Fix issue in
- 3D Secure
- Add
cardAddparam toverifyCard
- Add
- Google Pay
- Support Maestro cards
- Update restricted-input to v3.0.4
- Hosted Fields
- Fix issued where
binAvailableevent would not fire off when pasting a new credit card number over the previous card - Fix issue where some Mac OS input sources would not format correctly in Safari
- Fix issued where
- Hosted Fields
- Fix issue where Safari could not programatically focus to input (#456)
- Fix issue where iOS Safari could not tab forward through inputs (#460)
- Fix issue where Desktop Safari required 2 tabs to tab forward (#490)
- Venmo
- Fix issue where Chrome for iOS would leave behind a blank window, making it difficult to return to the merchant page in manual return flow
- Update browser-detection to v1.12.0
- Apple Pay
- Support Elo cards
- Google Pay
- Support Elo cards
- Venmo
- Add
displayNameoption - Fix issue where payment contexts where not cancelled correctly
- Add
- Update @braintree/sanitize-url to v5.0.2
- Venmo
- Add
paymentMethodUsageparameter to create
- Add
- Update card-validator to v8.1.1
- Local Payments
- Fix issue where local payment window may not open
- Fix issue where customer could get stranded when cancelling from a mobile banking app
- Update @braintree/sanitize-url to v5.0.1
- Venmo
- Fix issue where profile id was not being passed to Venmo Desktop flow
- Update browser-detection to v1.11.1
- Hosted Fields
- Fix issue where nested Shadow DOM elements would not allow the iframes to initialize
- Venmo
- Fix issue where
venmo.isSupported({ allowNewBrowserTab: false })was returningtruefor Firefox on iOS
- Fix issue where
- Local Payments
- Correct error code for a payment that fails on the bank side of the payment (was previously reported as the customer canceling the process)
- Venmo
- Add
useRedirectForIOSflag as an alternate way to open Venmo flow in iOS environments
- Add
- Hosted Fields
- Add support for
box-shadowstyle (#559)
- Add support for
- PayPal
- Add
offerPayLaterto PayPaltokenize
- Add
- PayPal Checkout
- Correct default
intentparameter totokenizeinloadPayPalSDKwhen usingvault: true
- Correct default
- Venmo
- Correct issue where incorrect return url could be constructed
when merchant page url included an empty
# - Fix issue with
requireManualReturnflow in iOS webviews
- Correct issue where incorrect return url could be constructed
when merchant page url included an empty
- PayPal Checkout
- Default
intentparameter toauthorizeinloadPayPalSDKwhen usingvault: trueto eliminate console error about usingtokenizefor intent (#544) - Fix issue where dispatch frame would not get cleaned up when
calling
teardown(#555)
- Default
- Local Payments
- Add
bicproperty tooptionsparameter for iDEAL transactions - Update default size of window to 1282 X 720
- Allow height and width of the window to be specified with
windowOptions.heightandwindowOptions.widthwhen callingstartPayment
- Add
- Update framebus to v5.1.2
- Fix issue where components dependent on framebus (Hosted Fields, PayPal, etc) would not load in IE11 (#554)
- Venmo
- Add
cancelTokenizationfor programatic cancelation of thetokenizeflow - Fix issue where venmo component may not yet be ready when beginning tokenization
- Fix issue where Venmo would fail when embedded in an iframe
- Add
- 3D Secure
- Add
accountTypeparam toverifyCard
- Add
- Update framebus to v5.1.0
- Data Collector
- Fix issue where sandbox environment was not set for Advanced Fraud Protection
- Update promise-polyfill to v8.2.0
- Update credit-card-type to v9.1.0
- Hosted Fields
- Fix issue where card number would present as invalid when autofilled from cardholder name field (#547)
- Allow maxlength field to be greater than 10 for postal code inputs (#551)
- Local Payments
- Add
paymentTypeCountryCodeas supported field when starting a local payment
- Add
- Update @braintree/browser-detection to v1.11.0
- Update @braintree/extended-promise to v0.4.1
- Update framebus to v5.0.0
- Hosted Fields
- Fix issue where multiple Hosted Fields instances would issue warnings in the console about duplicate ids (closes #533)
- PayPal Checkout
- Support displaying a customer's vaulted PayPal account when
rendering the PayPal SDK using
options.autoSetDataUserIdTokenin the create call
- Support displaying a customer's vaulted PayPal account when
rendering the PayPal SDK using
- Update framebus to v4.0.4
- Apple Pay
- Support Maestro cards
- Hosted Fields
- Support
text-alignstyle
- Support
- PayPal Checkout
- Fix issue in
loadPayPalSDKwhere PayPal SDK should have been loaded in the head of the document instead of the body to allow re-loading the SDK dynamically
- Fix issue in
- Update @braintree/sanitize-url to v5.0.0
- Client
- Provide
CLIENT_AUTHORIZATION_INVALIDerror when client token has expired or a tokenization key has been deactivated or deleted
- Provide
- Venmo
- Add
allowWebviewsconfiguration toisBrowserSupported
- Add
- Hosted Fields
- Fix issue where cardholder name field would present a number keyboard on iOS devices (closes #523)
- Fix issue where incorrect keyboard would be used for mobile devices that do not support input formatting
- Fix issue where autocomplete cannot run multiple times (closes #479)
- Add autofill handling for every hosted field (closes #480)
- PayPal Checkout
- In sandbox, use client id found in merchant configuration for
loadPayPalSDKinstead of always usingsb - Allow data attributes to be passed to
loadPayPalSDK - Fix issue when tokenizing during
requestBillingAgreement: trueflows - Fix issue where
intentused increatePaymentwas not passed totokenizePaymentin PayPal JS SDK
- In sandbox, use client id found in merchant configuration for
- Venmo
- Remove use of
global(usewindowinstead for better compatibility)
- Remove use of
- 3D Secure
- Add
authentication-modal-renderandauthentication-modal-closeevents
- Add
- Update @braintree/event-emitter to v0.4.1
- Update card-validator to v8.1.0
- Update restricted-input to v3.0.3
- Hosted Fields
- Allow setting
margin-top,margin-right,margin-bottom,margin-leftin styles (#513) - Allow setting
padding-top,padding-right,padding-bottom,padding-leftin styles (#513) - Fix issue where autofilling with a Google Pay card while using
maskInputwould fail to fill the card number - Fix issue where fields in shadow DOM would have incorrect high compared to container
- Add
cardholderNameas supported field - Add
cardholderNameas a field in the tokenization payload
- Allow setting
- PayPal Checkout
- Add
requestBillingAgreementandbillingAgreementDetailsto createPayment
- Add
- 3D Secure
- Add event for when a customer cancels the verification
- Add
rawCardinalSDKVerificationDatatoverifyCardpayload
- Update inject-stylesheet to v4.0.0
- Hosted Fields
- Fix issue where inputs would not load if
-mozattributes are used in Google Chrome (#516) - Fix issue where
preventAutofilldid not work in the Chrome browser
- Fix issue where inputs would not load if
- Update restricted-input to v3.0.2
- Use @braintree/uuid for uuid generation
- Update @braintree/browser-detection to v1.10.0
- Update card-validator to v8.0.0
- Update credit-card-type to v9.0.1
- Update iframer to v1.1.0
- Update inject-stylesheet to v3.0.0
- Update restricted-input to v3.0.1
- Update @braintree/asset-loader to v0.4.4
- Update @braintree/class-list to v0.2.0
- Update @braintree/event-emitter to v0.4.0
- Update @braintree/extended-promise to v0.4.0
- Update @braintree/sanitize-url to v4.1.1
- Update @braintree/wrap-promise to v2.1.0
- Hosted Fields
- Allow internal labels to be configured for localization with
internalLabelfield property - Mark hidden inputs inside iframe (used to support autofill
capabilities in browsers) with
aria-hidden - Fix issue where autofill would not function in Chrome for iOS (closes #491)
- Allow opt out of credit card autofill with
preventAutofilloption - Support web components (closes #495)
- Allow internal labels to be configured for localization with
- Update framebus to v4.0.2 (fixes #504)
- Update restricted-input to v2.1.1
- Update @braintree/extended-promise to v0.3.1
- Use
windowinstead ofglobalin source code (closes #401) - PayPal Checkout
- Add
loadPayPalSDKmethod to dynamically load the v5 PayPal SDK
- Add
- Update framebus to v4.0.1
- Google Pay
- Fix issue where PayPal via Google Pay would not be enabled for eligible merchants
- Venmo
- Fix issue where a single page app's router may disrupt the Venmo tokenization
- Add
ignoreHistoryChangesto create options - Fix issue where Android webviews could not app switch correctly
- Update sanitize-url to v4.0.1
- Google Pay
- Add
binto GooglePaymenttokenizedPayload
- Add
- Apple Pay
- Add
useDeferredClientoption when creating instance createPaymentRequestwill return a promise if instantiated withuseDeferredClientandauthorizationinstead of a client
- Add
- Google Pay
- Add
useDeferredClientoption when creating instance createPaymentDataRequestwill return a promise if instantiated withuseDeferredClientandauthorizationinstead of a client
- Add
- PayPal Checkout
- Added
cobrandedCardLabelto thetokenizePaymentresponse
- Added
- 3D Secure
- Update to use deferred client
- Venmo
- Update to use deferred client
- Vault Manager
- Update to use deferred client
- Data Collector
- Add
useDeferredClientoption when creating instance - Add
getDeviceDatamethod to get device data asynchronously
- Add
- Hosted Fields
- add
getChallengesmethod - add
getSupportedCardTypesmethod
- add
- PayPal Checkout
- Provide way to opt-out of auto-vaulting behavior
- Add
getClientIdmethod
- Update
@braintree/extended-promiseto v0.3.0 - Data Collector
- Hide Kount iframe from screen readers (#484 thanks @iamstratos)
- Hosted Fields
- Fixes issue where React frameworks could not pass DOM nodes in
as
containerinfields(#487)
- Fixes issue where React frameworks could not pass DOM nodes in
as
- Venmo
- Fix issue where webview integrations could not tokenize
- Add
processResultsDelayconfiguration totokenize
- 3D Secure
- Fix issue where cardinal sdk options were not being used
- Falls back to a v1 flow if v2 SDK setup fails
- 3D Secure
- Add
cardinalSDKConfigoption tocreatemethod. Supported properties:timeoutmaxRequestRetriesloggingpayment.displayLoadingpayment.displayExitButton
- Add
- Venmo
- Use
hashchangeevent listener to detect when Venmo tokenization has completed
- Use
- Fix issue where not passing in an
authorizationto components would throw a misleading error - Update restricted-input to v2.1.0
- Client
- Retry failed connections to Braintree Gateway due to TCP Preconnect errors in all browsers
- Google Pay
- Add support for
isNetworkTokenizedparam inparseResponsemethod
- Add support for
- Hosted Fields
- Fix issue where pasting a card number over an Amex number could cut off the last digit
- PayPal Checkout
- Added support for shipping_options
- Add
vaultInitiatedCheckoutPaymentMethodTokenparameter tocreatePayment
- Update @braintree/sanitize-url to v4.0.0
- Client
- Fix issue where client may emit an uncaught exception error in the console for an invalid authorization (fixes #465)
- Local Payments
- Fix issue where callback could not be used in Mobile fallback flow
- Venmo
- Fix issue where params may be malformed upon tokenization
- 3D Secure
- Add
2-bootstrap3-modalas aversionoption - Add
2-inline-iframeas aversionoption - Fix issue where billing address information was not being sent to lookup if no additional information was sent
- Add
- Update
@braintree/browser-detectionto v1.9.0 - Hosted Fields
- Pass back new regulation environments dynamically as they become available
- Fix issue where Firefox would require two shift-tabs to navigate away from a field
- Fix issue where IE9-11 could not tab correctly
- 3D Secure
- Allow raw string to be passed into
initializeChallengeWithLookupResponsemethod - Deprecate
onLookupCompleteparam inverifyCardin favor of setting a listener forlookup-complete - Add
requiresUserAuthenticationparam to lookup data inonLookupCompletecallback - Fix issue where
initializeChallengeFrameWithLookupResponsewould error if called too quickly after creation
- Allow raw string to be passed into
- Update credit-card-type to v8.3.0
- Hosted Fields
- Software keyboards can now navigate hosted fields even when they're interspersed with merchant fields
- Fix bug on desktop where fields could not navigate between fields with native inputs between the hosted fields
- Fix issue where regulation environment information was not parsed correctly
- Update event-emitter to v0.3.0
- Hosted Fields
- Add
marginto allowed CSS rules (closes #449)
- Add
- 3D Secure
- Fix issue where
binwas not being passed along to Cardinal SDK
- Fix issue where
- Hosted Fields
- Add
authenticationInsightoption to tokenization - Fix issue where validation errors without field errors could cause a syntax error
- Add
- 3D Secure
- Enable
cancelVerifyCardmethod for 3D Secure version 2 integrations - Update songbird.js script urls
- Enable
- Update restricted-input to v2.0.2
- Update browser-detection to v1.8.0
- 3D Secure
- Fix issue where an error may be thrown when cancelling the 3D Secure flow
- Add better handling for lookup errors
- Fix issue where component would throw an error when creating a 3ds component without a Cardinal Authentication JWT
- Google Pay
- Fix issue where Google Pay would error in Edge (#446)
- Hosted Fields
- Fix issue where chrome books could not input correctly with a soft keyboard
- Hosted Fields
- Add
expirationMonthandexpirationYearto tokenization payload
- Add
- Hosted Fields
- Add
binAvailableevent
- Add
- 3D Secure
- Add
threeDSecureInfoto theverifyCardresponse
- Add
- Us Bank Account
- Bring out of Beta into General Availability
- Update
asset-loaderto v0.3.1 - Update
event-emitterto v0.2.0 - Data Collector
- Pass back invalid options error at beginning of data collector setup
- Hosted Fields
- Add
containerparam for field, to pass in CSS selector or a DOM node as field container - Make
selectorparam an alias forcontainer - Add
offmethod for unsubscribing from events without tearing down - Add
setMonthOptionsmethod to dynamically update options for expiration month's configured as select elements (#393)
- Add
- 3D Secure
- Add 3DS version 2 support
- Deprecate version 1 flow
- UnionPay
- Fix issue where calling
fetchCapabilitiestwice in quick succession causes the subsequent requests to not fire (#441)
- Fix issue where calling
- Update restricted-input to v2.0.1
- Update inject-stylesheet to v2.0.0
- Add
titleandaria-hiddenattributes to iframes created withinframeServicefor accessibility (#434, thanks @TomPridham) - Hosted Fields
- Add configuration to validate specific card brands, overriding merchant control panel settings
- Update @braintree/wrap-promise to v2.0.0 - errors thrown inside developer supplied callback functions will log to the console
- Update restricted-input to v2.0.0
- Google Pay
- Throw an error if an unsupported version of Google Pay API is used
- Use GooglePayment PayPal client ID
- Hosted Fields
- Allow specifying only a subset of fields to be validated and tokenized
- Fix issue where Chrome iOS autofill would not fill in full card number
- Local Payments
- Update endpoint for creating local payments
- Update @braintree/sanitize-url to v3.1.0
- Google Pay
- Fix issue where tokenization details for Google Payments could accidentally be dropped
- Masterpass
- Fix issue with invalid callback url
- PayPal Checkout
- Fix bug where merchant account id was not being applied in vault flows
- Hosted Fields
- Fix issue tabbing between fields on mobile devices
- Update credit-card-type to v8.2.0, fixes an issue where UnionPay cards of lengths 14 or 15 were not marked as valid
- Local Payment
- Fix typo where the fallback scenario could not succesfully tokenize
- Data Collector
- Fix issue where PayPal data collection could not teardown all scripts
- Fix issue where PayPal data collection would not setup correctly when initialized more than once
- Speed up PayPal data collection setup when initialized more than once
- Local Payment
- Fix issue where fallback URL was not decoded correctly
- Update credit-card-type to v8.1.0
- Client
- Add bin to credit card tokenization payload
- Hosted Fields
- Add bin to credit card tokenization payload
- Payment Request
- Add bin to credit card tokenization payload
- PayPal Checkout
- Update component for compatibility with https://www.paypal.com/sdk/js
- Update @braintree/sanitize-url to v3.0.0
- Hosted Fields
- Fixes issue where inputs would not focus after initial touch event on iOS Safari (#405, thanks @lgodziejewski)
- Allow
maxCardLengthinnumberfield - Fix issue where UnionPay cards were not checked for luhn validity
- PayPal Checkout
- When passing in
authorizationinstead of aclientin component creation, the client will be created in the background (improves loading time)
- When passing in
- Payment Request
- Add canMakePayment method
- Add Local Payments component
- PayPal Checkout
- Add support for
lineItems
- Add support for
- Payment Request
- Support Google Pay v2
- Support PayPal in Google Pay
- Update framebus to v3.0.2
- 3D Secure
- Allow creating component with an
authorizationinstead of aclient
- Allow creating component with an
- American Express
- Allow creating component with an
authorizationinstead of aclient
- Allow creating component with an
- Apple Pay
- Allow creating component with an
authorizationinstead of aclient
- Allow creating component with an
- Data Collector
- Allow creating component with an
authorizationinstead of aclient
- Allow creating component with an
- Google Payment
- Allow Google Pay Version 2 requests
- Allow direct tokenization of PayPal accounts
- Allow creating component with an
authorizationinstead of aclient
- Hosted Fields
- Allow creating component with an
authorizationinstead of aclient(added in v3.38.1, documented in v3.40.0)
- Allow creating component with an
- Masterpass
- Allow creating component with an
authorizationinstead of aclient
- Allow creating component with an
- Payment Request
- Allow creating component with an
authorizationinstead of aclient
- Allow creating component with an
- PayPal
- Allow creating component with an
authorizationinstead of aclient
- Allow creating component with an
- PayPal Checkout
- Fix issue where
merchantAccountIdoption could not be used when the default Merchant Account did not have PayPal enabled - Allow creating component with an
authorizationinstead of aclient
- Fix issue where
- UnionPay
- Allow creating component with an
authorizationinstead of aclient
- Allow creating component with an
- US Bank Account
- Allow creating component with an
authorizationinstead of aclient
- Allow creating component with an
- Vault Manager
- Allow creating component with an
authorizationinstead of aclient
- Allow creating component with an
- Venmo
- Fix issue where url may be overwritten when a hash is not present #394 (thanks @arettberg)
- Add
deepLinkReturnUrltovenmo.create - Allow creating component with an
authorizationinstead of aclient
- Visa Checkout
- Allow creating component with an
authorizationinstead of aclient
- Allow creating component with an
- PayPal Checkout
- Add
merchantAccountIdto PayPaloptions
- Add
- Update promise-polyfill to v8.1.0
- Use @braintree/class-list for manipulating classes
- Use @braintree/asset-loader for loading assets
- Client
- Speed up client creation caching and prevent race conditions
- Hosted Fields
- Fix issue where analytics in iframe could be out of sync with analytics on merchant page
- Update credit-card-type to v8.0.0
- Update card-validator to v6.0.0
- Hosted Fields
- Only accepts Luhn valid UnionPay cards. Previously, non-Luhn valid card numbers were accepted even though they were not supported by Braintree
- Payment Request
- Fix issue where npm browser builds could not load payment request (#388)
- Provide browser compatible files on npm for each component in
dist/browser/component-name.js(#366) - Update credit-card-type to v7.1.0
- Hosted Fields
- Detect if
Mircredit card is entered - Fix issue where Android text field would be selected when focused after inputting data (#379)
- Fix error emitted by Chrome (in verbose logging mode) for not
using a passive flag for
touchstartevent
- Detect if
- Update promise-polyfill to v8.0.0
- Provide browser compatible file on npm in
dist/browser(#366) - Google Pay
- Preserve
allowedCardNetworksfrom default configuration incardRequirementsif not overwritten increatePaymentDataRequest
- Preserve
- Hosted Fields
- Add option to reveal last four of credit card number when masking input
- Expose error when no field keys are passed into fields object (#355)
- Add title attribute to iframes to improve accessibility for screenreaders (#374)
- Vault Manager
- Expose if fetched payment methods have an associated subscription
- Update credit-card-type to v7.0.0
- Update card-validator to v5.0.0
- Client
- Fix client cache issue when using teardown
- Data Collector
- Hide 1px Kount iframe
- Hosted Fields
- Fix improper validation on iPad keyboards for expiration date field #369
- Fix issue where extra history events would be added in Chrome and Firefox
- Venmo
- Add validation for profile ids (must be strings)
- Apple Pay
- Fix issue with Apple Pay configuration #365
- Hosted Fields
- Include data about the containers for invalid fields in tokenization error (#359)
- Fix issue where inputs would not mask in iOS
- 3D Secure
- Fix issue where payment method details were not provided in the flow where an iframe is not needed
- Fix issue where description in verify card payload was coming
back with
+symbols instead of spaces - Add binData property to verify card payload
- Internal performance optimizations
- Update framebus to v3.0.1
- Update credit-card-type to v6.3.0
- Hosted Fields
- Allow passing in class name for style configuration (#361)
- Fix issue where tokenization could not take place because the
window.lengthvariable had been overwritten - Fix regression where sending card numbers with - or spaces would result in cardType unknown in the payload (#241)
- Payment Request
- Fix issue with changing shipping address and shipping options which could cause Chrome to crash
- Payment Request
- Expose errors more gracefully
- Hosted Fields
- Revert fix issue where Roboform could not autofill cards
#356.
It was causing an issue where the inputs would be hidden in
Safari if their container was changed from
display: nonetodisplay: block
- Revert fix issue where Roboform could not autofill cards
#356.
It was causing an issue where the inputs would be hidden in
Safari if their container was changed from
- Venmo
- Add support for Venmo profile IDs
- Google Pay is no longer in beta.
- Masterpass
- Fix issue where error would not surface correctly for window being blocked by a popup blocker
- PayPal
- Fix issue where error would not surface correctly for window being blocked by a popup blocker
- Hosted Fields
- Fix issue where autocomplete properties were not applied (closes #353)
- Ensure that focus state is maintained when focus is called programatically
- Cards that cannot be processed by the merchant can invalidate
Hosted Fields by adding a
fields.number.rejectUnsupportedCardsoption to the object passed into Hosted Fieldscreate. See documentation for adding this property. - Fix issue where Roboform could not autofill cards #356
- PayPal Checkout
- Fix error handling around not having a linked PayPal sandbox account
- 3D Secure
- Add support for American Express SafeKey params
- Update credit-card-type to v6.2.0
- Update card-validator to v4.3.0
- Venmo
- Add browser support detection helper as static method on
braintree.venmo.isBrowserSuppported
- Add browser support detection helper as static method on
- Update promise-polyfill to v7.0.2 (#350 thanks @Macavity)
- Fixes issues with promises not working in IE from v3.28.0-v3.29.0
- Hosted Fields
- Add
paddingto supported CSS attributes (#104)
- Add
- Update credit-card-type to v6.1.1
- Update jsdoc-template to v3.2.0
- Hosted Fields
- Fix issue where some series 2 Mastercard bin ranges were not being detected (internal assets for v3.19.1 forward have this fix applied)
BREAKING CHANGES
- Google Pay - Beta
- Switch from using iframe based solution to Google pay.js script
tag solution
braintree.googlePayment.isSupportedhas been removedtokenizeandcreateSupportedPaymentMethodsConfigurationandonmethods and has been removed. See documentation example for new integration pattern.
- Switch from using iframe based solution to Google pay.js script
tag solution
- Update @braintree/sanitize-url to v2.1.0
- Update promise-polyfill to v7.0.0
- American Express
- Add missing
teardownmethod
- Add missing
- Apple Pay
- Add missing
teardownmethod
- Add missing
- Client
- Add missing
teardownmethod
- Add missing
- Google Pay
- References to Pay with Google have now been converted to Google Pay in accordance with Google's brand guidelines
- PayPal Checkout
- Add missing
teardownmethod
- Add missing
- Vault Manager
- Add missing
teardownmethod
- Add missing
- Venmo
- Add missing
teardownmethod
- Add missing
- Visa Checkout
- Add missing
teardownmethod
- Add missing
BREAKING CHANGES
- Google Pay - Beta
- Error codes that included
PAY_WITH_GOOGLEhave been updated toGOOGLE_PAYMENT- PAYMENT_REQUEST_PAY_WITH_GOOGLE_FAILED_TO_TOKENIZE -> PAYMENT_REQUEST_GOOGLE_PAYMENT_FAILED_TO_TOKENIZE
- PAYMENT_REQUEST_PAY_WITH_GOOGLE_PARSING_ERROR -> PAYMENT_REQUEST_GOOGLE_PAYMENT_PARSING_ERROR
- Error codes that included
- Payment Request - Beta
- Change
payWithGoogleproperty togooglePayproperty when instantiating a Payment Request component withenabledPaymentMethodsoption
- Change
- Update card-validator to v4.2.0
- Internal performance optimizations
- Prefer popup bridge before browser supporting popups in frame service (#341, thanks @night)
- Hosted Fields
- Send back timeout error if Hosted Fields takes longer than 60 seconds to set up
- Allow locality (the city) to be sent as part of billing address fields
- Allow region (the state) to be sent as part of billing address fields
- Allow cvv to have minlength be applied when using cvv only integration
- Masterpass
- Throw MASTERPASS_POPUP_FAILED if required params returned by masterpass are missing
- Payment Request - Beta
- Support
requestShippingoption
- Support
- Pay with Google - Beta
- Support
requestShippingoption
- Support
- Hosted Fields
- Correct bug where pasting in on an iOS device would mangle the input (braintree/restricted-input#46)
- Update credit-card-type to version 6.1.0 (accept JCB cards of length 17-19)
- Hosted Fields
- Add
setMessagefor screenreader-compatible error messages - Fix issue where autofill would not work in selects with month values 1-9 (##331)
- Allow fields to be prefilled with values
- Add
- Payment Request - Beta
- Add
lastFourto tokenize payload
- Add
- Update credit-card-type to v6.0.0
- Update card-validator to v4.1.1
- Hosted Fields
niceTypefor Mastercard will now render asMastercardinstead ofMasterCardto match Mastercard's brand guidelines
- Pay with Google - Beta
- Correct isSupported to only return true on Android Chrome v61 and higher
- 3D Secure
- Error early in creation if a tokenization key is used for authorization
- Add liablity shift info to top level of cancelVerifyCard payload
- Payment Request - Beta
- Add billing address details to tokenization payload
- Pay with Google - Beta
- Apply field to allow tokenization with tokenization key
- Properly wrap Pay with Google so callbacks can be used
BREAKING CHANGES
- Payment Request and Pay with Google - Beta
- Some non-essential fields from tokenize payload removed
- Add beta Pay with Google Component
- Add beta Payment Request Component
- Update sanitize-url to version 2.0.2
- Update restricted-input to version 1.2.6
- Data Collector
- Update sjcl to 1.0.7
- Provide raw device data object as
instance.rawDeviceData
- Hosted Fields
- Add
billingAddress.extendedAddressas a tokenization option - Add
billingAddress.companyas a tokenization option - Add
billingAddress.firstNameas a tokenization option - Add
billingAddress.lastNameas a tokenization option
- Add
- 3D Secure
- Allow opting out of bank frame loader
- Vault Manager
- Provide bin data if present
- Update sanitize-url to version 2.0.0
- 3D Secure
- Add
liabilityShiftedandliabilityShiftPossibleto the top level when 3DS lookup fails to open a 3DS iframe.
- Add
- Hosted Fields
- Fix issue where inputs would not mask correctly when autofilled
- Update credit-card-type to version 5.0.4
- Fix issue where placeholder would not load in IE9
- Security improvements
- Data Collector
- Fix bug where Data Collector with Kount could not be torn down more than once (#314)
- Hosted Fields
- Fix regression where postal code input would not display alpha numeric keyboard on iOS
- Add bin data to tokenization payload
- Add option for input masking
- Hosted Fields
- Fix regression where iframes could not load on IE 9 and 10
- Hosted Fields
- Fix issue where phone number keyboard would display on iOS devices
- Allow passing
countryName,countryCodeAlpha2,countryCodeAlpha3, andcountryCodeNumericunderbillingAddressas a tokenization option - Fix issue where Apple based browsers (Safari, iOS Chrome, iOS Firefox, etc) would add multiple history states when Hosted Fields loads
- Update browser-detection to v1.6.0
- Hosted Fields
- Fix issue where field would not blur on iOS when tapping out of the Hosted Fields inputs
- PayPal
- Fix issue in iOS Firefox where PayPal window would not open
- Client
- Add request retries for TCP preconnect errors in Internet Explorer and Edge
- Hosted Fields
- Update restricted-input to version 1.2.5
- Fix bug where placeholder would be set to null after autocomplete fires if no placeholder was set
- Allow passing
streetAddressunderbillingAddressas a tokenization option - Fix issue where Hosted Fields would not load intermittently in Edge and IE11
- Fix issue where Hosted Fields validity would not update after paste events (#308)
- Client
- Cache client creation when using the same authorization
- Hosted Fields
- Update credit-card-type to v5.0.3 to fix a bug where certain MasterCard bins were not being marked as potentially valid
- Inline JS in HTML frames
- Hosted Fields
- Allow
cardholderNameto be passed while tokenizing the card - Fix bug disabling fields when enter is pressed
- Allow
- Hosted Fields
- Fix autofill issues for Chrome and Safari (#239)
- Hosted Fields
- Add
minlengthto fields options to set theminlengthof postal code inputs - Update credit-card-type dependency (UnionPay detection fixes)
- Update restricted-input dependency to 1.2.1 (Browser Detection updates)
- Add
- PayPal
- Frame fixes in iOS
- Client
- Access version with
getVersion()
- Access version with
- Hosted Fields
- Fix bug where inputs would not load intermittently on old browsers (#233)
- Typing
1/in an expiration date field will now result in01 /formatting (#221) - Fix bug where certain webviews would cause inputs to be untypable after tapping a second time (#207)
- Masterpass
- Enable Masterpass as a payment option
- PayPal
- Mark PayPal component as deprecated in favor of using PayPal Checkout
- Hosted Fields
- Fix bug where expiration dates using select boxes would print an error when selected on mobile devices
- Fix a bug where Android Webviews on KitKat could not enter more than 4 characters in inputs
- Add supportsInputFormatting method to check if browser will support input formatting
- Data Collector
- Cache and reuse device data when created multiple times with the same Kount merchant id
- Fix issue where Kount data was not collected by additional Data Collector instances
- American Express
americanExpress.createreturns a promise if no callback is providedamericanExpress.getRewardsBalancereturns a promise if no callback is providedamericanExpress.getExpressCheckoutProfilereturns a promise if no callback is provided
- Apple Pay
applePay.createreturns a promise if no callback is providedapplePay.performValidationreturns a promise if no callback is providedapplePay.tokenizereturns a promise if no callback is provided
- Hosted Fields
hostedFields.tokenizereturns a promise if no callback is providedhostedFields.addClassreturns a promise if no callback is providedhostedFields.removeClassreturns a promise if no callback is providedhostedFields.setAttributereturns a promise if no callback is providedhostedFields.removeAttributereturns a promise if no callback is providedhostedFields.setPlaceholderreturns a promise if no callback is providedhostedFields.clearreturns a promise if no callback is providedhostedFields.focusreturns a promise if no callback is provided
- PayPal
- Add support for PayPal Credit in Vault flow
paypal.createreturns a promise if no callback is providedpaypal.tokenizereturns a promise if no callback is providedpaypal.teardownreturns a promise if no callback is providedpaypal.closeWindowcloses the PayPal window if openpaypal.focusWindowfocuses the PayPal window if open
- PayPal Checkout
- Add support for PayPal Credit in Vault flow
- 3D Secure
threeDSecure.createreturns a promise if no callback is providedthreeDSecure.verifyCardreturns a promise if no callback is providedthreeDSecure.cancelVerifyCardreturns a promise if no callback is providedthreeDSecure.teardownreturns a promise if no callback is provided
- Union Pay
unionPay.createreturns a promise if no callback is providedunionPay.enrollreturns a promise if no callback is providedunionPay.fetchCapabilitiesreturns a promise if no callback is providedunionPay.teardownreturns a promise if no callback is providedunionPay.tokenizereturns a promise if no callback is provided
- Visa Checkout
visaCheckout.createreturns a promise if no callback is providedvisaCheckout.tokenizereturns a promise if no callback is provided
- Hosted Fields
- Fix an issue where Firefox did not receive focus/blur events consistently when navigating fields via tab key
- Provide specific errors for problems with tokenization
- Add
focusto allow programmatic focusing of inputs - Add
maxlengthto fields options to set themaxlengthof CVV and postal code inputs. Use cases:- Limiting the length of the CVV input for CVV-only verifications when the card type is known
- Limiting the length of the postal code input when cards are coming from a known region
- PayPal
- Fix bug where PayPal did not detect when the Popup was closed by the customer
- Client
- Fix a bug where
atobwas not being called with the window context
- Fix a bug where
- Hosted Fields
- Add support for
appearanceCSS rule
- Add support for
- PayPal
- Fix support issues
- Visa Checkout
- Add Visa Checkout component
- Client
- Fix a bug where errors within the request callback function were being caught by the request promise instead of bubbling up
- PayPal Checkout
- Allow tokenization keys to use the
vaultflow
- Allow tokenization keys to use the
- Hosted Fields
hostedFields.createnow returns a promise if no callback is providedhostedFields.tokenizenow returns a promise if no callback is provided
- PayPal Checkout
- Enable webview support
intentproperty is now passed in correctly
- Vault Manager
- Create the Vault Manager component
- Client
- Fix bug where creation errors did not bubble up correctly
- Data Collector
- Fix bug where creation errors did not bubble up correctly
- Hosted Fields
- Add
removeAttributeto allow removal of certain input attributes - Add RTL language support
- Add
- PayPal
- Add synchronous method to determine if PayPal supports the browser
- PayPal Checkout
- Add synchronous method to determine if PayPal Checkout supports the browser
- Fix bug that caused some errors to be uncatchable
- Add
landingPageTypeas a tokenization optionlogin- A PayPal account login landing page is usedbilling- A non-PayPal account landing page is used
- Provide error when PayPal Checkout can not be used because there is no linked PayPal Sandbox account
- Client
client.requestnow returns a promise if no callback is provided.client.createnow returns a promise if no callback is provided
- Data Collector
dataCollector.createnow returns a promise if no callback is provideddataCollectorInstance.teardownnow returns a promise if no callback is provided
- Hosted Fields
- Fix bug where some versions of IE could not render Hosted Fields
inputs because of
window.topbeing undefined - Fix autofill for 1Password extensions
- Correct detection of Samsung browsers to disable input formatting in old versions
- Allow passing
postalCodeas an option when thepostalCodefield is not enabled
- Fix bug where some versions of IE could not render Hosted Fields
inputs because of
- PayPal
- Add
landingPageTypeas a tokenization optionlogin- A PayPal account login landing page is usedbilling- A non-PayPal account landing page is used
- Add support for PopupBridge
- Add
- PayPal Checkout
- Pass in correlation id from billing agreement token or ec token when tokenizing
- Pre-bundled files are now published to npm, fixing parsing errors when using webpack
- Hosted Fields
- Fix a bug where Mobile Safari would not emit blur events consistently
- Add support for new Visa card numbers with 18 or 19 digits
- Add
setAttributeto allow dynamic updating of input attributes - Validate
setPlaceholderto accept only strings and numbers
- 3D Secure
- HTTPS is no longer required for sandbox environments
- PayPal Checkout
- Return PayPal Credit financing details when calling
tokenizePayment
- Return PayPal Credit financing details when calling
- American Express
- Fix bug where arguments to
getRewardsBalancewere mutated
- Fix bug where arguments to
- PayPal
- Call callback with BROWSER_NOT_SUPPORTED error when using Chrome for iOS v47 or lower
- Client
- Fix issue where
getConfigurationandtoJSONwere not returning the same object
- Fix issue where
- Hosted Fields
- Fix a bug when placeholders aren't supplied for expiration month/year
- Fix a bug where CVV field wouldn't validate all possible card type CVV lengths
- Fix a bug where Samsung keyboards would incorrectly highlight the first character typed
- Disable input formatting in the Android Samsung Internet browser
- PayPal
- Return PayPal Credit financing details in
tokenizePayload.creditFinancingOffered
- Return PayPal Credit financing details in
- PayPal Checkout
- Create the PayPal Checkout component to integrate with PayPal's checkout.js library
- Hosted Fields
- Fix bug where Samsung Keyboards would format incorrectly in Android Chrome
- American Express
- Fix bug where additional options were not passed along in getRewardsBalance request
- Hosted Fields
- Fix a bug where unformatted inputs could not tokenize card numbers with hyphens or spaces
- Fix a bug where postal codes of length 3 (e.g. in Iceland) were considered invalid
- Fix input formatting with third party keyboards on Android Chrome
- Hosted Fields
- Fix a bug where iOS Safari autocomplete would not print credit card number
- PayPal
- Fix bug where the PayPal authorization flow began when the
flowoption was missing or invalid
- Fix bug where the PayPal authorization flow began when the
- 3D Secure
- Fix bug where failing
verifyCardcall put component in an inconsistent state
- Fix bug where failing
- Data Collector
- Fix iframe styling in PayPal fraud tools
- Hosted Fields
- Add support for
letter-spacingCSS property - Fix a bug where Safari autocomplete would mangle credit card input
- Add support for
- PayPal
- Return a
MERCHANTerror whentokenizeis called outside of a user action event - Show loading indicator in popup when a successful authorization is being processed and tokenized
- Return a
- Hosted Fields
- Add dropdown support for expiration month and expiration year
- Client
- More helpful error when a client token is generated with insufficient privileges
- Hosted Fields
- Fix a bug where IE9 inputs would stutter when formatting
- Enable input formatting on Android
- Apple Pay
- Add support for Apple Pay integrations that are web-only
- UnionPay
- Return a proper error when calling some functions without callbacks
- The
index.jsanddebug.jsfiles are now fullbraintree-webbundles and can be safely loaded in non-CommonJS environments - Hosted Fields
- Add input formatting to browsers on iOS
- Maestro cards beginning with
6are now correctly identified
- Data Collector
- Use custom build of SJCL to reduce file size
- Hosted Fields
- Add
typeproperty for field configuration to allow things such astype: "password"for input masking of particular fields - For browsers that support it, the
monthinput type can be used forexpirationDate - Fix a bug where unformatted
expirationDateinputs would fail validation if user typed in a space, hyphen or slash
- Add
- PayPal
- Utility iframes are now annotated with the
braintree-dispatch-frameclass to assist with CSS targeting
- Utility iframes are now annotated with the
- PayPal
- Add focus handle to tokenize method
- Move a utility iframe far out of view with
position: absolute
BREAKING CHANGES
- Apple Pay
- Fix a bug with tokenization parameters—no more workaround required
- Client
- Provide better error messaging when actions that require a client token are attempted with a tokenization key
- Hosted Fields
- Pass back client error when attempting to vault with an invalid authorization
- UnionPay
- Pass back client error when attempting to vault with an invalid authorization
- Remove vault option from tokenization
- Apple Pay
- Add
merchantIdentifierproperty for use withApplePaySession.canMakePaymentsWithActiveCard - Fix a bug where
decoratePaymentRequest(now calledcreatePaymentRequest) failed to setmerchantCapabilities. The default is now['supports3DS'], which is the most commonly used value.
- Add
BREAKING CHANGES
- Apple Pay
decoratePaymentRequesthas been renamed tocreatePaymentRequest. This method returns a new object and does not mutate the argument- Return better error messages when Apple Pay merchant domain validation fails
- The error code
APPLE_PAY_MERCHANT_VALIDATIONhas been replaced withAPPLE_PAY_MERCHANT_VALIDATION_FAILEDandAPPLE_PAY_MERCHANT_VALIDATION_NETWORK
- PayPal
- Fix a bug where vault flows that used a tokenization key could not tokenize
- Add prefix to
BraintreeErrorcodes to prevent namespace collisions - PayPal
- Return a
PAYPAL_POPUP_CLOSEDerror code when the customer closes the popup - Return a
PAYPAL_INVALID_PAYMENT_OPTIONerror code when PayPal options are invalid - Fix a bug where some locale codes were not accepted
- Fix bug where JPY could not be used as PayPal currency
- vault flows will automatically vault PayPal accounts if client token was generated with a customer id
- Return a
- Hosted Fields
- Automatic input formatting disabled for iOS and Android
- Apple Pay
- Use error codes
- Some wrapped errors were inconsistently placed under the
err.detailsproperty; they are now undererr.details.originalError - Client
- Errors are now always instances of BraintreeError
- UnionPay
- Add
vaultas an option totokenizewhich allows cards to be vaulted on tokenization
- Add
-
Some error messages have been changed to be more consistent across components
-
Update
BraintreeErrorto include acode, which can be used to check for specific errors:hostedFieldsInstance.tokenize(function (err, payload) { if (err && err.code === 'FIELDS_EMPTY') { // Handle user input error } }); -
Fix an incorrect
<script>tag example in API docs -
Fix an error in Require.js API docs
-
Hosted Fields
- Automatic input formatting disabled for Android Firefox
- Add
vaultas an option totokenizewhich allows cards to be vaulted on tokenization - Add
addClassandremoveClassfor updating classes on fields - Stop applying
invalidCSS classes topotentiallyValidfields on tokenization attempts
-
PayPal
- Consistently return
BraintreeErrorobjects when the PayPal flow is canceled - Return error during
createwhen using a webview
- Consistently return
-
UnionPay
- Add
typeto tokenize payload
- Add
-
Add Apple Pay component.
- Update create error messages to be more consistent
- Add
typeto Hosted Fields and PayPal tokenize payloads - Hosted Fields
- Add
getStatemethod that returns the state of all fields and possible card types - Fixes a regression where expiration dates with a past month within the current year were treated as valid
- Add
- PayPal
- Add
useractionoption topaypal.tokenize
- Add
BREAKING CHANGES
- UnionPay improvements.
- Card capabilities
- Renamed
isUnionPayEnrollmentRequiredtoisSupported. - When
isSupportedis false, Braintree cannot process UnionPay card. Customer would need to use a different card.
- Renamed
- Enrollment response has
smsCodeRequiredflag.- If
true, customer will receive an SMS code, that is required for tokenization. - If
false, SMS code should not be passed during tokenization. Tokenization can be done immediately.
- If
- Card capabilities
- Return a human readable error message when requests are rate-limited.
- Add 3D Secure component.
- Hosted Fields
- Throw an error when initializing with an invalid field key. See BREAKING CHANGES.
- The formatting for expiration dates no longer inserts a leading
0if the date begins with1. This prevents the numbers from jumping around for dates beginning01,10,11, or12.
BREAKING CHANGES
- An error is now returned when initializing Hosted Fields with an invalid field; it is no longer silently ignored.
- No longer throws exceptions when using
require('braintree-web')during server-side rendering with libraries such as React.js. index.jsanddebug.jsin the npm/bower modules no longer referencepackage.json.- Ajax errors in IE9 now report as general error instead of an empty string. It is impossible to get details additional about network errors in IE9 XDomainRequests.
- Add 3D Secure component
- UnionPay
- Expiration date or month/year together are now optional as some UnionPay cards do not have expiration dates.
- PayPal
- All
createoptions aside fromclienthave now moved totokenize. See BREAKING CHANGES. - For one-time checkout, add
intentoption which can besaleorauthorize - HTTPS is no longer required
- Add
offerCreditas an option totokenizefor offering customers PayPal Credit as a form of payment
- All
BREAKING CHANGES
-
PayPal's
createoptions have moved totokenize. Deferring these options to tokenization time allows greater flexibility in your checkout experience.braintree.paypal.create({ client: clientInstance }, function (err, paypalInstance) { paypalInstance.tokenize({ flow: 'checkout', amount: '10.00', currency: 'USD' }, function (tokenizeErr, payload) { // ... }); });
- Hosted Fields
- Update
card-validatorto2.2.8 - Throw a proper error when creating without a callback
- Update
- UnionPay
- Fix tokenization bugs
- Data Collector
- Throw a proper error when creating without a callback
- Improved error messaging when two components' versions do not match one another.
BREAKING CHANGES
- Data Collector
-
The
createAPI has changed.options.kountfordataCollector.createis now a simple boolean:dataCollector.create({ client: clientInstance, kount: true, paypal: true }, function (err, collector) {});
-
- Hosted Fields
- Add
inputSubmitRequestevent which is called when the user presses the Enter key (or equivalent) in a Hosted Fields input.
- Add
BREAKING CHANGES
- Make all callbacks consistently called asynchronously
- Hosted Fields
- The
fieldStateChangeevent is now 4 events:empty,notEmpty,validityChange, andcardTypeChange - Change event payloads to always return the full state of the form and all possible card types
- The
- Data Collector
- A
clientoption is now required
- A
- Hosted Fields
postalCodefield now has a maximum length of 10 characters- Fix issues when pasting into fields
- UnionPay
- Added support for UnionPay and Hosted Fields
- Updated the API
- Added
teardownto cleanly destroy a UnionPay instance
- PayPal
- Add support for
billingAgreementDescription
- Add support for
BREAKING CHANGES
- UnionPay
fetchCapabilitiesnow takescard: {number: '4111'}instead ofcardNumber: '4111'enrollnow takes mobile phone data under themobileproperty instead of thecardpropertyenrollnow returns a property calledenrollmentIdinstead ofunionpayEnrollmentId- Removed the
options.optionsproperty fromtokenize;smsCodeandenrollmentIdare now top-level options
- Improve documentation of callbacks
- Hosted Fields
- Calling methods (such as
tokenizeorsetPlaceholder) after Hosted Fields has been torn down throws an error
- Calling methods (such as
- PayPal
- Calling methods (such as
tokenize) after PayPal has been torn down throws an error
- Calling methods (such as
- DataCollector
- Throw an error when trying to tear down twice
- American Express
getRewardsBalanceto get the rewards balance of a Braintree noncegetExpressCheckoutProfileto get the Express Checkout profile of an Amex nonce
- UnionPay
fetchCapabilitiesto fetch card capabilities, and determine if a card requires enrollmentenrollto process enrollment for a cardtokenizeUnionPay cards
- Client
clientcomponents no longer have ateardownfunction
- Hosted Fields
- Add
setPlaceholderto allow dynamic updating of field placeholders - Client component version must match Hosted Fields' component version
- Throw
BraintreeErrorif tokenize does not include a callback
- Add
- PayPal
- Bugfixes in teardown
- Client component version must match PayPal's component version
- Make teardown callback optional
- Throw
BraintreeErrorif tokenize does not include a callback
- npm packaging fixes
- Hosted Fields
- Allow expiration dates with leading zeroes when formatting is enabled
- PayPal
- Bugfixes
BREAKING CHANGES
- PayPal
- Replace
shippingAddressOverride.editablewithshippingAddressEditable, which disables user editing of shipping address when set to false. - Replace
singleUseboolean property withflowstring property.singleUse: trueis nowflow: 'checkout'.flowis required; useflow: 'vault'for Vault flow.
- Replace
| Old | New |
|---|---|
singleUse omitted |
flow: 'vault' |
singleUse: false |
flow: 'vault' |
singleUse: true |
flow: 'checkout' |
This release contains a number of new features for developers and their users, the key benefits are listed below. This is a significant departure from our earlier versions of the JS SDK. It is a composable SDK instead of a collection of pre-defined integration patterns (better for more advanced developers):
-
Smaller File Size
Results in faster load times and improves performance of their web applications. A merchant has the choice to control the size by controlling the components they use. To illustrate the implications of this: a merchant who is only using PayPal does not need to include (and subsequently force their users to download) the code for Hosted Fields, DataCollector, etc. if they are not leveraging these features.
-
Modular Architecture for Advanced Developers
Rebuilt with a module-first approach. Developers have the choice and control over the specific JS SDK components they’d like to use instead of using the full SDK. The value of this is that it results in a simpler integration and also has been something many advanced developers have requested.
-
Custom PayPal Button
Developers have the option to customize the PayPal button that is displayed on their page. We provide only a bindable programmatic handler.
-
Hosted Fields Formatting
Many developers who use Hosted Fields have asked us for more robust abilities to format input into the Hosted Fields Form Fields for UX reasons. The new SDK allows fields to be formatted. One example of this is clean spacing between card numbers (4111 1111 1111 1111 instead of 4111111111111111).
-
No Dependency on Form Submissions
Traditionally, our SDK has required developers to submit payment information in the context of a form. We no longer require developers to integrate with this pattern. Modern web applications tend to be built with richer client-side functionality (validation, multiple payment options, AJAX submission, etc.). Deferring the mechanics of tokenization to a simple API call in our SDK allows our libraries to be much less intrusive as far as developer experience goes.
-
CORS Support, as opposed to JSONP
CORS is a Web Security technology that allows developers tight control over which third party services can be rendered within their web page. This is now the default.
-
Improved .NET Experience
.NET developers who use the WebForms Technology have run into many issues with previous versions of our SDK related to competing form submission handling. Since we no longer rely on form submissions, native .NET form handling is left untouched.
-
Improved Documentation
By its very nature, this new release is more low-level and less opinionated about contextual integration. This means we can provide an API reference and simpler getting started guides.
-
Modern distribution
By focusing on npm and GitHub as release channels the SDK fits better with newer build pipelines and tooling.
-
Improved error messaging
Better error handling and presentation everywhere, with clearer error messaging.