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.

  1. Acesse o painel em: https://seu-dominio/api/configuracao.php
  2. Preencha as credenciais de cada gateway (Tokens, Client IDs, chaves PIX, etc.).
  3. Ative ou desative cada gateway conforme o uso, além de opções como cartão de crédito e PIX.
  4. Defina juros, parcelamentos e taxa de Multicheckout.
  5. Escolha o ambiente: Produção ou Sandbox.
  6. 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 de config_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.

  1. Acesse configuracao.php e localize as configurações de cada gateway.
  2. Siga os links e eventos necessários para a comunicação bidirecional de recebimentos.
  3. Configure essa URL (geralmente apontando para os webhook.php de 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.succeeded e charge.updated. (URL: /gateways/stripe/webhook.php)
  • Pagar.me: em Configurações > Webhooks, configure os eventos de order.paid e charge.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

GET / POST 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.

GET 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

🔐 API Protegida — Chave ativa configurada

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
🧪 Sandbox / Homologação
Criada pelo usuário em Minhas Chaves. Ativa imediatamente. Sem restrições de limite, IP ou permissão — ideal para desenvolvimento e testes.
🔐 Produção
Criada pelo usuário, fica pendente até o admin aprovar em Gerenciar Chaves. O admin define permissões, limites e IP whitelist antes de ativar.
🔢 Limites de Uso
Limite diário e mensal de requisições por chave (apenas produção). Ao atingir o limite retorna HTTP 401.
🛡️ Permissões & IP Whitelist
Restrinja a chave a um endpoint específico e/ou a IPs autorizados. Chaves sandbox ignoram essas restrições.
Fluxo de ativação:
  1. Minhas Chaves → Criar chave → Escolher Sandbox (ativa imediato) ou Produção (fica pendente)
  2. Se Produção: Gerenciar Chaves (Admin) → aba Chaves → Aprovar → definir permissões e limites
  3. Configurações → Card "Chave de API Ativa" → Selecionar a chave no dropdown → Aplicar
  4. 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):
// Chave não enviada
{ "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:
  1. Abra o Postman em seu computador.
  2. Clique no botão Import no canto superior esquerdo.
  3. Arraste o arquivo baixado ou selecione-o.
  4. Configure as variáveis base_url e api_key na aba Variables da coleção importada.

Exemplos de Integração em Múltiplas Linguagens

PHP Puro (cURL)
<?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");
}
?>
Python (Bibliotecas requests)
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}")
Node.js / JS (Axios/Fetch)
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();
Terminal SSH e Bash (cURL)
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?id=42&format=json
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"
    }
}
Este é o JSON que seria enviado em uma requisição POST. Atualmente usando GET com parâmetros na URL.
R$
Resposta da API Aguardando teste...
{
    "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
  1. Acesse por janela anônima para testar a captura:
    https://seu-dominio/api/gerar_pagamento.php?valor=50.00&nome=TesteLocal
  2. Siga o curso lógico. O script criará o pedido_id, preencherá as tabelas nativas de logs, e pulará você a página unificada pagamento?id={gerado}.
  3. Confirme em Painel Pedidos visivelmente a geração limpa.
Simulação Profunda com Aplicativo/REST
  1. 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"
  2. A guarde retornar um status Code 200 OK com a key "payment_url" populada.