Ir para o conteúdo
ReboundDLQDesenvolvedores
Rebound DLQDocumentação

Implementação API REST

Integre sem o SDK: use um cliente HTTP na sua linguagem e capture falhas diretamente pela API REST.

Antes de executar

Configure REBOUND_PROJECT_SECRET e, opcionalmente, REBOUND_BASE_URL. Node.js: 20+ sem dependências. PHP: 8.4+ com extensões OpenSSL e cURL. Python: 3.11+ com cryptography. cURL: requer Node.js 20+ para preparar a criptografia e a assinatura antes do envio.

Shell
# Extraia o pacote da linguagem / Extract the language bundle
node example.mjs
php example.php
python3 -m pip install cryptography
python3 example.py
sh capture.sh

Cenário: falha ao processar um pedido

O serviço recebe um pedido e chama o provedor de pagamentos. Se o provedor falhar, captura apenas o identificador do pedido com o contexto do erro e relança a exceção original. Uma falha ao entregar ao Rebound não substitui o erro de pagamento. O provedor dos exemplos é simulado para que você possa conferir a captura no painel.

Baixe o pacote completo e mantenha os arquivos na mesma pasta. Comece pelo exemplo básico abaixo. Os arquivos separados mostram uma forma possível de organizar a integração; adapte as classes, funções e pontos de captura à arquitetura e ao framework que você utiliza. Reutilize o cliente HTTP e substitua o provedor simulado pelo seu código real. O exemplo cURL é um teste do contrato HTTP, separado do fluxo de negócio.

Escolha sua linguagem

Uso básico na sua aplicação

Os dados e a função de pagamento são do seu código. Use este exemplo onde fizer sentido no seu serviço, controller, worker ou job. O cliente HTTP abaixo cuida da criptografia e assinatura; o exemplo aguarda a confirmação da API, sem fila em background.

Node.js
import { ReboundHttpClient } from './ReboundHttpClient.mjs'

const rebound = new ReboundHttpClient(process.env.REBOUND_PROJECT_SECRET)

try {
  const resultado = await processarPagamento(dados)
  console.log('Payment processed:', resultado)
} catch (error) {
  try {
    const body = rebound.prepare(dados, error, {
      flowKey: 'pagarme-payments',
      flowLabel: 'Integração Pagarme',
      flowStep: 'create_charge'
    })
    const dlqId = await rebound.send(body)
    console.log('Capture acknowledged:', dlqId)
  } catch {
    console.error('Could not deliver the capture to Rebound')
  }
  // Handle the original application error here.
  console.error('Payment failed:', error.message)
}

Cliente HTTP e exemplo completo

Exemplo completo · arquivos separadosBaixar pacote completo

Serviço de pedidos: captura a falha e preserva o erro original.

OrderService.mjs
export class OrderService {
  constructor(payments, rebound, logger = console) {
    this.payments = payments
    this.rebound = rebound
    this.logger = logger
  }

  async process(order) {
    try {
      return await this.payments.charge(order)
    } catch (error) {
      try {
        // Send only the data needed to investigate/replay. Never card details.
        const body = this.rebound.prepare({ orderId: order.id }, error, {
          flowKey: 'orders.capture',
          flowLabel: 'Order processing',
          flowStep: 'charge'
        })
        const dlqId = await this.rebound.send(body)
        this.logger.info('Capture acknowledged:', dlqId)
      } catch {
        this.logger.warn('Rebound delivery failed; original operation still failed.')
      }
      // Reporting must never replace the business exception.
      throw error
    }
  }
}
Baixar este arquivo ↓

Fingerprint dos exemplos

Os exemplos usam o mesmo fingerprint estável para o erro PaymentTimeout no fluxo e etapa demonstrados. É uma estratégia ilustrativa, não uma reprodução do algoritmo legado do SDK. Defina e mantenha sua estratégia; misturar algoritmos pode criar grupos diferentes.

Rebound DLQ · Documentação para desenvolvedores
Termos de uso