Integre seu site ao
gateway ExaltaPay
Crie pagamentos PIX, exiba copia e cola, redirecione para o checkout hospedado
e acompanhe as cobranças pelo painel.
Como a integração funciona
O lojista cria uma chave em API no
painel ExaltaPay.
O site envia valor, descrição e dados
do pagador para o endpoint de
pagamentos.
A API retorna referência, checkout
hospedado e Pix copia e cola.
Headers obrigatórios
Todas as chamadas privadas usam as chaves criadas no painel em API > Nova chave.
Content-Type: application/json
X-Public-Key: pk_test_xxxxxxxxx
X-Secret-Key: variavel de ambiente do backend
Idempotency-Key: pedido-1001-pix-1Criar pagamento PIX
Idempotency-Key em toda criação. A mesma chave e o mesmo payload devolvem a resposta original sem gerar outro PIX.| Campo | Obrigatorio | Descricao |
|---|---|---|
method | Sim | Use pix. |
amount | Sim | Valor em BRL. Minimo operacional atual: R$ 3,00. |
external_reference | Sim | Identificador unico do pedido na loja. |
success_url | Nao | URL HTTPS após aprovação. |
cancel_url | Nao | URL HTTPS para cancelamento. |
description | Nao | Descricao do pedido. |
payer.name | Sim | Nome do pagador. |
payer.email | Sim | E-mail do pagador. |
payer.document | Sim | CPF ou CNPJ. |
payer.phone | Sim | Telefone com DDD. |
{
"method": "pix",
"amount": "49.90",
"external_reference": "pedido-1001",
"description": "Pedido #1001",
"payer": {
"name": "Maria Silva",
"email": "maria@email.com",
"document": "52998224725",
"phone": "11987654321"
}
}
Dados retornados
{
"sucesso": true,
"mensagem": "Pagamento criado com sucesso.",
"pagamento": {
"referencia": "PIX-123456",
"external_reference": "pedido-1001",
"ambiente": "test",
"status": "pending",
"valor_bruto": 49.9,
"taxa": 1.5,
"valor_liquido": 48.4,
"checkout_url": "https://morenintop.shop/checkout?token=chk_7db91e4c...",
"pix": {
"copia_e_cola": "EXALTA_PAY_SANDBOX_PIX-123456_..."
}
}
}
pix.copia_e_cola para gerar o QR Code no seu site ou envie o cliente para checkout_url.cURL
curl -X POST "https://morenintop.shop/api/v1/payments" \
-H "Content-Type: application/json" \
-H "X-Public-Key: pk_test_xxxxxxxxx" \
-H "X-Secret-Key: $EXALTA_SECRET_KEY" \
-H "Idempotency-Key: pedido-1001-pix-1" \
-d '{
"method": "pix",
"amount": "49.90",
"external_reference": "pedido-1001",
"description": "Pedido #1001",
"payer": {
"name": "Maria Silva",
"email": "maria@email.com",
"document": "52998224725",
"phone": "11987654321"
}
}'
JavaScript no backend (Node.js)
const response = await fetch("https://morenintop.shop/api/v1/payments", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Public-Key": process.env.EXALTA_PUBLIC_KEY,
"X-Secret-Key": process.env.EXALTA_SECRET_KEY,
"Idempotency-Key": "pedido-1001-pix-1"
},
body: JSON.stringify({
method: "pix",
amount: "49.90",
external_reference: "pedido-1001",
description: "Pedido #1001",
payer: {
name: "Maria Silva",
email: "maria@email.com",
document: "52998224725",
phone: "11987654321"
}
})
});
const data = await response.json();
if (!data.sucesso) {
throw new Error(data.mensagem || "Erro ao criar PIX");
}
console.log(data.pix.copia_e_cola);
Consultar status pela referencia
Use as mesmas chaves nos headers para consultar status, valores, origem e datas da cobranca.
Cadastrar URL de notificacao
{
"url": "https://loja.com/webhooks/exalta-pay",
"events": ["pagamento.aprovado"]
}
A entrega fica ativa imediatamente para cobrancas criadas pela API e pelo painel. Guarde o secret retornado no cadastro e responda HTTP 2xx.
Payload de pagamento aprovado
{
"id": "evt_f4e159c5f8db7f4d6c6628ae",
"event": "pagamento.aprovado",
"created_at": "2026-07-26T15:42:18-03:00",
"data": {
"reference": "PIX-615312",
"external_reference": "pedido-1001",
"environment": "live",
"status": "approved",
"method": "pix",
"amount": 49.90,
"fee": 0,
"net_amount": 49.90,
"currency": "BRL",
"description": "Pedido #1001",
"origin": "api",
"checkout_url": "https://morenintop.shop/checkout?token=chk_7db91e4c...",
"acquirer_reference": "abc123",
"updated_at": "2026-07-26T15:42:18-03:00",
"payer": {
"name": "Maria Silva",
"email": "maria@email.com",
"document": "52998224725",
"phone": "11987654321"
}
}
}
Validar assinatura HMAC
Calcule HMAC-SHA256(timestamp + "." + corpo_json_bruto, secret) e compare com X-Exalta-Signature no formato sha256=<hash>. O timestamp esta em X-Exalta-Timestamp.
$raw = file_get_contents('php://input');
$timestamp = $_SERVER['HTTP_X_EXALTA_TIMESTAMP'] ?? '';
$received = $_SERVER['HTTP_X_EXALTA_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac(
'sha256',
$timestamp . '.' . $raw,
$webhookSecret
);
if (!hash_equals($expected, $received)) {
http_response_code(401);
exit;
}
http_response_code(204);
Falhas sao retentadas de forma progressiva. Nao ha IP fixo garantido; valide sempre a assinatura HMAC.
Reenviar uma cobranca existente
{
"reference": "PIX-615312"
}
Envie esse JSON para POST https://morenintop.shop/api/v1/webhooks. Um novo evento e criado sem creditar o saldo novamente.
Erros comuns
| HTTP | Mensagem | Como corrigir |
|---|---|---|
| 401 | Informe X-Public-Key e X-Secret-Key. | Envie as duas chaves nos headers. |
| 422 | Envie um JSON valido. | Confira o formato do corpo da requisicao. |
| 422 | Para gerar PIX, informe nome, e-mail, CPF/CNPJ e telefone do pagador. | Envie todos os dados de payer. |
| 422 | O PIX automatico aceita valores a partir de R$ 3,00. | Use valor igual ou maior que R$ 3,00. |
Antes de publicar sua integracao
Confirme se sua conta esta aprovada, se a chave da API esta ativa e se o checkout consegue receber os dados completos do pagador.
| Conta | Conta aprovada no painel ExaltaPay. |
| API | Chaves ativas em ambiente de producao. |
| Pagador | Nome, e-mail, CPF/CNPJ e telefone enviados na criacao do PIX. |
| Pedido | Referencia salva no sistema da loja para conciliacao. |
| Pagamento | Exibir Pix copia e cola ou redirecionar para o checkout hospedado. |