Repository navigation
Add payment card scheme validation - #122
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds card-number scheme validation through
it.IsCardScheme,validate.CardScheme, andis.CardScheme. Callers explicitly select one or more of 12 schemes; for example,it.IsCardScheme(validate.CardSchemeVisa, validate.CardSchemeMastercard)accepts either scheme's prefix and length rules.Patterns follow Symfony 8.0, including legacy formats. Only ASCII digits are accepted, without stripping whitespace or hyphens. Checksum validation remains separate via
it.IsLUHN(); this does not verify card existence or payment availability.Includes typed scheme constants, custom errors/messages, validation groups, generic
This/Eachsupport, English/Russian translations, examples, README documentation, and an Unreleased changelog entry. Empty values are skipped. Empty or unknown scheme selections are configuration errors, a documented stricter policy than Symfony. Nonnumeric and nonmatching inputs share one violation error. No dependencies added.Validation:
bash scripts/test-all.shpassed (formatting, vet, golangci-lint v2.13.2, unit and race tests, module tidy and verification). Tests cover all schemes, prefix boundaries and allowed lengths, malformed input, multiple selections, caller slice isolation, translations, and independent LUHN checks.Closes #105.