Я против ужасной войны! Я выражаю свой протест. Я русский. Нам всем пиздец из-за всего лишь одного человека.

Валидация номера кредитной карты на PHP (Laravel)

Устанавливаем пакет. Документация на английском на GitHub

composer require laravel-validation-rules/credit-card

Как использовать пакет для валидации номера кредитной карты

Создание своего класса для валидации - CreditCardRequest

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'))]
    ];
  }
}

Без своего класса валидации:

$request->validate(
  ['card_number' => '2547853698514587'],
  ['card_number' => new \LVR\CreditCard\CardNumber]
);

Валидация напримую, без $request

Проверить пренадлежность к определенному типу карты

(new \LVR\CreditCard\Cards\Visa)
  ->setCardNumber('9854785143987562')
  ->isValidCardNumber()

Проверить корректность номера банковской карты:

$is_valid = null;
try{
  $is_valid = \LVR\CreditCard\Factory::makeFromNumber("8521478536985412")->isValidCardNumber();
}
catch(Exception $e){
  echo $e->getMessage();
}

Проверить срок действия кредитной карты

Через $request

Проверка года

$request->validate(
  ['expiration_year' => '2022'],
  ['expiration_year' => ['required', new \LVR\CreditCard\CardExpirationYear($request->get('expiration_month'))]]
);

Проверка месяца

$request->validate(
  ['expiration_month' => '11'],
  ['expiration_month' => ['required', new \LVR\CreditCard\CardExpirationMonth($request->get('expiration_year'))]]
);

Проверить актуальная ли дата у кредитной карты

$request->validate(
  ['expiration_date' => '02-24'],
  ['expiration_date' => ['required', new \LVR\CreditCard\CardExpirationDate('MM-YY')]]
);

Без $request

\LVR\CreditCard\Cards\ExpirationDateValidator(
  $expiration_year,
  $expiration_month
)->isValid();

// Or static
\LVR\CreditCard\Cards\ExpirationDateValidator::validate(
  $expiration_year,
  $expiration_month
);

Проверка корректности CVC для кредитной карты

Через $request

$request->validate(
  ['cvc' => '789'],
  ['cvc' => new \LVR\CreditCard\CardCvc($request->get('card_number'))]
);

Напрямую, без $request

\LVR\CreditCard\Cards\Card::isValidCvcLength($cvc);

Комментарии (0)

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

Похожие статьи

Наш сайт использует куки, нажмите «ОК» если вы не против
OK