Você tem formulários de pagamento para enviar e precisa validar cartões rapidamente. Ao final deste guia, você chamará a API de Validador de Cartão de Crédito - BIN Checker a partir do PHP para validar os primeiros 6 dígitos (BIN/IIN), ler dados do emissor e da marca, e fortalecer seu checkout ou pipeline de risco sem construir e manter suas próprias tabelas BIN.
Por que a validação de BIN é importante e o que você irá construir
O BIN (Número de Identificação do Banco) — os primeiros 6 dígitos de um cartão — informa você sobre o emissor, marca, tipo e muitas vezes o país. Você irá implementar uma etapa leve de pré-autorização que:
- Aceita os primeiros 6 dígitos do cliente (nunca o PAN completo),
- Chama um único endpoint para validar o BIN,
- Lê a marca do cartão (por exemplo, AMERICAN EXPRESS), tipo (CREDIT) e dicas do emissor,
- Desvia seu fluxo (por exemplo, prompts 3DS ou SCA, marcas permitidas ou gatilhos KYC adicionais).
Tudo abaixo é construído sobre API de Validador de Cartão de Crédito - BIN Checker na categoria Finanças & Pagamentos em Zyla API Hub.
Sobre a API de Validador de Cartão de Crédito - BIN Checker
Esta API valida o BIN (primeiros 6 dígitos) de qualquer cartão de crédito e retorna:
- Marca e tipo do cartão,
- Nível do cartão (quando disponível),
- Informações do emissor (quando disponíveis via API),
- Informações do país (quando disponíveis).
Ela expõe um único endpoint HTTP GET que aceita um único parâmetro de consulta obrigatório, bin, e retorna uma carga JSON concisa confirmando a validade, além de metadados do cartão.
A cobrança na Zyla é por assinatura + cota (não por chamada). Para esta API, você geralmente encontrará uma primeira opção de API como um teste de 7 dias ou 50 solicitações. Não há Plano Gratuito; verifique a página da API para opções de acesso e preços atuais.
Começando no Zyla API Hub
Para obter uma chave de API e começar a chamar endpoints:
- Abra a página da API: API de Validador de Cartão de Crédito - BIN Checker.
- Clique em Assinar (ou Começar Teste Gratuito se disponível) e complete o checkout. Lembre-se: modelo de assinatura + cota; não por chamada.
- Copie sua chave de API do painel.
- Autentique cada solicitação com o cabeçalho:
Authorization: Bearer YOUR_API_KEY.
Se você ainda não tem uma conta, pode rapidamente Registrar para obter uma chave de API e testá-la a partir do seu ambiente.
Referência de endpoint e implementação (cURL incluído)
Há um endpoint para validação de BIN:
- Método: GET
- URL:
https://zylalabs.com/api/40/credit-card-validator-bin-checker-api/1885/bin-checker - Parâmetro de consulta obrigatório:
bin(string): Os primeiros 6 dígitos, por exemplo,346350
- Auth:
Authorization: Bearer YOUR_API_KEY
cURL
curl -s -X GET "https://zylalabs.com/api/40/credit-card-validator-bin-checker-api/1885/bin-checker?bin=346350" \
-H "Authorization: Bearer YOUR_API_KEY"
Isso retorna um corpo JSON indicando se o BIN é válido e, quando disponível, metadados da marca e do emissor.
Guia de integração PHP
O trecho abaixo usa curl_init para invocar o mesmo endpoint a partir do PHP. Ele demonstra a construção da solicitação, autenticação e decodificação básica de JSON para lógica subsequente.
PHP (cURL)
<?php
$apiKey = 'YOUR_API_KEY';
$bin = '346350';
$url = 'https://zylalabs.com/api/40/credit-card-validator-bin-checker-api/1885/bin-checker?bin=' . urlencode($bin);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Accept: application/json',
],
CURLOPT_TIMEOUT => 10,
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);
curl_close($ch);
if ($err) {
// Erro de nível de transporte (DNS, TLS, timeout)
error_log('cURL error: ' . $err);
http_response_code(502);
exit('Erro upstream, tente novamente');
}
if ($httpCode < 200 || $httpCode >= 300) {
// Status não-2xx do Hub
http_response_code(502);
exit('Verificador de BIN indisponível');
}
data = json_decode($response, true);
// Verificações defensivas antes de ler campos
if (!is_array($data) || !isset($data['success'])) {
http_response_code(502);
exit('Resposta malformada');
}
// Lógica de ramificação de exemplo
if (!empty($data['isValid'])) {
$brand = $data['data']['card_brand'] ?? 'UNKNOWN';
$type = $data['data']['card_type'] ?? 'UNKNOWN';
// Impor marcas/tipos permitidos na borda (exemplo)
$allowedBrands = ['AMERICAN EXPRESS', 'VISA', 'MASTERCARD'];
if (!in_array($brand, $allowedBrands, true)) {
http_response_code(400);
exit('Marca de cartão não suportada');
}
// Continue com o checkout ou fluxo de pré-autorização
echo 'BIN válido. Marca: ' . $brand . ' | Tipo: ' . $type . PHP_EOL;
} else {
http_response_code(400);
exit('BIN inválido');
}
JavaScript (fetch)
const apiKey = 'YOUR_API_KEY';
const bin = '346350';
const url = `https://zylalabs.com/api/40/credit-card-validator-bin-checker-api/1885/bin-checker?bin=${encodeURIComponent(bin)}`;
fetch(url, {
method: 'GET',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Accept': 'application/json'
}
})
.then(async (res) => {
const text = await res.text();
if (!res.ok) {
throw new Error(`HTTP ${res.status}: ${text}`);
}
return JSON.parse(text);
})
.then((json) => {
if (json.isValid) {
const brand = json.data?.card_brand ?? 'UNKNOWN';
const type = json.data?.card_type ?? 'UNKNOWN';
console.log(`BIN válido. Marca: ${brand}, Tipo: ${type}`);
} else {
console.log('BIN inválido');
}
})
.catch((err) => {
console.error('Falha na solicitação:', err);
});
Estrutura da resposta e mapeamento de campos
A resposta inclui uma flag de validade de nível superior e um objeto de dados com vários atributos do cartão que você pode usar para roteamento ou verificações de conformidade. Abaixo está o exemplo de resposta oficial que você receberá da solicitação fornecida.
JSON (exemplo oficial)
{
"status": 200,
"success": true,
"isValid": true,
"message": "The BIN number is valid.",
"data": {
"bin_iin": "346350",
"card_brand": "AMERICAN EXPRESS",
"card_type": "CREDIT",
"card_level": "------",
"issuer_name_bank": "------",
"issuer_bank_website": "API Only",
"issuer_bank_phone": "API Only",
"iso_country_name": null,
"iso_country_code": null
}
}
Notas de campo que você realmente usará:
isValid: Booleano. O sinal decisivo para seu fluxo. Se falso, rejeite cedo.data.card_brand: por exemplo, AMERICAN EXPRESS. Direcione políticas de roteamento e aceitação em nível de marca.data.card_type: por exemplo, CREDIT. Útil para diferenciar o manuseio de débito/crédito se suas configurações de adquirente variarem.data.bin_iin: Eco do BIN da solicitação; bom para registro e auditorias.data.issuer_* / iso_country_*: Quando disponível, use para controles de risco e regras baseadas em país.
Abaixo estão exemplos JSON adicionais repetindo o mesmo exemplo oficial para que você possa copiar/colar em testes ou fixtures sem modificação.
JSON (fixture A)
{
"status": 200,
"success": true,
"isValid": true,
"message": "The BIN number is valid.",
"data": {
"bin_iin": "346350",
"card_brand": "AMERICAN EXPRESS",
"card_type": "CREDIT",
"card_level": "------",
"issuer_name_bank": "------",
"issuer_bank_website": "API Only",
"issuer_bank_phone": "API Only",
"iso_country_name": null,
"iso_country_code": null
}
}
JSON (fixture B)
{
"status": 200,
"success": true,
"isValid": true,
"message": "The BIN number is valid.",
"data": {
"bin_iin": "346350",
"card_brand": "AMERICAN EXPRESS",
"card_type": "CREDIT",
"card_level": "------",
"issuer_name_bank": "------",
"issuer_bank_website": "API Only",
"issuer_bank_phone": "API Only",
"iso_country_name": null,
"iso_country_code": null
}
}
JSON (fixture C)
{
"status": 200,
"success": true,
"isValid": true,
"message": "The BIN number is valid.",
"data": {
"bin_iin": "346350",
"card_brand": "AMERICAN EXPRESS",
"card_type": "CREDIT",
"card_level": "------",
"issuer_name_bank": "------",
"issuer_bank_website": "API Only",
"issuer_bank_phone": "API Only",
"iso_country_name": null,
"iso_country_code": null
}
}
Casos de uso, integração MCP e notas de produção
Casos de uso de finanças do mundo real
- Pré-validação do checkout: Rejeite BINs obviamente errados antes de atingir seu PSP, economizando taxas de gateway e latência.
- Lista branca de marcas: Aceite apenas marcas suportadas por país ou categoria de comerciante.
- Gatilhos SCA/3DS: Aplique verificações adaptativas com base na marca e tipo.
- Pontuação de risco: Alimente
isValid,card_brandeiso_country_code(quando disponível) em seu modelo de risco. - Suporte e relatórios: Armazene
bin_iinecard_brandpara painéis de reconciliação.
Chamando a API de agentes de IA via MCP
Cada API da Zyla pode ser invocada através do gateway do Protocolo de Contexto do Modelo (MCP). Aponte qualquer cliente compatível com MCP (por exemplo, Claude Code, Cursor, Windsurf) para o endpoint MCP e forneça sua chave de API:
- Gateway MCP:
https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY - Saiba mais aqui: MCP
Dentro do seu agente, configure uma ferramenta que emita um GET para o endpoint do Verificador de BIN com a consulta bin e o cabeçalho Authorization: Bearer. O agente pode então ramificar em isValid e ler data.card_brand para etapas subsequentes.
Notas de produção que economizam tempo
- Autenticação: Sempre envie
Authorization: Bearer YOUR_API_KEY. Não passe chaves em strings de consulta. - Validação de entrada: Certifique-se de que o
bintenha exatamente 6 caracteres numéricos antes de chamar a API. - Timeouts e tentativas: Chamadas de rede falham; defina um tempo limite do cliente (por exemplo, 5–10s) e tente novamente com backoff para condições transitórias 5xx/timeout.
- Cache: Os dados do BIN são relativamente estáveis. Armazene respostas com chave por
binpor horas ou dias para reduzir latência e cotas. - Tratamento de erros: Verifique o status HTTP e verifique o esquema JSON antes de ler campos aninhados. Retorne graciosamente se os campos forem nulos ou ofuscados (por exemplo, “Apenas API”).
- Minimização de dados: Transmita apenas o BIN, nunca PANs completos de cartão ou CVV para este endpoint.
- Observabilidade: Registre
bin,isValid,card_brande status HTTP para auditoria e ajuste (evite armazenar PANs completos). - Separação de ambientes: Chaves diferentes por ambiente; nunca comite chaves no código.
Para cotas e opções de acesso atuais, revise a página da API em Zyla API Hub. A cobrança é por assinatura + cota, não por chamada; não há Plano Gratuito. O primeiro acesso à API geralmente oferece um teste de 7 dias ou 50 solicitações — verifique na listagem.
FAQ
1) Qual é o endpoint exato e o método que devo chamar?
Use GET contra: https://zylalabs.com/api/40/credit-card-validator-bin-checker-api/1885/bin-checker?bin=346350 (substitua o valor de bin). Inclua o cabeçalho Authorization: Bearer YOUR_API_KEY.
2) Quais parâmetros são obrigatórios?
Apenas um parâmetro de consulta é obrigatório: bin (string), os primeiros seis dígitos do cartão.
3) Como é a aparência da resposta?
O corpo inclui status, success, isValid, message, e um objeto data com campos como bin_iin, card_brand, e card_type. Veja os exemplos JSON acima.
4) Como é tratada a cobrança?
A Zyla usa um modelo de assinatura + cota (não por chamada). Não há Plano Gratuito. Para esta API, a primeira API geralmente oferece um teste de 7 dias ou 50 solicitações. Verifique a página da API para detalhes atuais.
5) Posso chamar isso de um agente de IA?
Sim. Use o gateway MCP da Zyla em https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY e configure seu agente para emitir um GET para o endpoint do Verificador de BIN com o cabeçalho de autorização necessário.
Pronto para validar BINs em seu checkout PHP ou serviço de risco? Crie sua conta, assine a API e pegue sua chave: Registrar. Você pode explorar APIs adicionais de Finanças & Pagamentos a qualquer momento em Zyla API Hub e na página de listagem dedicada para a API de Validador de Cartão de Crédito - BIN Checker.