Last Updated: 15 May 2024 | Change Log
Validate your customer's CVC details before processing them.
The validation does not check if your customer's card details are correct. The validator only checks the formatting of the entered details.
To integrate the validation feature you must:
- Initialize and configure the
useAccessCheckout
hook. - Create an implementation of a
CvcOnlyValidationEventListener
to be notified of validation events. - Get an instance of the
initialiseValidation
function exposed by theuseAccessCheckout
hook. - Call that function once your UI components are present in the DOM in order to effectively initialize the validation.
You can see an example of the CVC validation integration here.
First step to implement the validation is to configureuseAccessCheckout
, if you haven't already.
To do this, you must provide your baseUrl
, checkoutId
and the CVC identifier which you defined as the nativeID
property within the AccessCheckoutTextInput
component.
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 {initialiseValidation} = useAccessCheckout({
baseUrl: 'https://try.access.worldpay.com',
checkoutId: 'YOUR_CHECKOUT_ID',
config: useCvcOnlyConfig({
cvcId: 'cvcInput'
}),
});
}
Parameter | Description |
---|---|
baseUrl |
|
checkoutId | Your unique checkout ID. |
cvcId | The nativeID assigned to your CVC AccessCheckoutTextInput component. |
To receive validation results of your customer's cvc details, you are required to create your own implementation of the CvcOnlyValidationEventListener
interface. Each of the function of this interface is optional to give you flexibility to listen to the events that you care about.
Here is an example detailing how to do this.
const validationEventListener = {
onCvcValidChanged(isValid) {
// TODO: handle the cvc validation result
},
onValidationSuccess() {
// TODO: handle the form when the validation is complete i.e. all fields are valid
},
};
Method | Description |
---|---|
onCvcValidChanged | This method is called with the validity of the CVC field. isValid indicates whether the field is in a valid or invalid state. |
onValidationSuccess | This method is called when all fields are in a valid state. You typically use this to enable the submit button. |
You must now configure the useAccessCheckout
hook to get an instance of the function which will be used to initialize the validation of your UI.
To do this, add your CvcOnlyValidationEventListener
to the hook validation configuration using the helper hook useCvcOnlyConfig
this will expose a initialiseValidation
method.
Here is an example detailing how to do this.
import {useAccessCheckout, useCvcOnlyConfig} from '@worldpay/access-worldpay-checkout-react-native-sdk';
export default function CvcFlow() {
const validationEventListener = {
//...
}
const {initialiseValidation, ...} = useAccessCheckout({
...
config: useCvcOnlyConfig({
cvcId: 'cvcInput',
validationConfig: {
validationListener: validationEventListener,
},
}),
});
}
You can now initialize the validation using the initialiseValidation()
function. Before doing so, you need to make sure that your UI components for CVC are available in the DOM.
Validation initialization is an asynchronous process so make sure to handle the promise returned by the function.
import React from 'react';
import {View} from 'react-native';
// ...
const onLayout = () => {
initialiseValidation()
.then(() => {
// You may want to optionally perform some actions once validation has been successfully initialized.
})
.catch(e => {
// do something in case of error
});
};
return (
<View onLayout={onLayout}>
...
</View>);
Here's the full code sample of the steps above.
import React from 'react';
import {View} from 'react-native';
import {
AccessCheckoutTextInput,
useAccessCheckout,
useCvcOnlyConfig,
} from '@worldpay/access-worldpay-checkout-react-native-sdk';
export default function CvcFlow() {
const validationEventListener = {
onCvcValidChanged(isValid) {
// TODO: handle the cvc validation result
},
onValidationSuccess() {
// TODO: handle the form when the validation is complete i.e. all fields are valid
},
};
const {initialiseValidation, ...} = useAccessCheckout({
baseUrl: 'https://try.access.worldpay.com',
checkoutId: 'YOUR_CHECKOUT_ID',
config: useCvcOnlyConfig({
cvcId: 'cvcInput',
validationConfig: {
validationListener: validationEventListener,
},
}),
});
const onLayout = () => {
initialiseValidation()
.then(() => {
// You may want to optionally perform some actions once validation has been successfully initialized.
})
.catch(e => {
// do something in case of error
});
};
return (
<View onLayout={onLayout}>
<AccessCheckoutTextInput
nativeID="cvcInput"
placeholder="CVC"
/>
</View>
);
}
Next steps