UNPKG

braintree-web

Version:

A suite of tools for integrating Braintree in the browser

1,728 lines (1,385 loc) 70.8 kB
# CHANGELOG ## 3.117.1 - Venmo - fix to set `cspNonce` if `allowDeskopWebLogin` is enabled ## 3.117.0 - Venmo - Add missing analytics events for Popup Bridge - Add `styleCspNonce` option to provide nonce to whitelist injected style in content support policy. - Fraudnet - Add new option `cb1` to `dataCollector.create()` to allow specifying a callback name that will be invoked when fraudnet has finished initializing. ## 3.116.3 - PayPal Checkout - Adding public documentation for riskCorrelationId in createPayment ## 3.116.2 - Fastlane - Previous fix for a bug that occured when `termsAndConditionsCountry` was not available for tokenization did not cover all edge cases ## 3.116.1 - Fastlane - Fix bug that occured when `termsAndConditionsCountry` was not available for tokenization ## 3.116.0 - Fastlane - add `termsAndConditionsCountry` in tokenization - 3D Secure - Remove Legacy framework as v1 has been deprecated completely - Analytics - Changed Popup Bridge analytics to standardize around all Braintree SDKs ## 3.115.2 - Apple Pay - Add `isDeviceToken` to `TokenizePayload` ## 3.115.1 - Update restricted-input to v4.0.3 - Update dependencies - UglifyJS to 3.19.3 - Update browserify task - Setting UglifyJS `arrows` option to `false` ## 3.115.0 - Docs update - Add `internationalPhone` option to `shippingAddressOverride` in PayPal Checkout JSDoc - Update dependencies - framebus to v6.0.3 - Local Payment Methods - Allow redirect flow to work when inside an iframe ## 3.114.0 - PayPal Checkout - Add `recipientEmail` option to `shippingAddressOverride` - 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 `shippingCallbackUrl` in `createPayment - Data Collector - Deprecate Kount ## 3.113.0 - Local Payment Methods - Fix hasTokenizationParams to account for token URL param - Hosted Fields - add support for `-webkit-text-fill-color` CSS rule ## 3.112.1 - 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. ## 3.112.0 - Local Payment - Remove support of `bic` field for iDeal payments - Update documentation for redirectUrl - Utility Functions - Ensure camelCaseToSnakeCase handles null values correctly ## 3.111.1 - Node.js - Updated from Node.js v14 to Node.js v20 ## 3.111.0 - Local Payment Methods - Add Full Page Redirect ## 3.110.0 - SEPA - Add support for new full page redirect flow ## 3.109.0 - PayPal Checkout - Add `userAuthenticationEmail` to `createPayment` to enable MPE ## 3.108.0 - PayPal - Support Checkout with Vault on v2 orders API ## 3.107.1 - Hosted Fields - Fix passing through a sessionId value ## 3.107.0 - 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 `mbway` and `bancomatpay` ## 3.106.0 - Fraudnet - Truncate session id to 32 characters. ## 3.105.0 - PayPal Checkout - Add client-metadata-id as a data attribute when loading the PayPal SDK - Google Pay - Add string conversion for totalPrice ## 3.104.0 - Fastlane - Add support for Fastlane. - DataCollector - Correlation ID now defaults to match Client Session ID if no Correlation ID is passed when creating DataCollector. ## 3.103.0 - 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 `verifyCard` to accept amount = 0 ## 3.102.0 - PayPal - Support new `amountBreakdown` and its subfields in the `updatePayment` method ## 3.101.3 - FrameService - Updated to limit messages sent between popup and iframe from the window parent. ## 3.101.2 - Venmo - Fix issue introduced in previous patch that would sometimes cause the Venmo flow to crash ## 3.101.1 - Venmo - Fix issue where the Venmo Desktop flow would sometimes report as a mobile web transaction ## 3.101.0 - Venmo - Add support for `isFinalAmount` flag to Venmo create - Package updates - Updated @braintree/sanitize-url to 7.0.1 ## 3.100.0 - 3D Secure - Remove call to V1 modal as 3DS v1 is unsupported - Local Payment - Add support for recurrent local payment ## 3.99.2 - Venmo - Fix race condition in previous bug fix. ## 3.99.1 - 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-envify` with `ladjs/gulp-envify` due to missing dependency (`tomashanacek/loose-envify`). ## 3.99.0 - Venmo - Update `isBrowserSupported` to return true for iOS Chrome when `allowNewBrowserTab` is true and Venmo is not presented in an iFrame. ## 3.98.0 - Local Payment - Add support for seamless/oneclick BLIK local payment ## 3.97.4 - Venmo - Change overlay container to be on top of other page components and prevent click-through. ## 3.97.3 - JS Docs - Venmo - Add clarification to `isBrowserSupported` for iOS Chrome. ## 3.97.2 - JS Docs - PayPal - Add clarification to `updatePayment` options - Apple Pay - Updated `displayName` docs for `performValidation` to indicate that maximium length is 64 characters ## 3.97.1 - JS docs - Add more details about content security policy - Hosted Fields - Fix bug where keyboard navigation would sometimes not work in FireFox ## 3.97.0 - 3D Secure - Updated documentation for `requestVisaDAF` parameter on `verifyCard` - SEPA - Add support for new mandate params, `locale` and `billingAddress` - PayPal - Remove PayPal private url and user agreement url from PayPal configuration response as deprecated - Venmo - Change overlay container to `position: fixed` to cover the entire viewport. - Package updates - Updated @braintree/sanitize-url to 6.0.4 - Updated @braintree/browser-detection to 1.17.1 ## 3.96.1 - Venmo - Fix bug that does not receive the right `enrichedCustomerDataEnabled` flag ## 3.96.0 - 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. - 3D Secure - Add `requestVisaDAF` option to `verifyCard` - Add `customFields` param to `verifyCard` - PayPal - Add support for v2/orders ## 3.95.0 - 3D Secure - Add `merchantName` option to `verifyCard` - Venmo - Fix `isBrowserSupported` for Venmo web desktop login - Venmo - Add `collectCustomerBillingAddress`, `collectCustomerShippingAddress`, `totalAmount`, `subTotalAmount`, `discountAmount`, `taxAmount`, `shippingAmount`, and `lineItems` params to `createVenmoPaymentContext` for rendering in Venmo paysheet ## 3.94.0 - 3D Secure - Adds `collectDeviceData` opt-in flag for 3DS lookups ## 3.93.0 - Updated documentation in regards to 3D secure and CSP recommendations - Local Payment - Add support for Pay Upon Invoice local payment type: `pay_upon_invoice` ## 3.92.2 - 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 ## 3.92.1 - 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 ## 3.92.0 - Venmo - Fix issue resulting in blocked popups in desktop web login flow - PayPal - Remove `amount` calculation in `updatePayment`; now `amount` param is required. - 3D Secure - Clarify format of IP Address in `AdditionalInformation` object ## 3.91.0 - 3D Secure - Add `requestedExemptionType` option to `verifyCard` - Deprecate `exemptionRequested` option in `verifyCard` - Made `verifyCard` BIN param required - Add error on use of v1 - Hosted Fields - Improved accessibility for screen readers ## 3.90.0 - Paypal - Add support for `updatePayment` ## 3.88.6 - Venmo - Fix Desktop Web Login flow running from an iframe ## 3.88.5 - Venmo - Update constants to use correct deeplinking url for Venmo ## 3.88.4 - 3D Secure - Update the regex to validate cardinal commerce domain - Venmo Desktop - Use latest framebus for more secure messaging ## 3.88.3 - Update framebus to v5.2.0 - Hosted Fields - Improve iframe communication with parent page ## 3.88.2 - 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 `binAvailable` to only send bind detals to parent page - Local payments - Fix canceled or failed flow for PopupBridge use cases ## 3.88.1 - Venmo: - fix cases where nonce payload data was missing after tokenization ## 3.88.0 - Venmo - add `allowAndroidRecreation` for addressing Android PopupBridge use cases - Update terminology around desktop web login - 3D Secure - Add check to verify acsUrl if not a cardinal commerce domain ## 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