Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@vgs/collect-js-react

Package Overview
Dependencies
Maintainers
0
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@vgs/collect-js-react

VGS Collect.js React wrapper

  • 1.5.1
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
3.2K
decreased by-19.41%
Maintainers
0
Weekly downloads
 
Created
Source

VGS Logo

VGS Collect.js React Wrapper

React wrapper for VGS Collect.js fields
Explore the docs »

Report Bug · Request Feature

CircleCI

Overview

What is VGS Collect.js?

VGS Collect.js is a JavaScript library that allows you to securely collect data via any form. Instantly create custom forms that adhere to PCI, HIPAA, GDPR, or CCPA security requirements. VGS intercepts sensitive data before it hits your servers and replaces it with aliased versions while securing the original data in our vault. The form fields behave like traditional forms while preventing access to unsecured data by injecting secure iframe components.

Why do I need to use this package?

This package provides a convenient way to use VGS secure frames in the React environment by exposing field components.

Installation

Install the package using npm:

npm install @vgs/collect-js-react

How to use

1. Load VGS Collect.js script:

To stay PCI Compliant it's a mandatory to load js from our js.verygoodvault.com domain as a consequence you need to find the most suitable way to download it. There are couple of options here:


2. Define parent form wrapper component:

import { VGSCollectForm } from '@vgs/collect-js-react';

const App = () => {
  const onSubmitCallback = (status, data) => {};
  const onUpdateCallback = (state) => {};

  return (
    <VGSCollectForm
      vaultId='<vault_id>'
      environment='<environment>'
      action='/post'
      submitParameters={{}}
      onUpdateCallback={onUpdateCallback}
      onSubmitCallback={onSubmitCallback}
    >
      // Add secure fields here
    </VGSCollectForm>
  );
};
export default App;
PropertyDescriptionDocumentation
vaultIdA string value beginning with the prefix tnt.Parameters.vaultId
environmentVault environment: sanbdox | live or region specific.Parameters.environment
actionEndpoint for the HTTP request.Parameters.path
submitParamethers?HTTP request configuration.Parameters.options
onUpdateCallback?Returns the form state in the callback.Parameters.stateCallback
onSubmitCallback?Returns status and response data in the callback.Parameters.responseCallback
cname?String represents CNAME the request will be submitted to..useCNAME()
routeId?Inbound Route ID..setRouteId()

3. Define secure input fields:

Collect.js input typeCollect.js React ComponentDefault Prop Values
text<VGSCollectForm.TextField/> {type: 'text', placeholder: 'Cardholder Name'}
card-number<VGSCollectForm.CardNumberField/>{type: 'card-number', placeholder: 'Credit Card Number'}
card-expiration-date<VGSCollectForm.CardExpirationDateField/>{type: 'card-expiration-date', placeholder: 'MM/YY'}
card-security-code<VGSCollectForm.CardSecurityCodeField/>{type: 'card-security-code', placeholder: 'CVC/CVV'}
password<VGSCollectForm.PasswordField/>{type: 'password', placeholder: 'Enter Password'}
ssn<VGSCollectForm.SSNField/>{type: 'ssn', placeholder: 'SSN'}
zip-code<VGSCollectForm.ZipCodeField/>{type: 'zip-code', placeholder: 'Zip Code'}
number<VGSCollectForm.NumberField/>{type: 'number', placeholder: 'Number'}
textarea<VGSCollectForm/TextareaField/>{type: 'textarea', placeholder: 'Comment'}
file<VGSCollectForm/FileField/>{type: 'file', placeholder: ''}
date<VGSCollectForm/DateField/>{type: 'date', placeholder: ''}

The complete list of supported properties you can find here: https://www.verygoodsecurity.com/docs/api/collect/#api-formfield. All configuration properties available in the Reference Documentation can be passed in the component props using the same name.

Example:

import { VGSCollectForm } from '@vgs/collect-js-react';

const { CardNumberField, CardExpirationDateField, CardSecurityCodeField } =
  VGSCollectForm;

const myApp = () => {
  const onSubmitCallback = (status, data) => {};
  const onUpdateCallback = (state) => {};

  return (
    <VGSCollectForm
      vaultId='<vault_id>'
      environment='<environment>'
      action='/post'
      submitParamethers={{
        headers: {
          myHeader: 'MyHeader'
        }
      }}
      onUpdateCallback={onUpdateCallback}
      onSubmitCallback={onSubmitCallback}
    >
      <CardNumberField
        name='card-number'
        validations={['required', 'validCardNumber']}
        placeholder='XXXX XXXX XXXX XXXX'
        showCardIcon={true}
        css={{}}
      />
      <CardExpirationDateField
        name='exp-date'
        validations={['required', 'validCardExpirationDate']}
        placeholder='MM / YY'
        yearLength={2}
        css={{}}
      />
      <CardSecurityCodeField
        name='cvv'
        validations={['required', 'validCardSecurityCode']}
        placeholder='CVV'
        css={{}}
      />
    </VGSCollectForm>
  );
};

3. Field event handlers

VGS Collect.js allows listening to input changes. The library exposes the following handlers: onFocus, onBlur, onUpdate, onDelete, onKeyUp, onKeyDown, onKeyPress.

<TextField
  name='text'
  validations={['required']}
  onFocus={(info: VGSCollectFocusEventData) => {}}
  onBlur={(info: VGSCollectFocusEventData) => {}}
  onUpdate={(info: VGSCollectStateParams) => {}}
  onKeyUp={(info: VGSCollectKeyboardEventData) => {}}
  onKeyDown={(info: VGSCollectKeyboardEventData) => {}}
  onKeyPress={(info: VGSCollectKeyboardEventData) => {}}
/>

4. Hooks

In order to access the form state and response from the hook, wrap consumer component with the form in VGSCollectProvider context provider.

import {
  VGSCollectProvider,
  useVGSCollectState,
  useVGSCollectResponse,
  VGSCollectForm
} from '@vgs/collect-js-react';

const { TextField } = VGSCollectForm;

const App = () => {
  return (
    <VGSCollectProvider>
      <VGSCollectSecureForm />
    </VGSCollectProvider>
  );
};

const VGSCollectSecureForm = () => {
  const [state] = useVGSCollectState();
  const [response] = useVGSCollectResponse();

  useEffect(() => {
    if (state) {
      // do something
    }
  }, [state]);

  return (
    <VGSCollectForm
      vaultId='<vault_id>'
      environment='<environment>'
      action='/post'
    >
      <TextField
        name='cardholder-name'
        validations={['required']}
        placeholder='Cardholder name'
      />
    </VGSCollectForm>
  );
};

Documentation

Examples

To run exmaples locally, in the core folder run:

yarn install
yarn start

Switch the folder to example and configure .env file, simply rename .env.example and replace values

REACT_APP_VAULT_ID=<vault_id>
REACT_APP_ENVIRONMENT=<env>
REACT_APP_COLLECT_VERSION=<collect_version>

From example folder run:

yarn install
yarn start

Open http://localhost:3000/

Contact

If you have any questions please reach out to support or open issue here.

License

This project is licensed under the MIT license. See the LICENSE file for details.

FAQs

Package last updated on 28 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc