laravel-validation-rules / credit-card
Validate credit card number, expiration date, cvc
Installs: 1 423 083
Dependents: 4
Suggesters: 0
Security: 0
Stars: 228
Watchers: 13
Forks: 69
Open Issues: 9
Requires
- php: 7.*|8.*
- illuminate/support: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/translation: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/validation: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ~2.5|^3.14
- orchestra/testbench: ^3.5|^4.0|^5.0|^8.0|^9.0
- phpunit/phpunit: 6.2.*|^8.5.8|^9.3.3|^10.5
README
This rule will validate that a given credit card number, expiration date or cvc is valid.
Installation
composer require laravel-validation-rules/credit-card
Usage
As FormRequest
<?php namespace App\Http\Requests; use LVR\CreditCard\CardCvc; use LVR\CreditCard\CardNumber; use LVR\CreditCard\CardExpirationYear; use LVR\CreditCard\CardExpirationMonth; use Illuminate\Foundation\Http\FormRequest; class CreditCardRequest extends FormRequest { /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'card_number' => ['required', new CardNumber], 'expiration_year' => ['required', new CardExpirationYear($this->get('expiration_month'))], 'expiration_month' => ['required', new CardExpirationMonth($this->get('expiration_year'))], 'cvc' => ['required', new CardCvc($this->get('card_number'))] ]; } }
Card number
From request
$request->validate( ['card_number' => '37873449367100'], ['card_number' => new LVR\CreditCard\CardNumber] );
Directly
(new LVR\CreditCard\Cards\Visa) ->setCardNumber('4012888888881881') ->isValidCardNumber()
Card expiration
From request
// CardExpirationYear requires card expiration month $request->validate( ['expiration_year' => '2017'], ['expiration_year' => ['required', new LVR\CreditCard\CardExpirationYear($request->get('expiration_month'))]] ); // CardExpirationMonth requires card expiration year $request->validate( ['expiration_month' => '11'], ['expiration_month' => ['required', new LVR\CreditCard\CardExpirationMonth($request->get('expiration_year'))]] ); // CardExpirationDate requires date format $request->validate( ['expiration_date' => '02-18'], ['expiration_date' => ['required', new LVR\CreditCard\CardExpirationDate('my')]] );
Directly
LVR\CreditCard\Cards\ExpirationDateValidator( $expiration_year, $expiration_month )->isValid(); // Or static LVR\CreditCard\Cards\ExpirationDateValidator::validate( $expiration_year, $expiration_month );
Card CVC
From request
// CardCvc requires card number to determine allowed cvc length $request->validate( ['cvc' => '123'], ['cvc' => new LVR\CreditCard\CardCvc($request->get('card_number'))] );
Directly
LVR\CreditCard\Cards\Card::isValidCvcLength($cvc);
License
This project is licensed under an Apache 2.0 license which you can find in this LICENSE.
Feedback
If you have any feedback, comments or suggestions, please feel free to open an issue within this repository!