AbacatePay / AbacatePay/ecosystem
`billing.refunded` Não existe como saber quando uma cobrança vira REFUNDED
- 主要言語
- TypeScript
- スター
- 8
- フォーク
- 5
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Pós abrir o PR #21 retomei mexer em meu site, e percebi um buraco esquisito.
`PaymentStatus` no [checkout.ts](https://github.com/AbacatePay/ecosystem/blob/main/packages/types/types/v2/entities/checkout.ts) lista `REFUNDED` como estado válido de cobrança (e o JSDoc da `APICheckout` confirma: *"Billing status. Can be `PENDING`, `EXPIRED`, `CANCELLED`, `PAID`, `REFUNDED`"*).
Mas o `WebhookEventType` em [webhook.ts](https://github.com/AbacatePay/ecosystem/blob/main/packages/types/types/v2/webhook.ts) só tem três:
```ts
PayoutFailed = 'payout.failed',
PayoutDone = 'payout.done',
BillingPaid = 'billing.paid',
```
Sem `billing.refunded`, sem `billing.cancelled`, sem `billing.expired`. Quem só consome webhook nunca fica sabendo que uma cobrança virou `REFUNDED`.
Pra quem vende digital com entrega imediata isso vira divida técnica. Cliente paga no cartão, pego o `billing.paid`, libero o produto na hora. Se o cara abrir disputa nos 90 dias da janela do cartão e a AbacatePay aprovar o estorno, o dinheiro sai do meu saldo e eu não recebo aviso nenhum (Se eu estiver errado me corrija, sem contar para o hook manual). A defesa que sobra é `checkouts.get(id)` em polling pelos 90 dias de cada cobrança, o que não escala.
A propósito, a #13 já terminava perguntando *"não é possível fazer reembolso via API? Só via dashboard?"*. Fechou sem o lado de notificação ser resolvido.
Sugestão é adicionar pelo menos `BillingRefunded`, e idealmente `BillingCancelled` / `BillingExpired` também, com payload trazendo `billing.id`, `status` novo, motivo (`chargeback` / `requested` / etc), `refundedAmount` em cents e `refundedAt`. Toca em:
- `packages/types/types/v2/webhook.ts`
- `packages/zod/src/v2/webhook.ts`
- `packages/adapters/src/webhooks/dispatch.ts` (novo handler `onBillingRefunded`)
- adapters de framework (express / elysia / fastify / hono / supabase)
Se o lado server já estiver disparando esses eventos internamente e for só formalizar nos schemas + adapters, eu posso contribuir e mandar o PR.
コントリビューションガイド
評価
この issue はまだ評価されていません。