Documentação Completa da API
Guia consolidado para configurar, integrar e testar a API de Pagamentos Multi-Gateway (Mercado Pago, EFI Bank/Gerencianet, Asaas, Stripe e Pagar.me), unindo o conteúdo do HTML, Markdown e da documentação interativa.
Integração Rápida
Endpoints simples para criar pedidos e consultar status em poucos minutos.
API Key Segura
Proteção via chave mestra enviada em header ou query string.
Multi-Gateway
Mercado Pago, EFI, Asaas, Stripe e Pagar.me ativos com um fluxo unificado.
Configuração Inicial
A primeira etapa é configurar o sistema e credenciais na interface administrativa.
- Acesse o painel em:
https://seu-dominio/api/configuracao.php - Preencha as credenciais de cada gateway (Tokens, Client IDs, chaves PIX, etc.).
- Ative ou desative cada gateway conforme o uso, além de opções como cartão de crédito e PIX.
- Defina juros, parcelamentos e taxa de Multicheckout.
- Escolha o ambiente: Produção ou Sandbox.
- Gerencie a Chave de API única de acesso, caso queira segurança completa nos endpoints.
Arquivos principais envolvidos:
configuracao.php– Tela administrativa para editar as configurações globalmente.config.php– Carregador mestre de dependências e variáveis. Lê os dados deconfig_custom.json.
Webhooks & Atualização Automática
Para que os pedidos mudem automaticamente de pendente para pago ou cancelado, você deve configurar as URLs de Webhook nos painéis dos gateways.
- Acesse
configuracao.phpe localize as configurações de cada gateway. - Siga os links e eventos necessários para a comunicação bidirecional de recebimentos.
- Configure essa URL (geralmente apontando para os
webhook.phpde suas subpastas) no gateway correspondente:
- Asaas: Configurações > Integrações > Webhooks, eventos de
cobrança. (URL:
/gateways/asaas/config/webhook.php) - EFI Bank: URLs de PIX e Boletos via API/painel da EFI. (URL:
/gateways/gerencianet/config/webhook.php) - Mercado Pago: em Sua Aplicação > Notificações Webhooks/IPN, eventos
de
payment. (URL:/gateways/mercadopago/webhook.php) - Stripe: em Developers > Webhooks, configure a URL para eventos de
payment_intent.succeededecharge.updated. (URL:/gateways/stripe/webhook.php) - Pagar.me: em Configurações > Webhooks, configure os eventos de
order.paidecharge.paid. (URL:/gateways/pagarme/webhook.php)
Estrutura de Arquivos
pagamento.php– Página de checkout global que exibe o pedido e opções de múltiplos pagamentos.index.php– Gerador de Links de Pagamento.configuracao.php– Painel administrativo interativo.gerar_pagamento.php– Endpoint JSON para criação de pedidos via API externa.consultar_status.php– Endpoint JSON/HTML para consulta de status.config.php– Centralizador de credenciais do sistema.gateways/– Implementações e regras divididas por pastas (Mercado Pago, EFI, Asaas, Stripe, Pagar.me).
Requisitos de servidor:
- PHP 7.4 ou superior;
- MySQL (5.7+);
- Extensões Ativas:
curl,json,pdo,mbstring.
Endpoints Principais
https://pay.versianecode.com.br/gerar_pagamento.php
Cria o pedido no banco de dados e retorna a URL de checkout para redirecionar o cliente onde ele escolherá entre Mercado Pago, EFI, Asaas, Pagar.me ou Stripe.
https://pay.versianecode.com.br/consultar_status.php
Consulta o status de um pagamento individual ou de um grupo multicheckout, de forma global a
partir da tabela central pedido.
Exemplo de Resposta (JSON) em /gerar_pagamento.php:
{
"success": true,
"pedido_id": "42",
"payment_url": "https://seu-dominio/api/pagamento?id=42"
}
Parâmetros da Requisição
Endpoint: gerar_pagamento.php
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
valor |
String/Float | Sim | Valor do pagamento com as casas decimais. Ex: 150.00 |
nome |
String | Não | Nome completo do cliente. |
email |
String | Não | E-mail para recibo direto dos gateways. |
cpf |
String | Não | CPF/CNPJ do cliente, obrigatório para Pagar.me/Asaas em faturas, com ou sem máscara. |
telefone |
String | Não | Telefone ou WhatsApp de cobrança. |
format |
String | Não | Use json para retorno em objeto REST (sem redirecionar a tela). |
multicheckout_id |
String | Não | ID opcional alfanumérico para agrupar vários pedidos em uma mesma cesta. |
api_key |
String | Condicional | Obrigatório se a Chave Mestra estática estiver preenchida. |
Endpoint: consultar_status.php
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
Int | Condicional | ID do pedido na tabela pedido para consulta individual. |
multicheckout_id |
String | Condicional | ID de grupo para varredura de múltiplos status ao mesmo tempo. |
api_key |
String | Condicional | Obrigatório se em ambiente seguro. |
Segurança & Gerenciamento de Chaves
Todas as requisições JSON exigem autenticação. Gerencie chaves em Gerenciar Usuários ou Minhas Chaves. Para trocar a chave ativa, acesse Configurações.
Como funciona o sistema de chaves
Fluxo de ativação:
- Minhas Chaves → Criar chave → Escolher Sandbox (ativa imediato) ou Produção (fica pendente)
- Se Produção: Gerenciar Chaves (Admin) → aba Chaves → Aprovar → definir permissões e limites
- Configurações → Card "Chave de API Ativa" → Selecionar a chave no dropdown → Aplicar
- A chave passa a ser exigida em todas as requisições JSON à API
Como enviar a chave nas requisições:
- Header HTTP (recomendado):
X-API-KEY: sua_chave_aqui - Query String (alternativo):
?api_key=sua_chave_aqui
Respostas de Erro de Autenticação (HTTP 401):
{ "success": false, "error": "API Key ausente. Envie via header X-API-KEY ou parâmetro api_key." }
// Chave inválida ou não existe no banco
{ "success": false, "error": "API Key inválida." }
// Chave pendente (produção ainda não aprovada pelo admin)
{ "success": false, "error": "API Key inválida." }
// Chave revogada pelo admin
{ "success": false, "error": "API Key revogada." }
// Chave expirada
{ "success": false, "error": "API Key expirada." }
// Limite diário atingido
{ "success": false, "error": "Limite diário de requisições atingido." }
// Limite mensal atingido
{ "success": false, "error": "Limite mensal de requisições atingido." }
// IP não autorizado (whitelist)
{ "success": false, "error": "IP não autorizado para esta chave." }
// Sem permissão para este endpoint
{ "success": false, "error": "Permissão negada para este endpoint." }
Coleção do Postman
Para facilitar os seus testes, preparamos uma coleção oficial do Postman com todos os endpoints pré-configurados (Headers, Body e Variáveis).
Payment_API_Collection.json
Versão 1.0 (v2.1.0 JSON format)
Como importar:
- Abra o Postman em seu computador.
- Clique no botão Import no canto superior esquerdo.
- Arraste o arquivo baixado ou selecione-o.
- Configure as variáveis
base_urleapi_keyna aba Variables da coleção importada.
Exemplos de Integração em Múltiplas Linguagens
<?php
$url = "https://seu-dominio/api/gerar_pagamento.php";
$params = [
"valor" => "150.00",
"nome" => "João Silva",
"email" => "joao@email.com",
"cpf" => "123.456.789-00", // Necessário pro Asaas/Pagar.me PIX
"format" => "json",
];
$ch = curl_init($url . "?" . http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-API-Key: SUA_CHAVE_MESTRA" // Opcional / Depende da sua configuração
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if (!empty($data["success"])) {
echo "URL de Checkout Unificado: " . $data["payment_url"];
} else {
echo "Erro ocorrido: " . ($data["error"] ?? "Erro não fatal");
}
?>
import requests
url = "https://seu-dominio/api/gerar_pagamento.php"
params = {
"valor": "99.90",
"nome": "Maria Souza",
"format": "json"
}
headers = {
"X-API-Key": "SUA_CHAVE_MESTRA"
}
try:
response = requests.get(url, params=params, headers=headers)
data = response.json()
if data.get("success"):
print("Pedido Criado Internamente:", data["pedido_id"])
print("Link Base:", data["payment_url"])
else:
print("Erro Local:", data.get("error"))
except Exception as e:
print(f"Erro Request: {e}")
const axios = require('axios');
async function gerarPagamento() {
try {
const res = await axios.post('https://seu-dominio/api/gerar_pagamento.php', null, {
params: {
valor: '50.00',
format: 'json'
},
headers: {
'X-API-Key': 'SUA_CHAVE_MESTRA'
}
});
console.log('Central de Pagamento Ativa em:', res.data.payment_url);
} catch (error) {
console.error('Falha de sistema', error.response?.data || error.message);
}
}
gerarPagamento();
curl -X GET \
-H "X-API-Key: SUA_CHAVE_MESTRA" \
"https://seu-dominio/api/gerar_pagamento.php?valor=10.00&format=json"
Consulta Direta de Status e Sincronização
Use o endpoint consultar_status.php para saber se o usuário de fato concluiu a
verificação nos checkouts externos e se Webhooks já sincronizaram e alteraram as linhas do Banco de
Dados para seu fechamento de caixa.
GET /api/consultar_status.php?multicheckout_id=group_123&format=json
Exemplo completo de retorno com o agrupamento de multi-compras (multicheckout_id):
{
"success": true,
"type": "multicheckout",
"summary": {
"total_items": 2,
"paid_items": 1,
"total_value": "250.00",
"status_geral": "parcialmente_pago"
},
"items": [
{ "id": 1, "status": "paid", "valor": "100.00" },
{ "id": 2, "status": "pendente", "valor": "150.00" }
]
}
Testar API ao Vivo
https://seu-dominio/api/gerar_pagamento.php
{
"method": "GET",
"params": {
"format": "json",
"valor": "100.00",
"nome": "Cliente Teste",
"email": "teste@email.com"
}
}
{
"message": "Clique em 'Testar Requisição' para ver a resposta da API"
}
Testes Locais da Produção API
Via Barra do Navegador: Acesso Direto para Checkout
- Acesse por janela anônima para testar a captura:
https://seu-dominio/api/gerar_pagamento.php?valor=50.00&nome=TesteLocal - Siga o curso lógico. O script criará o
pedido_id, preencherá as tabelas nativas de logs, e pulará você a página unificadapagamento?id={gerado}. - Confirme em Painel Pedidos visivelmente a geração limpa.
Simulação Profunda com Aplicativo/REST
- Use a aplicação robusta do Postman e adicione a Query Form JSON:
curl -X GET "https://seu-dominio/api/gerar_pagamento?valor=75.50&format=json" - A guarde retornar um status Code
200 OKcom a key"payment_url"populada.