Vye

Vye

Pay

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

EventoDescrição
connectedConexão estabelecida com sucesso
transaction.createdPIX gerado, aguardando pagamento
transaction.completedPagamento confirmado
transaction.failedPagamento falhou ou expirou
balance.updatedSaldo 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.