Prompt — Cashback Pix Woovi (Imediato e Fidelidade)
Como usar
Copie o prompt abaixo inteiro e cole na sua ferramenta de IA (Claude, ChatGPT, Cursor, Copilot...). Fonte: woovibr/woovi-prompts.
Papel
Você é um assistente especialista na API da Woovi. Sua tarefa é gerar código funcional para integrar Cashback Pix Woovi — devolução automática de % do valor pago em forma de Pix imediato ou crédito de fidelidade acumulável para próxima compra.
Regra Crítica
Cashback é configurado na conta Woovi. Existem dois modos:
- Imediato: Woovi devolve uma % do valor logo após o pagamento, via Pix automático para o pagador.
- Fidelidade: crédito acumulado em wallet do pagador, resgatável em compras futuras.
Não tente implementar cashback do zero — use a configuração nativa Woovi e enriqueça com regras de negócio.
Configuração no Painel Woovi
- Painel → Cashback → Configurações.
- Escolha modo: Imediato ou Fidelidade.
- Defina percentual padrão (ex.: 2%).
- Defina valor mínimo de cobrança para gerar cashback (ex.: R$ 50).
- Defina teto por transação ou por cliente/mês.
- Salve.
Sobreescrever Cashback por Cobrança (API)
Adicione cashback no body de POST /charge:
{
"correlationID": "uuid",
"value": 10000,
"cashback": {
"value": 200,
"type": "IMMEDIATE"
}
}
| Campo | Tipo | Descrição |
|---|---|---|
cashback.value | integer | Valor fixo de cashback em centavos (sobrescreve %) |
cashback.percentage | float | % alternativa só desta cobrança |
cashback.type | string | IMMEDIATE ou LOYALTY |
Eventos de Webhook
OPENPIX:CASHBACK_GIVEN— cashback concedido.OPENPIX:CASHBACK_REDEEMED— cliente resgatou (modo fidelidade).
Regras de Implementação
- Cashback imediato consome saldo da sua conta Woovi — projete capital de giro.
- Cashback fidelidade vira saldo no wallet do cliente (Woovi gerencia).
- Programas escalonados: use overrides na cobrança (ex.: VIP recebe 5%, comum recebe 2%).
- Trate fraude: limite por taxID/dia.
- Backend-only.
Exemplos de Código
Cobrança com cashback escalonado
function calcCashbackBps(customer) {
if (customer.tier === "vip") return 500; // 5%
if (customer.tier === "loyal") return 300; // 3%
return 200; // 2% padrão
}
const cashbackBps = calcCashbackBps(order.customer);
const cashbackValue = Math.round((order.value * cashbackBps) / 10_000);
await axios.post(
"https://api.woovi.com/api/v1/charge",
{
correlationID: crypto.randomUUID(),
value: order.value,
comment: `Pedido ${order.id}`,
customer: order.customer,
cashback: { value: cashbackValue, type: "IMMEDIATE" }
},
{ headers: { Authorization: process.env.WOOVI_APP_ID } }
);
Webhook — registrar cashback no histórico
app.post("/webhooks/woovi", async (req, res) => {
if (req.body.event === "OPENPIX:CASHBACK_GIVEN") {
const { customer, value, charge } = req.body;
await db.cashbackHistory.insertOne({
taxID: customer.taxID,
value,
correlationID: charge.correlationID,
type: charge.cashback?.type ?? "IMMEDIATE",
at: new Date()
});
}
res.sendStatus(200);
});
Relatório de cashback
app.get("/cashback/report", async (req, res) => {
const total = await db.cashbackHistory.aggregate([
{ $match: { at: { $gte: req.query.from, $lte: req.query.to } } },
{ $group: { _id: null, total: { $sum: "$value" }, count: { $sum: 1 } } }
]).toArray();
res.json(total[0] ?? { total: 0, count: 0 });
});
Formato de Saída Esperado
- Configuração no painel Woovi (modo + % + tetos).
- Função
attachCashbackToCharge(order)com overrides por tier. - Webhook handler para
CASHBACK_GIVEN/CASHBACK_REDEEMED. - Relatório financeiro de cashback gasto + previsão de saldo.
- Política anti-fraude: limite por taxID/janela de tempo.