Payment
The pydantic_extra_types.payment module provides the PaymentCardNumber data type.
PaymentCardBrand
Section titled “PaymentCardBrand”Bases: str, Enum
Payment card brands supported by the PaymentCardNumber.
PaymentCardNumber
Section titled “PaymentCardNumber”Bases: str
Attributes
Section titled “Attributes”strip_whitespace
Section titled “strip_whitespace”Whether to strip whitespace from the input value.
Type: bool Default: True
min_length
Section titled “min_length”The minimum length of the card number.
Type: int Default: 12
max_length
Section titled “max_length”The maximum length of the card number.
Type: int Default: 19
The first 6 digits of the card number.
Type: str Default: card_number[:6]
The last 4 digits of the card number.
Type: str Default: card_number[(-4):]
The brand of the card.
Type: PaymentCardBrand Default: self.validate_brand(card_number)
masked
Section titled “masked”The masked card number.
Type: str
Methods
Section titled “Methods”validate
Section titled “validate”@classmethod
def validate(
cls,
__input_value: str,
_: core_schema.ValidationInfo,
) -> PaymentCardNumberValidate the PaymentCardNumber instance.
Returns
Section titled “Returns”PaymentCardNumber -- The validated PaymentCardNumber instance.
Parameters
Section titled “Parameters”__input_value : str
The input value to validate.
_ : core_schema.ValidationInfo
The validation info.
validate_digits
Section titled “validate_digits”@classmethod
def validate_digits(cls, card_number: str) -> NoneValidate that the card number is all digits.
Returns
Section titled “Returns”Parameters
Section titled “Parameters”card_number : str
The card number to validate.
Raises
Section titled “Raises”PydanticCustomError-- If the card number is not all digits.
validate_luhn_check_digit
Section titled “validate_luhn_check_digit”@classmethod
def validate_luhn_check_digit(cls, card_number: str) -> strValidate the payment card number. Based on the Luhn algorithm.
Returns
Section titled “Returns”str -- The validated card number.
Parameters
Section titled “Parameters”card_number : str
The card number to validate.
Raises
Section titled “Raises”PydanticCustomError-- If the card number is not valid.
validate_brand
Section titled “validate_brand”@staticmethod
def validate_brand(card_number: str) -> PaymentCardBrandValidate length based on [BIN](https://en.wikipedia.org/wiki/Payment_card_number#Issuer_identification_number_(IIN\)) for major brands.
Returns
Section titled “Returns”PaymentCardBrand -- The validated card brand.
Parameters
Section titled “Parameters”card_number : str
The card number to validate.
Raises
Section titled “Raises”PydanticCustomError-- If the card number is not valid.