react-native-moyasar-sdk
Version:
Official React Native Moyasar SDK - Integrate Credit Cards, Apple Pay, Samsung Pay, and STC Pay with simple interfaces for a seamless payment experience in your React Native app
35 lines (28 loc) • 1.11 kB
text/typescript
import { FieldValidator } from './field_validator';
import { CreditCardNetwork } from '../../models/credit_card_network';
import { getCreditCardNetworkFromNumber } from '../../helpers/credit_card_utils';
import { getConfiguredLocalizations } from '../../localizations/i18n';
export class CreditCardCvcValidator extends FieldValidator {
constructor() {
super();
const { t } = getConfiguredLocalizations();
this.addRule(t('moyasarTranslation:cvcRequired'), (value: string) => {
return value.length === 0;
});
this.addRule(t('moyasarTranslation:onlyDigits'), (value: string) => {
return !/^\d+$/.test(value);
});
this.addRule(
t('moyasarTranslation:invalidCvc'),
(value: string, creditCardNumber: string | undefined) => {
const network = getCreditCardNetworkFromNumber(creditCardNumber ?? '');
if (network === CreditCardNetwork.unknown) {
return value.length < 3 || value.length > 4;
}
return network === CreditCardNetwork.amex
? value.length !== 4
: value.length !== 3;
}
);
}
}