SDK TypeScript
@feitpay/sdk é um cliente sem dependências construído sobre fetch, com tipos gerados a partir do contrato
OpenAPI. Ele roda em Node.js 20+, Deno, Bun e runtimes de edge.
pnpm add @feitpay/sdkimport { FeitPay, FeitPayError } from '@feitpay/sdk';
const gp = new FeitPay({ apiKey: process.env.FEITPAY_API_KEY!, // gp_live_… baseUrl: 'https://api.feitpay.com', timeoutMs: 30_000, // por tentativa maxRetries: 2, // apenas GET e POST idempotente});Recursos
Seção intitulada “Recursos”| Namespace | Métodos |
|---|---|
paymentIntents |
create, retrieve, list, cancel, resolve, timeline |
checkoutSessions |
create, retrieve |
invoices |
create, retrieve, list, void |
paymentLinks |
create, retrieve, list, update |
transactions |
list, retrieve |
wallets |
create, retrieve, list, disable, createOwnershipChallenge, submitOwnershipProof |
stores, organizations, customers |
list / retrieve |
webhookEndpoints |
create, list, retrieve, update, rotateSecret, sendTest |
webhookDeliveries |
list, retrieve, retry |
events |
list, retrieve |
reports |
payments (string CSV ou JSON), reconciliation |
billing |
invoices, usage |
auditEvents |
list |
platform |
capabilities, networks, assets, health |
Comportamento
Seção intitulada “Comportamento”- Idempotência — os métodos de criação enviam uma
Idempotency-Keyautomaticamente (gp_sdk_…) e a reutilizam nas novas tentativas. Passe{ idempotencyKey }para vinculá-la ao id do seu próprio pedido. - Novas tentativas — backoff exponencial com jitter total (respeitando
Retry-After) em erros de rede,429e5xx, apenas paraGETePOSTcom chave. - Paginação —
await gp.invoices.list()retorna uma página;for await (const inv of gp.invoices.list())percorre todas as páginas;.toArray(max)coleta um número limitado. - Erros — toda falha é uma subclasse de
FeitPayErrorcomtype,code,param,requestIdestatus. - Dinheiro — valores são strings.
formatBaseUnits('99834', 8) === '0.00099834'usaBigInt, nunca floats. - Segurança de caminhos — os ids são codificados como um único segmento de caminho.
try { const intent = await gp.paymentIntents.retrieve('pi_…'); if (intent.fulfillable) ship(intent.merchant_order_id);} catch (err) { if (err instanceof FeitPayError && err.type === 'not_found_error') return null; throw err;}