PHP Classes

File: index.php

Recommend this page to a friend!
  Classes of VITOR GABRIEL M. DANTAS   Card Validator PHP   index.php   Download  
File: index.php
Role: Application script
Content type: text/plain
Description: Configuration script
Class: Card Validator PHP
Validate different types of credit card numbers
Author: By
Last change:
Date: 4 days ago
Size: 1,776 bytes
 

Contents

Class file image Download
<?php

header
('Content-Type: application/json');

// Função para identificar a bandeira do cartão
function identificarBandeira($numeroCartao) {
   
// Remove qualquer caractere que não seja número
   
$numeroCartao = preg_replace('/[^0-9]/', '', $numeroCartao);

   
// Bandeira Visa (começa com 4)
   
if (preg_match('/^4[0-9]{12}(?:[0-9]{3})?$/', $numeroCartao)) {
        return
'Visa';
    }
   
   
// Bandeira Mastercard (51 a 55 ou 2221 a 2720)
   
if (preg_match('/^(5[1-5][0-9]{14}|2(2[2-9][1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12})$/', $numeroCartao)) {
        return
'Mastercard';
    }

   
// Bandeira Elo (vários intervalos específicos)
   
$eloBins = ['4011', '4312', '4389', '4514', '4576', '5041', '5066', '5090', '6277', '6363', '6504', '6550'];
    foreach (
$eloBins as $bin) {
        if (
strpos($numeroCartao, $bin) === 0) {
            return
'Elo';
        }
    }

   
// Bandeira American Express (34 ou 37)
   
if (preg_match('/^3[47][0-9]{13}$/', $numeroCartao)) {
        return
'American Express';
    }

   
// Bandeira Discover (6011, 65 ou entre 644-649)
   
if (preg_match('/^(6011[0-9]{12}|65[0-9]{14}|64[4-9][0-9]{13})$/', $numeroCartao)) {
        return
'Discover';
    }

   
// Bandeira Hipercard (6062)
   
if (preg_match('/^6062[0-9]{12,15}$/', $numeroCartao)) {
        return
'Hipercard';
    }

    return
'Desconhecida';
}

// Captura o número de cartão na URL (GET)
if (isset($_GET['card'])) {
   
$numeroCartao = $_GET['card'];
   
$bandeira = identificarBandeira($numeroCartao);

   
// Retorna o resultado em formato JSON
   
echo json_encode([
       
'numero_cartao' => $numeroCartao,
       
'bandeira' => $bandeira
   
]);
} else {
    echo
json_encode(['erro' => 'Número do cartão não informado']);
}