REALTIME
WebSocket
Conexão persistente para receber eventos em tempo real com baixa latência.
Conectando
Conecte-se ao WebSocket usando sua API Key como parâmetro de autenticação.
websocket-client.jsjavascript
const API_KEY = 'SUA_API_KEY'
const ws = new WebSocket(`wss://api.vyepay.com/ws?apiKey=${API_KEY}`)
ws.onopen = () => {
console.log('✓ Conectado ao WebSocket')
}
ws.onmessage = (event) => {
const { event: eventName, data, timestamp } = JSON.parse(event.data)
console.log(`Evento: ${eventName}`, data)
}
ws.onclose = () => {
console.log('Desconectado, reconectando em 5s...')
setTimeout(() => conectar(), 5000)
}
ws.onerror = (error) => {
console.error('Erro no WebSocket:', error)
}Eventos Disponíveis
| Evento | Descrição |
|---|---|
connected | Conexão estabelecida com sucesso |
transaction.created | PIX gerado, aguardando pagamento |
transaction.completed | Pagamento confirmado |
transaction.failed | Pagamento falhou ou expirou |
balance.updated | Saldo atualizado |
Exemplo Completo
exemplo-completo.jsjavascript
const API_KEY = 'vye_abc123...'
function conectar() {
const ws = new WebSocket(`wss://api.vyepay.com/ws?apiKey=${API_KEY}`)
ws.onopen = () => console.log('✓ Conectado')
ws.onmessage = (event) => {
const { event: eventName, data } = JSON.parse(event.data)
switch (eventName) {
case 'connected':
console.log('Autenticado como:', data.apiKey)
break
case 'transaction.created':
console.log('PIX criado:', data.externalId)
console.log('Código:', data.copyPaste)
break
case 'transaction.completed':
console.log('💰 Pagamento recebido!')
console.log('Valor:', data.amount)
console.log('Pagador:', data.payerName)
// Liberar produto/serviço aqui
break
case 'transaction.failed':
console.log('❌ Pagamento falhou:', data.reason)
break
case 'balance.updated':
console.log('Novo saldo:', data.newBalance)
break
}
}
ws.onclose = () => {
console.log('Reconectando em 5s...')
setTimeout(conectar, 5000)
}
}
conectar()Payload dos Eventos
transaction.created
transaction.createdjson
{
"event": "transaction.created",
"data": {
"id": "507f1f77bcf86cd799439011",
"externalId": "txn_abc123",
"type": "DEPOSIT",
"status": "PENDING",
"amount": 100.00,
"fee": 2.00,
"netAmount": 98.00,
"qrCodeBase64": "data:image/png;base64,...",
"copyPaste": "00020101021226...",
"createdAt": "2024-01-01T12:00:00.000Z"
},
"timestamp": "2024-01-01T12:00:00.000Z"
}transaction.completed
transaction.completedjson
{
"event": "transaction.completed",
"data": {
"id": "507f1f77bcf86cd799439011",
"externalId": "txn_abc123",
"type": "DEPOSIT",
"status": "COMPLETED",
"amount": 100.00,
"fee": 2.00,
"netAmount": 98.00,
"payerName": "João Silva",
"payerDocument": "***456***",
"completedAt": "2024-01-01T12:05:00.000Z"
},
"timestamp": "2024-01-01T12:05:00.000Z"
}💡 Dica
O WebSocket é ideal para aplicações que precisam de notificações instantâneas. Para integrações mais simples ou quando não puder manter conexão persistente, use Webhooks.
