UNPKG

braintree-web

Version:

A suite of tools for integrating Braintree in the browser

1,648 lines (1,368 loc) • 60.4 kB
# CHANGELOG # 3.87.0 - Venmo fix mobileWebFallback url reference - Add support for SEPA Direct Debit # 3.86.0 - Add support for Desktop Web Login flow - Add support for Mobile Web Fallback # 3.85.5 - Fix internal build issue # 3.85.4 - Update @braintree/browser-detection to v1.14.0 # 3.85.3 - 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.defaultFirst` functionality in JSDoc # 3.85.2 - 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 # 3.85.1 - Venmo - Fix issue where iOS Chrome was reporting as a supported browser # 3.85.0 - 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 `paymentContextId` when available # 3.84.0 - Client - Add Elo, Hiper, and Hipercard to `supportedCardTypes` - Fix issue where analytics event would report redundant errors when client fails to set up (\#606) - Venmo - Adjust UI for better navigation # 3.83.0 - Data Collector - Updates `clientMetadataId` to `riskCorrelationId` (`clientMetadataId` is treated as an alias) - Hosted Fields - Allow passing `iframeTitle` in fields configuration to customize iframe titles for field (\#545) - Local Payments - Add `options.displayName` to `startPayment` - Venmo - Fix issue where Facebook on Android would report as a supported browser # 3.82.0 - 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 `correlationId` to `clientMetadataId` (`correlationId` is treated as an alias) # 3.81.1 - Venmo - Fix issue where `@` was sometimes not returned in username param upon successful tokenization ## 3.81.0 - Data Collector - Allow passing custom correlation id when initializing data collector - Visa Checkout - Add `encryptionKey` to `createInitOptions` ## 3.80.0 - 3D Secure - deprecate `cardAdd` in `verifyCard` in favor of `cardAddChallengeRequested` (`cardAdd` can still be used as an alias) - update `cardAddChallengeRequested` in `verifyCard` to allow passing `false` - add `type` to `verifyCard` response payload - fix issue where v1 fallback could result in an unrecoverable exception (\#582) ## 3.79.1 - Hosted Fields - Fix issue where inputs could not tab forward in iOS Safari 14.5+ (tabbing backward is still broken) (\#456) ## 3.79.0 - Fix issue where SDK could not be used with server side rendering in Node v16 (\#576) - Hosted Fields - Fix issue where integrations with `select` configuraitons for expiration month and year would throw an error (\#578) - PayPal Checkout - Fix issue in `loadPayPalSDK` where data attributes could be passed in with an extra `data-` prefix - 3D Secure - Add `cardAdd` param to `verifyCard` - Google Pay - Support Maestro cards ## 3.78.3 - Update restricted-input to v3.0.4 - Hosted Fields - Fix issued where `binAvailable` event 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 ## 3.78.2 - 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) ## 3.78.1 - 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 ## 3.78.0 - Update browser-detection to v1.12.0 - Apple Pay - Support Elo cards - Google Pay - Support Elo cards - Venmo - Add `displayName` option - Fix issue where payment contexts where not cancelled correctly ## 3.77.0 - Update @braintree/sanitize-url to v5.0.2 - Venmo - Add `paymentMethodUsage` parameter to create ## 3.76.4 - 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 ## 3.76.3 - Update @braintree/sanitize-url to v5.0.1 - Venmo - Fix issue where profile id was not being passed to Venmo Desktop flow ## 3.76.2 - 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 returning `true` for Firefox on iOS ## 3.76.1 - 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) ## 3.76.0 - Venmo - Add `useRedirectForIOS` flag as an alternate way to open Venmo flow in iOS environments ## 3.75.0 - Hosted Fields - Add support for `box-shadow` style (\#559) - PayPal - Add `offerPayLater` to PayPal `tokenize` - PayPal Checkout - Correct default `intent` parameter to `tokenize` in `loadPayPalSDK` when using `vault: true` - Venmo - Correct issue where incorrect return url could be constructed when merchant page url included an empty `#` - Fix issue with `requireManualReturn` flow in iOS webviews ## 3.74.0 - PayPal Checkout - Default `intent` parameter to `authorize` in `loadPayPalSDK` when using `vault: true` to eliminate console error about using `tokenize` for intent (\#544) - Fix issue where dispatch frame would not get cleaned up when calling `teardown` (\#555) - Local Payments - Add `bic` property to `options` parameter for iDEAL transactions - Update default size of window to 1282 X 720 - Allow height and width of the window to be specified with `windowOptions.height` and `windowOptions.width` when calling `startPayment` ## 3.73.1 - Update framebus to v5.1.2 - Fix issue where components dependent on framebus (Hosted Fields, PayPal, etc) would not load in IE11 (\#554) ## 3.73.0 - Venmo - Add `cancelTokenization` for programatic cancelation of the `tokenize` flow - Fix issue where venmo component may not yet be ready when beginning tokenization - Fix issue where Venmo would fail when embedded in an iframe ## 3.72.0 - 3D Secure - Add `accountType` param to `verifyCard` ## 3.71.1 - Update framebus to v5.1.0 - Data Collector - Fix issue where sandbox environment was not set for Advanced Fraud Protection ## 3.71.0 - 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) ## 3.70.0 - Local Payments - Add `paymentTypeCountryCode` as supported field when starting a local payment ## 3.69.0 - 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.autoSetDataUserIdToken` in the create call ## 3.68.0 - Update framebus to v4.0.4 - Apple Pay - Support Maestro cards - Hosted Fields - Support `text-align` style - PayPal Checkout - Fix issue in `loadPayPalSDK` where PayPal SDK should have been loaded in the head of the document instead of the body to allow re-loading the SDK dynamically ## 3.67.0 - Update @braintree/sanitize-url to v5.0.0 - Client - Provide `CLIENT_AUTHORIZATION_INVALID` error when client token has expired or a tokenization key has been deactivated or deleted - Venmo - Add `allowWebviews` configuration to `isBrowserSupported` ## 3.66.0 - 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 `loadPayPalSDK` instead of always using `sb` - Allow data attributes to be passed to `loadPayPalSDK` - Fix issue when tokenizing during `requestBillingAgreement: true` flows - Fix issue where `intent` used in `createPayment` was not passed to `tokenizePayment` in PayPal JS SDK - Venmo - Remove use of `global` (use `window` instead for better compatibility) - 3D Secure - Add `authentication-modal-render` and `authentication-modal-close` events ## 3.65.0 - 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-left` in styles (\#513) - Allow setting `padding-top`, `padding-right`, `padding-bottom`, `padding-left` in styles (\#513) - Fix issue where autofilling with a Google Pay card while using `maskInput` would fail to fill the card number - Fix issue where fields in shadow DOM would have incorrect high compared to container - Add `cardholderName` as supported field - Add `cardholderName` as a field in the tokenization payload - PayPal Checkout - Add `requestBillingAgreement` and `billingAgreementDetails` to createPayment - 3D Secure - Add event for when a customer cancels the verification - Add `rawCardinalSDKVerificationData` to `verifyCard` payload ## 3.64.2 - Update inject-stylesheet to v4.0.0 - Hosted Fields - Fix issue where inputs would not load if `-moz` attributes are used in Google Chrome (\#516) - Fix issue where `preventAutofill` did not work in the Chrome browser ## 3.64.1 - Update restricted-input to v3.0.2 ## 3.64.0 - 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 `internalLabel` field 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 `preventAutofill` option - Support web components (closes \#495) ## 3.63.0 - Update framebus to v4.0.2 (fixes \#504) - Update restricted-input to v2.1.1 - Update @braintree/extended-promise to v0.3.1 - Use `window` instead of `global` in source code (closes \#401) - PayPal Checkout - Add `loadPayPalSDK` method to dynamically load the v5 PayPal SDK ## 3.62.2 - Update framebus to v4.0.1 ## 3.62.1 - Google Pay - Fix issue where PayPal via Google Pay would not be enabled for eligible merchants ## 3.62.0 - Venmo - Fix issue where a single page app's router may disrupt the Venmo tokenization - Add `ignoreHistoryChanges` to create options - Fix issue where Android webviews could not app switch correctly ## 3.61.0 - Update sanitize-url to v4.0.1 - Google Pay - Add `bin` to GooglePayment `tokenizedPayload` ## 3.60.0 - Apple Pay - Add `useDeferredClient` option when creating instance - `createPaymentRequest` will return a promise if instantiated with `useDeferredClient` and `authorization` instead of a client - Google Pay - Add `useDeferredClient` option when creating instance - `createPaymentDataRequest` will return a promise if instantiated with `useDeferredClient` and `authorization` instead of a client - PayPal Checkout - Added `cobrandedCardLabel` to the `tokenizePayment` response - 3D Secure - Update to use deferred client - Venmo - Update to use deferred client - Vault Manager - Update to use deferred client ## 3.59.0 - Data Collector - Add `useDeferredClient` option when creating instance - Add `getDeviceData` method to get device data asynchronously - Hosted Fields - add `getChallenges` method - add `getSupportedCardTypes` method - PayPal Checkout - Provide way to opt-out of auto-vaulting behavior - Add `getClientId` method ## 3.58.0 - Update `@braintree/extended-promise` to 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 `container` in `fields` (\#487) - Venmo - Fix issue where webview integrations could not tokenize - Add `processResultsDelay` configuration to `tokenize` ## 3.57.0 - 3D Secure - Fix issue where cardinal sdk options were not being used - Falls back to a v1 flow if v2 SDK setup fails ## 3.56.0 - 3D Secure - Add `cardinalSDKConfig` option to `create` method. Supported properties: - `timeout` - `maxRequestRetries` - `logging` - `payment.displayLoading` - `payment.displayExitButton` - Venmo - Use `hashchange` event listener to detect when Venmo tokenization has completed ## 3.55.0 - Fix issue where not passing in an `authorization` to 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 `isNetworkTokenized` param in `parseResponse` method - 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 `vaultInitiatedCheckoutPaymentMethodToken` parameter to `createPayment` ## 3.54.2 - 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 ## 3.54.1 - Venmo - Fix issue where params may be malformed upon tokenization ## 3.54.0 - 3D Secure - Add `2-bootstrap3-modal` as a `version` option - Add `2-inline-iframe` as a `version` option - Fix issue where billing address information was not being sent to lookup if no additional information was sent ## 3.53.0 - Update `@braintree/browser-detection` to 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 `initializeChallengeWithLookupResponse` method - Deprecate `onLookupComplete` param in `verifyCard` in favor of setting a listener for `lookup-complete` - Add `requiresUserAuthentication` param to lookup data in `onLookupComplete` callback - Fix issue where `initializeChallengeFrameWithLookupResponse` would error if called too quickly after creation ## 3.52.1 - 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 ## 3.52.0 - Update event-emitter to v0.3.0 - Hosted Fields - Add `margin` to allowed CSS rules (closes \#449) - 3D Secure - Fix issue where `bin` was not being passed along to Cardinal SDK ## 3.51.0 - Hosted Fields - Add `authenticationInsight` option to tokenization - Fix issue where validation errors without field errors could cause a syntax error - 3D Secure - Enable `cancelVerifyCard` method for 3D Secure version 2 integrations - Update songbird.js script urls ## 3.50.1 - 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 ## 3.50.0 - Hosted Fields - Add `expirationMonth` and `expirationYear` to tokenization payload ## 3.49.0 - Hosted Fields - Add `binAvailable` event - 3D Secure - Add `threeDSecureInfo` to the `verifyCard` response ## 3.48.0 - Us Bank Account - Bring out of Beta into General Availability ## 3.47.0 - Update `asset-loader` to v0.3.1 - Update `event-emitter` to v0.2.0 - Data Collector - Pass back invalid options error at beginning of data collector setup - Hosted Fields - Add `container` param for field, to pass in CSS selector or a DOM node as field container - Make `selector` param an alias for `container` - Add `off` method for unsubscribing from events without tearing down - Add `setMonthOptions` method to dynamically update options for expiration month's configured as select elements (\#393) - 3D Secure - Add 3DS version 2 support - Deprecate version 1 flow - UnionPay - Fix issue where calling `fetchCapabilities` twice in quick succession causes the subsequent requests to not fire (\#441) ## 3.46.0 - Update restricted-input to v2.0.1 - Update inject-stylesheet to v2.0.0 - Add `title` and `aria-hidden` attributes to iframes created within `frameService` for accessibility (\#434, thanks @TomPridham) - Hosted Fields - Add configuration to validate specific card brands, overriding merchant control panel settings ## 3.45.0 - 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 ## 3.44.2 - 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 ## 3.44.1 - 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 ## 3.44.0 - 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 ## 3.43.0 - 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> ## 3.42.0 - 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 `maxCardLength` in `number` field - Fix issue where UnionPay cards were not checked for luhn validity - PayPal Checkout - When passing in `authorization` instead of a `client` in component creation, the client will be created in the background (improves loading time) - Payment Request - Add canMakePayment method ## 3.41.0 - Add Local Payments component - PayPal Checkout - Add support for `lineItems` - Payment Request - Support Google Pay v2 - Support PayPal in Google Pay ## 3.40.0 - Update framebus to v3.0.2 - 3D Secure - Allow creating component with an `authorization` instead of a `client` - American Express - Allow creating component with an `authorization` instead of a `client` - Apple Pay - Allow creating component with an `authorization` instead of a `client` - Data Collector - Allow creating component with an `authorization` instead of a `client` - Google Payment - Allow Google Pay Version 2 requests - Allow direct tokenization of PayPal accounts - Allow creating component with an `authorization` instead of a `client` - Hosted Fields - Allow creating component with an `authorization` instead of a `client` (added in v3.38.1, documented in v3.40.0) - Masterpass - Allow creating component with an `authorization` instead of a `client` - Payment Request - Allow creating component with an `authorization` instead of a `client` - PayPal - Allow creating component with an `authorization` instead of a `client` - PayPal Checkout - Fix issue where `merchantAccountId` option could not be used when the default Merchant Account did not have PayPal enabled - Allow creating component with an `authorization` instead of a `client` - UnionPay - Allow creating component with an `authorization` instead of a `client` - US Bank Account - Allow creating component with an `authorization` instead of a `client` - Vault Manager - Allow creating component with an `authorization` instead of a `client` - Venmo - Fix issue where url may be overwritten when a hash is not present \#394 (thanks @arettberg) - Add `deepLinkReturnUrl` to `venmo.create` - Allow creating component with an `authorization` instead of a `client` - Visa Checkout - Allow creating component with an `authorization` instead of a `client` ## 3.39.0 - PayPal Checkout - Add `merchantAccountId` to PayPal `options` - 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 ## 3.38.1 - Update credit-card-type to v8.0.0 - Update card-validator to v6.0.0 ## 3.38.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) ## 3.37.0 - 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 `Mir` credit 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 `touchstart` event ## 3.36.0 - Update promise-polyfill to v8.0.0 - Provide browser compatible file on npm in `dist/browser` (\#366) - Google Pay - Preserve `allowedCardNetworks` from default configuration in `cardRequirements` if not overwritten in `createPaymentDataRequest` - 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) ## 3.35.0 - Add title attribute to iframes to improve accessibility for screenreaders (\#374) - Vault Manager - Expose if fetched payment methods have an associated subscription ## 3.34.1 - 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](https://github.com/braintree/braintree-web/issues/369) - Fix issue where extra history events would be added in Chrome and Firefox - Venmo - Add validation for profile ids (must be strings) ## 3.34.0 - Apple Pay - Fix issue with Apple Pay configuration [\#365](https://github.com/braintree/braintree-web/issues/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 ## 3.33.0 - 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.length` variable 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 ## 3.32.1 - Payment Request - Expose errors more gracefully - Hosted Fields - Revert fix issue where Roboform could not autofill cards [\#356](https://github.com/braintree/braintree-web/issues/356). It was causing an issue where the inputs would be hidden in Safari if their container was changed from `display: none` to `display: block` ## 3.32.0 - 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.rejectUnsupportedCards` option to the object passed into Hosted Fields `create`. See documentation for adding this property. - Fix issue where Roboform could not autofill cards [\#356](https://github.com/braintree/braintree-web/issues/356) - PayPal Checkout - Fix error handling around not having a linked PayPal sandbox account - 3D Secure - Add support for American Express SafeKey params ## 3.31.0 - 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` ## 3.30.0 - 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 `padding` to supported CSS attributes (\#104) ## 3.29.0 - 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.isSupported` has been removed - `tokenize` and `createSupportedPaymentMethodsConfiguration` and `on` methods and has been removed. See documentation example for new integration pattern. ## 3.28.1 - Update @braintree/sanitize-url to v2.1.0 ## 3.28.0 - Update promise-polyfill to v7.0.0 - American Express - Add missing `teardown` method - Apple Pay - Add missing `teardown` method - Client - Add missing `teardown` method - 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 `teardown` method - Vault Manager - Add missing `teardown` method - Venmo - Add missing `teardown` method - Visa Checkout - Add missing `teardown` method **BREAKING CHANGES** - Google Pay - Beta - Error codes that included `PAY_WITH_GOOGLE` have been updated to `GOOGLE_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 - Payment Request - Beta - Change `payWithGoogle` property to `googlePay` property when instantiating a Payment Request component with `enabledPaymentMethods` option ## 3.27.0 - 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 `requestShipping` option - Pay with Google - Beta - Support `requestShipping` option ## 3.26.0 - Hosted Fields - Correct bug where pasting in on an iOS device would mangle the input (<https://github.com/braintree/restricted-input/pull/46>) - Update credit-card-type to version 6.1.0 (accept JCB cards of length 17-19) ## 3.25.0 - Hosted Fields - Add `setMessage` for 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 - Payment Request - Beta - Add `lastFour` to tokenize payload ## 3.24.1 - Update credit-card-type to v6.0.0 - Update card-validator to v4.1.1 - Hosted Fields - `niceType` for Mastercard will now render as `Mastercard` instead of `MasterCard` to match Mastercard's brand guidelines - Pay with Google - Beta - Correct isSupported to only return true on Android Chrome v61 and higher ## 3.24.0 - 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 ## 3.23.0 - 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.extendedAddress` as a tokenization option - Add `billingAddress.company` as a tokenization option - Add `billingAddress.firstName` as a tokenization option - Add `billingAddress.lastName` as a tokenization option - 3D Secure - Allow opting out of bank frame loader - Vault Manager - Provide bin data if present ## 3.22.2 - Update sanitize-url to version 2.0.0 - 3D Secure - Add `liabilityShifted` and `liabilityShiftPossible` to the top level when 3DS lookup fails to open a 3DS iframe. - 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 ## 3.22.1 - Security improvements - Data Collector - Fix bug where Data Collector with Kount could not be torn down more than once (\#314) ## 3.22.0 - 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 ## 3.21.1 - Hosted Fields - Fix regression where iframes could not load on IE 9 and 10 ## 3.21.0 - Hosted Fields - Fix issue where phone number keyboard would display on iOS devices - Allow passing `countryName`, `countryCodeAlpha2`, `countryCodeAlpha3`, and `countryCodeNumeric` under `billingAddress` as a tokenization option - Fix issue where Apple based browsers (Safari, iOS Chrome, iOS Firefox, etc) would add multiple history states when Hosted Fields loads ## 3.20.1 - 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 ## 3.20.0 - 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 `streetAddress` under `billingAddress` as 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) ## 3.19.1 - 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 ## 3.19.0 - Hosted Fields - Allow `cardholderName` to be passed while tokenizing the card - Fix bug disabling fields when enter is pressed ## 3.18.0 - Hosted Fields - Fix autofill issues for Chrome and Safari (\#239) ## 3.17.0 - Hosted Fields - Add `minlength` to fields options to set the `minlength` of postal code inputs - Update credit-card-type dependency (UnionPay detection fixes) - Update restricted-input dependency to 1.2.1 (Browser Detection updates) - PayPal - Frame fixes in iOS ## 3.16.0 - Client - Access version with `getVersion()` - Hosted Fields - Fix bug where inputs would not load intermittently on old browsers (\#233) - Typing `1/` in an expiration date field will now result in `01 /` 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 ## 3.15.0 - 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 ## 3.14.0 - American Express - `americanExpress.create` returns a promise if no callback is provided - `americanExpress.getRewardsBalance` returns a promise if no callback is provided - `americanExpress.getExpressCheckoutProfile` returns a promise if no callback is provided - Apple Pay - `applePay.create` returns a promise if no callback is provided - `applePay.performValidation` returns a promise if no callback is provided - `applePay.tokenize` returns a promise if no callback is provided - Hosted Fields - `hostedFields.tokenize` returns a promise if no callback is provided - `hostedFields.addClass` returns a promise if no callback is provided - `hostedFields.removeClass` returns a promise if no callback is provided - `hostedFields.setAttribute` returns a promise if no callback is provided - `hostedFields.removeAttribute` returns a promise if no callback is provided - `hostedFields.setPlaceholder` returns a promise if no callback is provided - `hostedFields.clear` returns a promise if no callback is provided - `hostedFields.focus` returns a promise if no callback is provided - PayPal - Add support for PayPal Credit in Vault flow - `paypal.create` returns a promise if no callback is provided - `paypal.tokenize` returns a promise if no callback is provided - `paypal.teardown` returns a promise if no callback is provided - `paypal.closeWindow` closes the PayPal window if open - `paypal.focusWindow` focuses the PayPal window if open - PayPal Checkout - Add support for PayPal Credit in Vault flow - 3D Secure - `threeDSecure.create` returns a promise if no callback is provided - `threeDSecure.verifyCard` returns a promise if no callback is provided - `threeDSecure.cancelVerifyCard` returns a promise if no callback is provided - `threeDSecure.teardown` returns a promise if no callback is provided - Union Pay - `unionPay.create` returns a promise if no callback is provided - `unionPay.enroll` returns a promise if no callback is provided - `unionPay.fetchCapabilities` returns a promise if no callback is provided - `unionPay.teardown` returns a promise if no callback is provided - `unionPay.tokenize` returns a promise if no callback is provided - Visa Checkout - `visaCheckout.create` returns a promise if no callback is provided - `visaCheckout.tokenize` returns a promise if no callback is provided ## 3.13.0 - 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 `focus` to allow programmatic focusing of inputs - Add `maxlength` to fields options to set the `maxlength` of 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 ## 3.12.1 - PayPal - Fix bug where PayPal did not detect when the Popup was closed by the customer ## 3.12.0 - Client - Fix a bug where `atob` was not being called with the window context - Hosted Fields - Add support for `appearance` CSS rule - PayPal - Fix support issues - Visa Checkout - Add Visa Checkout component ## 3.11.1 - 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 `vault` flow ## 3.11.0 - Hosted Fields - `hostedFields.create` now returns a promise if no callback is provided - `hostedFields.tokenize` now returns a promise if no callback is provided - PayPal Checkout - Enable webview support - `intent` property is now passed in correctly - Vault Manager - Create the Vault Manager component ## 3.10.0 - 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 `removeAttribute` to allow removal of certain input attributes - Add RTL language support - 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 `landingPageType` as a tokenization option - `login` - A PayPal account login landing page is used - `billing` - 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 ## 3.9.0 - Client - `client.request` now returns a promise if no callback is provided. - `client.create` now returns a promise if no callback is provided - Data Collector - `dataCollector.create` now returns a promise if no callback is provided - `dataCollectorInstance.teardown` now 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.top` being undefined - Fix autofill for 1Password extensions - Correct detection of Samsung browsers to disable input formatting in old versions - Allow passing `postalCode` as an option when the `postalCode` field is not enabled - PayPal - Add `landingPageType` as a tokenization option - `login` - A PayPal account login landing page is used - `billing` - A non-PayPal account landing page is used - Add support for PopupBridge - PayPal Checkout - Pass in correlation id from billing agreement token or ec token when tokenizing ## 3.8.0 - 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 `setAttribute` to allow dynamic updating of input attributes - Validate `setPlaceholder` to 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` - American Express - Fix bug where arguments to `getRewardsBalance` were mutated - PayPal - Call callback with BROWSER_NOT_SUPPORTED error when using Chrome for iOS v47 or lower ## 3.7.0 - Client - Fix issue where `getConfiguration` and `toJSON` were not returning the same object - 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` - PayPal Checkout - Create the PayPal Checkout component to integrate with PayPal's [checkout.js library](https://github.com/paypal/paypal-checkout) ## 3.6.3 - Hosted Fields - Fix bug where Samsung Keyboards would format incorrectly in Android Chrome ## 3.6.2 - 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 ## 3.6.1 - 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 `flow` option was missing or invalid - 3D Secure - Fix bug where failing `verifyCard` call put component in an inconsistent state ## 3.6.0 - Data Collector - Fix iframe styling in PayPal fraud tools - Hosted Fields - Add support for `letter-spacing` CSS property - Fix a bug where Safari autocomplete would mangle credit card input - PayPal - Return a `MERCHANT` error when `tokenize` is called outside of a user action event - Show loading indicator in popup when a successful authorization is being processed and tokenized ## 3.5.0 - Hosted Fields - Add dropdown support for expiration month and expiration year ## 3.4.0 - 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 ## 3.3.0 - The `index.js` and `debug.js` files are now full `braintree-web` bundles and can be safely loaded in non-CommonJS environments - Hosted Fields - Add input formatting to browsers on iOS - Maestro cards beginning with `6` are now correctly identified - Data Collector - Use custom build of [SJCL](https://bitwiseshiftleft.github.io/sjcl/) to reduce file size ## 3.2.0 - Hosted Fields - Add `type` property for field configuration to allow things such as `type: "password"` for input masking of particular fields - For browsers that support it, the `month` input type can be used for `expirationDate` - Fix a bug where unformatted `expirationDate` inputs would fail validation if user typed in a space, hyphen or slash - PayPal - Utility iframes are now annotated with the `braintree-dispatch-frame` class to assist with CSS targeting ## 3.1.0 - 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 ## 3.0.2 - 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 `merchantIdentifier` property for use with `ApplePaySession.canMakePaymentsWithActiveCard` - Fix a bug where `decoratePaymentRequest` (now called `createPaymentRequest`) failed to set `merchantCapabilities`. The default is now `['supports3DS']`, which is the most commonly used value. **BREAKING CHANGES** - Apple Pay - `decoratePaymentRequest` has been renamed to `createPaymentRequest`. 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_VALIDATION` has been replaced with `APPLE_PAY_MERCHANT_VALIDATION_FAILED` and `APPLE_PAY_MERCHANT_VALIDATION_NETWORK` ## 3.0.1 - PayPal - Fix a bug where vault flows that used a tokenization key could not tokenize ## 3.0.0 - Add prefix to `BraintreeError` codes to prevent namespace collisions - PayPal - Return a `PAYPAL_POPUP_CLOSED` error code when the customer closes the popup - Return a `PAYPAL_INVALID_PAYMENT_OPTION` error 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 - Hosted Fields - Automatic input formatting disabled for iOS and Android - Apple Pay - Use error codes - Some wrapped errors were inconsistently placed under the `err.details` property; they are now under `err.details.originalError` - Client - Errors are now always instances of BraintreeError - UnionPay - Add `vault` as an option to `tokenize` which allows cards to be vaulted on tokenization ## 3.0.0-beta.12 - Some error messages have been changed to be more consistent across components - Update `BraintreeError` to include a `code`, 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 `vault` as an option to `tokenize` which allows cards to be vaulted on tokenization - Add `addClass` and `removeClass` for updating classes