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