Venmo

Venmo

This class represents a Venmo component produced by braintree-web/venmo.create. Instances of this class have methods for tokenizing Venmo payments.

Constructor

new Venmo(options)

Do not use this constructor directly. Use braintree-web.venmo.create instead.

Parameters:
Name Type Description
options object

The Venmo create options.

Source:

Methods

hasTokenizationResult() → {boolean}

Returns a boolean indicating whether a Venmo tokenization result is ready to be processed immediately.

This method should be called after initialization to see if the result of Venmo authorization is available. If it returns true, call tokenize immediately to process the results.

Source:

isBrowserSupported() → {boolean}

Returns a boolean indicating whether the current browser supports Venmo as a payment method. Please note that iOS Chrome is not supported when the Venmo button is rendered in an iFrame.

If options.allowNewBrowserTab is false when calling venmo.create, this method will return true only for browsers known to support returning from the Venmo app to the same browser tab. Currently, this is limited to iOS Safari and Android Chrome. If options.allowWebviews is false when calling venmo.create, this method will return true only for mobile browsers that are not webviews.

Source:

teardown(callbackopt) → {Promise|void}

Cleanly tear down anything set up by create.

Parameters:
Name Type Attributes Description
callback callback <optional>

Called once teardown is complete. No data is returned if teardown completes successfully.

Source:
Examples
venmoInstance.teardown();

With callback

venmoInstance.teardown(function () {
  // teardown is complete
});

tokenize(optionsopt, callbackopt) → {Promise|void}

Launches the Venmo flow and returns a nonce payload.

If hasTokenizationResult returns true, calling tokenize will immediately process and return the results without initiating the Venmo payment authorization flow.

Only one Venmo flow can be active at a time. One way to achieve this is to disable your Venmo button while the flow is open.

Parameters:
Name Type Attributes Description
options object <optional>

Options for tokenization.

Properties
Name Type Attributes Default Description
processResultsDelay number <optional>
500

The amount of time in milliseconds to delay processing the results. In most cases, this value should be left as the default.

callback callback <optional>

The second argument, data, is a tokenizePayload. If no callback is provided, the method will return a Promise that resolves with a tokenizePayload.

Source:
Example
button.addEventListener('click', function () {
  // Disable the button so that we don't attempt to open multiple popups.
  button.setAttribute('disabled', 'disabled');

  // Because tokenize opens a new window, this must be called
  // as a result of a user action, such as a button click.
  venmoInstance.tokenize().then(function (payload) {
    // Submit payload.nonce to your server
    // Use payload.username to get the Venmo username and display any UI
  }).catch(function (tokenizeError) {
    // Handle flow errors or premature flow closure
    switch (tokenizeErr.code) {
      case 'VENMO_APP_CANCELED':
        console.log('User canceled Venmo flow.');
        break;
      case 'VENMO_CANCELED':
        console.log('User canceled Venmo, or Venmo app is not available.');
        break;
      default:
        console.error('Error!', tokenizeErr);
    }
  }).then(function () {
    button.removeAttribute('disabled');
  });
});

(inner) cancelTokenization() → {Promise|void}

Cancels the venmo tokenization process

Source:
Example
venmoTokenizeButton.addEventListener('click', function () {
  venmoInstance.tokenize().then(function (payload) {
    // handle payload
  }).catch(function (err) {
    if (err.code === 'VENMO_TOKENIZATION_CANCELED_BY_MERCHANT') {
      // tokenization was canceled by calling cancelTokenization
    }
  });
});

venmoCancelButton.addEventListener('click', function () {
  // Hide the button when the venmo flow is not in progress
  venmoCancelButton.style.display = "none";

  venmoInstance.cancelTokenization().then(function () {
    // done canceling the flow
  }).catch(function (err) {
    // should only get here if there is no tokenization in progress
  });
});

Type Definitions

lineItem :object

Properties:
Name Type Attributes Description
quantity number

Number of units of the item purchased. This value must be a whole number and can't be negative or zero.

unitAmount string

Per-unit price of the item. Can include up to 2 decimal places. This value can't be negative or zero.

name string

Item name. Maximum 127 characters.

kind string

Indicates whether the line item is a debit (sale) or credit (refund) to the customer. Accepted values: debit and credit.

unitTaxAmount string <nullable>

Per-unit tax price of the item. Can include up to 2 decimal places. This value can't be negative or zero.

description string <nullable>

Item description. Maximum 127 characters.

productCode string <nullable>

Product or UPC code for the item. Maximum 127 characters.

url string <nullable>

The URL to product information.

Source:

tokenizePayload :object

Venmo tokenize payload.

Properties:
Name Type Description
nonce string

The payment method nonce.

type string

The payment method type, always VenmoAccount.

details object

Additional Venmo account details.

Properties
Name Type Description
username string

The username of the Venmo account.

paymentContextId string

The context ID of the Venmo payment. Only available when used with paymentMethodUsage.

Source: