API PIX Completa

Integre pagamentos e transferências PIX em sua aplicação com nossa API robusta, rápida e segura. Processamento em tempo real com webhooks automáticos.

Começar Integração

Gerar QRCode PIX

Endpoint Principal

POST https://divpag.com/v3/pix/qrcode

Parâmetros Obrigatórios

Parâmetro Tipo Descrição Exemplo
client_id string Identificador único do cliente joao_12345
client_secret string Chave secreta para autenticação abc123def456...
nome string Nome completo do pagador João Silva Santos
cpf string CPF apenas números 12345678901
valor float Valor em reais (formato decimal) 150.99
descricao string Descrição do pagamento Pagamento de serviço
urlnoty string URL para receber webhooks https://seusite.com/webhook
Exemplo PHP
$apiUrl = 'https://divpag.com/v3/pix/qrcode';

$postData = [
    'client_id' => 'seu_client_id_aqui',
    'client_secret' => 'sua_chave_secreta_aqui',
    'nome' => 'João Silva Santos',
    'cpf' => '12345678901',
    'valor' => 150.99,
    'descricao' => 'Pagamento de serviço premium',
    'urlnoty' => 'https://seusite.com/divpag_webhook.php'
];

$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/x-www-form-urlencoded',
    'User-Agent: SeuApp/1.0'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$data = json_decode($response, true);

if($httpCode === 200 && isset($data['qrcode'])) {
    echo "✅ QRCode gerado com sucesso!";
    echo "ID: " . $data['transactionId'];
    echo "QRCode: " . $data['qrcode'];
} else {
    echo "❌ Erro: " . ($data['message'] ?? 'Erro desconhecido');
}

Respostas da API

Sucesso (200 OK)

{
    "transactionId": "4392d1d7e408d3cec04fm1zf3gv7vkq1",
    "status": "PENDING",
    "amount": 150.99,
    "qrcode": "00020126850014br.gov.bcb.pix...",
    "external_id": "68a945c086377"
}

Erro de Validação (400 Bad Request)

{
    "statusCode": 400,
    "message": "CPF inválido ou parâmetros obrigatórios ausentes",
    "errors": [
        "O campo 'valor' é obrigatório",
        "CPF deve conter apenas números"
    ]
}

Erro de Autenticação (401 Unauthorized)

{
    "statusCode": 401,
    "message": "client_id ou client_secret inválidos"
}

Transferência PIX

Endpoint para Transferências

POST https://divpag.com/v3/pix/payment

Parâmetros Obrigatórios

Parâmetro Tipo Descrição Exemplo
client_id string ID do cliente na API maria_98765
client_secret string Chave secreta do cliente def456ghi789...
nome string Nome do remetente Maria Silva
cpf string CPF do remetente 98765432100
valor float Valor da transferência 250.75
chave_pix string Chave PIX do destinatário 11970142332
urlnoty string URL para notificações https://seusite.com/webhook
Exemplo PHP
$apiUrl = 'https://divpag.com/v3/pix/payment';

$postData = [
    'client_id' => 'maria_98765',
    'client_secret' => 'def456ghi789...',
    'nome' => 'Maria Silva Santos',
    'cpf' => '98765432100',
    'valor' => 250.75,
    'chave_pix' => '11970142332',
    'urlnoty' => 'https://seusite.com/webhook.php'
];

$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$data = json_decode($response, true);

if($httpCode === 200 && isset($data[0]['statusCode']) 
   && $data[0]['statusCode'] == 200) {
    echo "✅ Transferência iniciada!";
    echo "Mensagem: " . $data[0]['message'];
} else {
    echo "❌ Erro: " . ($data['message'] ?? 'Erro desconhecido');
}

Respostas da API

Transferência Iniciada (200 OK)

[{
    "statusCode": 200,
    "message": "Transferência PIX processada com sucesso",
    "transactionId": "798176179"
}]

Saldo Insuficiente (400 Bad Request)

{
    "statusCode": 400,
    "message": "Saldo insuficiente para realizar a transferência"
}

Chave PIX Inválida (400 Bad Request)

{
    "statusCode": 400,
    "message": "Chave PIX inválida ou não encontrada"
}

Sistema de Webhooks

Como Funcionam os Webhooks

Nossa API envia automaticamente notificações para a URL especificada no parâmetro urlnoty sempre que o status de uma transação é alterado. Os webhooks são enviados via POST com Content-Type: application/json.

Webhook: Pagamento PIX Recebido

Enviado quando um pagamento PIX é confirmado:

Payload Completo

JSON Response
{
    "transactionType": "RECEIVEPIX",
    "transactionId": "a502e53d7e7d7c8afd0fmenrr80g57h0",
    "external_id": "68a945c086377",
    "amount": 150.99,
    "paymentType": "PIX",
    "status": "PAID",
    "dateApproval": "2025-08-23 04:38:39",
    "creditParty": {
        "name": "João Silva Santos",
        "email": "joao@email.com",
        "taxId": "12345678901"
    },
    "debitParty": {
        "bank": "Divpag Pagamentos LTDA",
        "taxId": "59.667.922/0001-08"
    }
}

Webhook: Transferência PIX Concluída

Enviado quando uma transferência PIX é processada:

Payload Completo

JSON Response
{
    "transactionType": "PAYMENT",
    "transactionId": "798176179",
    "external_id": "e3ac10e77397a1516b1e273a01d4rxp67",
    "amount": 250.75,
    "paymentType": "PIX",
    "dateApproval": "2025-08-23 15:45:22",
    "statusCode": {
        "statusId": 1,
        "description": "Transferência concluída com sucesso"
    }
}

Processamento do Webhook (PHP)

divpag_webhook.php
<?php
// Receber dados do webhook
$input = file_get_contents('php://input');
$data = json_decode($input, true);

if (!$data) {
    http_response_code(400);
    die('Dados inválidos');
}

// Log para debug
file_put_contents('webhook_log.txt',
    date('Y-m-d H:i:s') . " - " . $input . PHP_EOL,
    FILE_APPEND
);

// Processar baseado no tipo
switch ($data['transactionType']) {
    case 'RECEIVEPIX':
        if ($data['status'] === 'PAID') {
            $transactionId = $data['transactionId'];
            $amount = $data['amount'];
            $external_id = $data['external_id'];

            // Liberar produto/serviço
            liberarProduto($external_id, $amount);
            echo "Pagamento processado";
        }
        break;

    case 'PAYMENT':
        if ($data['statusCode']['statusId'] == 1) {
            $transactionId = $data['transactionId'];
            $amount = $data['amount'];

            // Confirmar transferência
            confirmarTransferencia($transactionId, $amount);
            echo "Transferência concluída";
        }
        break;
}

http_response_code(200);
echo "OK";
?>

Considerações de Segurança

  • Sempre validar os dados recebidos antes de processar.
  • Retornar HTTP 200 para confirmar o recebimento. Outros códigos farão a API reenviar.
  • Implementar uma fila de processamento para evitar gargalos.
  • Registrar logs de todas as requisições para auditoria.

Suporte e Contato

Precisa de ajuda ou encontrou algum problema? Entre em contato conosco:

suporte@divpag.com Telegram Support
Copiado para a área de transferência!