PHP: Melhor algorítmo para validação de cartões de crédito

Por Fernando Katsukawa, 3 Dezembro, 2022

Esses dias eu estava desenvolvendo algumas funcionalidades de cartão de crédito e estava procurando um algorítmo para validação de cartões de crédito. Então eu encontrei o algoritmo de Luhn, também conhecido como modulus 10 ou algoritmo mod 10.

Sobre o algoritmo Luhn: Uma fórmula de soma de verificação simples usada para validar uma variedade de números de identificação, como números de cartão de crédito, números IMEI, números de seguro social canadenses.

Confira abaixo a função para validar cartão de crédito utilizando o algoritmo Luhn:

/**
   * Check if credit card number is valid.
   *
   * The Luhn algorithm or Luhn formula, also known as the "modulus 10" or
   * "mod 10" algorithm, is a simple checksum formula used to validate a variety
   * of identification numbers, such as credit card numbers.
   *
   * @param string $credit_card_number
   *   Credit card number to be validated.
   *
   * @return bool
   *   TRUE if credit card number is valid, FALSE otherwise.
   */
  function creditCardNumberIsValid(string $credit_card_number): bool {
    $sum = 0;
    $flag = 0;

    for ($i = strlen($credit_card_number) - 1; $i >= 0; $i--) {
      $add = $flag++ & 1 ? $credit_card_number[$i] * 2 : $credit_card_number[$i];
      $sum += $add > 9 ? $add - 9 : $add;
    }

    return $sum % 10 === 0;
  }

Sobre o Autor

Profile picture for user fkatsukawa

Fernando Katsukawa é desenvolvedor backend senior certificado, que já trabalha a 12 anos com o Drupal e contando...

Salvei seu valioso tempo? Use o copo abaixo para me comprar um cafezinho!
buy me a coffee - cup