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çãoPOST https://silverpay.io/v3/pix/qrcode
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 |
$apiUrl = 'https://silverpay.io/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/silverpay_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); // Processar resposta $data = json_decode($response, true); if($httpCode === 200 && isset($data['qrcode'])) { echo "✅ QRCode gerado com sucesso!"; echo "ID da Transação: " . $data['transactionId']; echo "QRCode: " . $data['qrcode']; echo "Status: " . $data['status']; } else { echo "❌ Erro: " . ($data['message'] ?? 'Erro desconhecido'); }
{
"transactionId": "4392d1d7e408d3cec04fm1zf3gv7vkq1",
"status": "PENDING",
"amount": 150.99,
"qrcode": "00020126850014br.gov.bcb.pix2563pix.silverpay.io/qr/v3/at/6ed39bf2...",
"external_id": "68a945c086377"
}
{
"statusCode": 400,
"message": "CPF inválido ou parâmetros obrigatórios ausentes",
"errors": [
"O campo 'valor' é obrigatório",
"CPF deve conter apenas números"
]
}
{
"statusCode": 401,
"message": "client_id ou client_secret inválidos"
}
POST https://silverpay.io/v3/pix/payment
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 |
$apiUrl = 'https://silverpay.io/v3/pix/payment'; $postData = [ 'client_id' => 'maria_98765', 'client_secret' => 'def456ghi789jkl012mno345pqr678stu901vwx234yz567abc890def123', 'nome' => 'Maria Silva Santos', 'cpf' => '98765432100', 'valor' => 250.75, 'chave_pix' => '11970142332', // Pode ser CPF, telefone, email ou chave aleatória 'urlnoty' => 'https://seusite.com/silverpay_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); // Processar resposta $data = json_decode($response, true); if($httpCode === 200 && isset($data[0]['statusCode']) && $data[0]['statusCode'] == 200) { echo "✅ Transferência PIX iniciada com sucesso!"; echo "Mensagem: " . $data[0]['message']; } else { echo "❌ Erro na transferência: " . ($data['message'] ?? 'Erro desconhecido'); }
[{
"statusCode": 200,
"message": "Transferência PIX processada com sucesso",
"transactionId": "798176179"
}]
{
"statusCode": 400,
"message": "Saldo insuficiente para realizar a transferência"
}
{
"statusCode": 400,
"message": "Chave PIX inválida ou não encontrada"
}
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.
Enviado quando um pagamento PIX é confirmado e processado com sucesso:
{
"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": "PIXUP SOLUCOES DE PAGAMENTOS LTDA",
"taxId": "59.667.922/0001-08"
}
}
Enviado quando uma transferência PIX é processada:
{
"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"
}
}
<?php // Arquivo: silverpay_webhook.php // Receber dados do webhook $input = file_get_contents('php://input'); $data = json_decode($input, true); // Verificar se os dados foram recebidos corretamente if (!$data) { http_response_code(400); die('Dados inválidos'); } // Log para debug (opcional) file_put_contents('webhook_log.txt', date('Y-m-d H:i:s') . " - " . $input . PHP_EOL, FILE_APPEND ); // Processar baseado no tipo de transação switch ($data['transactionType']) { case 'RECEIVEPIX': if ($data['status'] === 'PAID') { // Pagamento confirmado - liberar produto/serviço $transactionId = $data['transactionId']; $amount = $data['amount']; $external_id = $data['external_id']; // Sua lógica aqui: atualizar banco, liberar acesso, etc. liberarProduto($external_id, $amount); echo "Pagamento processado: R$ " . number_format($amount, 2, ',', '.'); } break; case 'PAYMENT': if ($data['statusCode']['statusId'] == 1) { // Transferência concluída com sucesso $transactionId = $data['transactionId']; $amount = $data['amount']; // Sua lógica aqui: atualizar saldo, notificar usuário, etc. confirmarTransferencia($transactionId, $amount); echo "Transferência concluída: R$ " . number_format($amount, 2, ',', '.'); } break; } function liberarProduto($external_id, $amount) { // Exemplo: conectar ao banco e atualizar status do pedido // $pdo = new PDO("mysql:host=localhost;dbname=loja", $user, $pass); // $stmt = $pdo->prepare("UPDATE pedidos SET status = 'pago' WHERE external_id = ?"); // $stmt->execute([$external_id]); } function confirmarTransferencia($transactionId, $amount) { // Exemplo: atualizar histórico de transferências // $pdo = new PDO("mysql:host=localhost;dbname=app", $user, $pass); // $stmt = $pdo->prepare("UPDATE transferencias SET status = 'concluida' WHERE transaction_id = ?"); // $stmt->execute([$transactionId]); } // Sempre retornar 200 para confirmar recebimento http_response_code(200); echo "OK"; ?>