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": "SilverPay Pagamentos TLDA",
"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";
?>
Precisa de ajuda ou encontrou algum problema? Entre em contato conosco através dos seguintes canais: