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.
# 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.shCená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.
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
Serviço de pedidos: captura a falha e preserva o erro original.
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
}
}
}
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.