Last Updated: 15 May 2024 | Change Log

Create a session to pay with a CVC

Use our React Native SDK to secure your customer's payment details by creating a separate session for CVC.

Full Sample Integration

You can see an example of the session generation here.

Set your views

When you create your checkout form, you must set the views, that your customers use, to enter and submit their CVC details.

As part of our SDK, we provide the AccessCheckoutTextInput UI component dedicated to capturing your customer's card details to minimize your exposure to PCI Data and ensure you can qualify for the lowest level of PCI compliance (SAQ-A).

You must use this component and define the nativeID property to identify each field.

Here's an example of how you would set your view configurations.

  1. JavaScript
  2. TypeScript
import React from 'react';
import {View} from 'react-native';
import {AccessCheckoutTextInput} from '@worldpay/access-worldpay-checkout-react-native-sdk';

export default function CvcFlow() {

  return (
    <View>
      <AccessCheckoutTextInput
        nativeID="cvcInput"
        placeholder="CVC"
      />
    </View>
  );
}

Validate card details

You can optionally validate your customer's card details. You can find instructions here.

Create a CVC session

Initialize the useAccessCheckout hook

You must now configure the useAccessCheckout hook.

To do this, you must provide your baseUrl, checkoutId and the cvc identifier which you defined as the nativeID property in the previous step within the AccessCheckoutTextInput component.

You must provide this configuration using the helper hook useCvcOnlyConfig.

Here's an example of how to initialize it.

import {
  //...
  useAccessCheckout, useCvcOnlyConfig
} from '@worldpay/access-worldpay-checkout-react-native-sdk';

export default function CvcFlow() {

  const {generateSessions} = useAccessCheckout({
    baseUrl: 'https://try.access.worldpay.com',
    checkoutId: 'YOUR_CHECKOUT_ID',
    config: useCvcOnlyConfig({
      cvcId: 'cvcInput'
    }),
  });
}

Parameters

ParameterDescription
baseUrl
  • For testing use: https://try.access.worldpay.com/
  • For live use: https://access.worldpay.com/
checkoutIdYour unique checkout ID.
cvcIdThe nativeID assigned to your CVC AccessCheckoutTextInput component.

Generate CVC session

The useAccessCheckout hook returns an object made of a generateSessions property which is a function.

To generate a session, call the generateSessions function and pass an argument which is an array containing the session type(s) you want to generate (CVC in this instance).
Note that session types are imported from our SDK.

Here's an example of what you should do, when your customer submits their CVC details.

  1. JavaScript
  2. TypeScript
import React from 'react';
import {
  //...
  CVC,
} from '@worldpay/access-worldpay-checkout-react-native-sdk';
import {Button, View} from 'react-native';

export default function CvcFlow() {

  //...
  function handleOnPress() {
    const sessionTypes = [CVC];

    generateSessions(sessionTypes)
      .then((sessions) => {
        const cvcSession = sessions.cvc;
        // do something with the cvc sessions ...
      })
      .catch((error) => {
        // do something in case of error
      });
  }

  return (
    <View>
      ...
      <Button onPress={handleOnPress}/>
    </View>
  );

}

Full code sample

Here's the full code sample of the steps above.

  1. JavaScript
  2. TypeScript
import React from 'react';
import {Button, View} from 'react-native';
import {
  AccessCheckoutTextInput,
  CVC,
  useAccessCheckout,
  useCvcOnlyConfig,
} from '@worldpay/access-worldpay-checkout-react-native-sdk';

export default function CvcFlow() {

  const {generateSessions} = useAccessCheckout({
    baseUrl: 'https://try.access.worldpay.com',
    checkoutId: 'YOUR_CHECKOUT_ID',
    config: useCvcOnlyConfig({
      cvcId: 'cvcInput'
    }),
  });

  function handleOnPress() {
    const sessionTypes = [CVC];

    generateSessions(sessionTypes)
      .then((sessions) => {
        const cvcSession = sessions.cvc;
        // do something with the cvc sessions ...
      })
      .catch((error) => {
        // do something in case of error
      });
  }

  return (
    <View>
      <AccessCheckoutTextInput
        nativeID="cvcInput"
        placeholder="CVC"
      />
      <Button onPress={handleOnPress}/>
    </View>
  );
}
Caution

Do not validate the structure or length of the session resources. We follow HATEOS standard to allow us the flexibility to extend our APIs with non-breaking changes.

Important

The CVC session has a lifespan of 15 minutes and you can use it only once. If you do not take a payment within that time, you must create a new CVC session value.

Next steps


Using the Payments API

Using the Card Payments API