Skip to main content

Instalação

npm install @pagozz/sdk

Configuração

import { Pagozz } from '@pagozz/sdk';

const pagozz = new Pagozz('pgz_live_XXXXXXXXXXXXXXXXXXXXXXXX', {
  baseUrl: 'https://api.pagozz.com/v1', // opcional (default)
  timeout: 30000,                        // opcional, ms (default: 30s)
  retry: {                               // opcional
    maxRetries: 2,                        // default: 2
    initialDelayMs: 500,                  // default: 500
    maxDelayMs: 5000,                     // default: 5000
  },
});
O ambiente (test/live) é determinado automaticamente pelo prefixo da key.
// Criar
const link = await pagozz.links.create({
  name: 'Consultoria 1h',
  amount: 15000,
  value_mode: 'fixed',
  payment_methods: ['pix'],
});

// Listar
const { links, total } = await pagozz.links.list({
  page: 1,
  page_size: 20,
});

// Buscar
const link = await pagozz.links.get('link-id');

// Atualizar
const updated = await pagozz.links.update('link-id', {
  name: 'Novo nome',
});

// Deletar
await pagozz.links.delete('link-id');

Payments

// PIX
const pix = await pagozz.payments.createPix({
  link_id: 'link-id',
  payer: {
    name: 'João',
    email: 'joao@email.com',
    cpf: '12345678900',
  },
});
// pix.transaction_id, pix.br_code, pix.qr_code_image, pix.expires_at

// Cartão
const card = await pagozz.payments.createCard({
  link_id: 'link-id',
  payer: {
    name: 'João',
    email: 'joao@email.com',
    cpf: '12345678900',
  },
  card: {
    number: '4111111111111111',
    exp_month: 12,
    exp_year: 2027,
    cvv: '123',
  },
});

// Consultar status
const status = await pagozz.payments.get('transaction-id');

// Simular (apenas test mode)
await pagozz.payments.simulate('transaction-id');

Idempotência

const pix = await pagozz.payments.createPix(params, {
  idempotencyKey: 'pedido-1234',
});

Transactions

const { transactions, total } = await pagozz.transactions.list({
  page: 1,
  page_size: 20,
  status: 'completed',
});

const tx = await pagozz.transactions.get('transaction-id');

Webhooks

// Criar endpoint
const endpoint = await pagozz.webhooks.create({
  url: 'https://meusite.com/webhooks',
  events: ['payment.succeeded', 'payment.failed'],
});
// endpoint.secret → guarde com segurança!

// Listar, buscar, atualizar, deletar
const { endpoints } = await pagozz.webhooks.list();
const ep = await pagozz.webhooks.get('endpoint-id');
await pagozz.webhooks.update('endpoint-id', { events: ['payment.succeeded'] });
await pagozz.webhooks.delete('endpoint-id');

// Testar
await pagozz.webhooks.test('endpoint-id');

// Listar deliveries
const { deliveries } = await pagozz.webhooks.listDeliveries('endpoint-id');

Verificação de Webhook

import { verifyWebhookSignature, constructWebhookEvent } from '@pagozz/sdk';

// Verificação simples (boolean)
const isValid = verifyWebhookSignature(
  secret,     // secret do endpoint
  signature,  // header X-Pagozz-Signature
  timestamp,  // header X-Pagozz-Timestamp (number)
  rawBody,    // body da request (string)
);

// Verificação + parse (retorna WebhookEvent ou throw)
const event = constructWebhookEvent(secret, signature, timestamp, rawBody);
// event.type, event.data, event.environment

Retry automático

O SDK retenta automaticamente em erros 429 e 5xx:
ConfiguraçãoDefault
maxRetries2
initialDelayMs500ms
maxDelayMs5000ms
Backoff exponencial com jitter. Para desabilitar:
const pagozz = new Pagozz('pgz_live_XXX', {
  retry: { maxRetries: 0 },
});

Erros tipados

import {
  PagozzError,
  AuthenticationError,
  ValidationError,
  RateLimitError,
} from '@pagozz/sdk';

try {
  await pagozz.links.create({ name: '' });
} catch (error) {
  if (error instanceof AuthenticationError) {
    // 401 — Key inválida ou revogada
  } else if (error instanceof ValidationError) {
    // 422 — Dados inválidos
    console.log(error.field);
  } else if (error instanceof RateLimitError) {
    // 429 — SDK retenta automaticamente
  } else if (error instanceof PagozzError) {
    console.log(error.code, error.message, error.status);
  }
}

Tipos exportados

import type {
  // Links
  Link, LinkList, CreateLinkParams, UpdateLinkParams, ListLinksParams,
  // Payments
  CreatePixPaymentParams, CreateCardPaymentParams,
  PixPaymentCreated, CardPaymentCreated, PaymentStatus,
  // Transactions
  Transaction, TransactionList, ListTransactionsParams,
  // Webhooks
  WebhookEndpoint, WebhookEndpointList, WebhookDelivery,
  WebhookDeliveryList, WebhookEvent,
  CreateWebhookParams, UpdateWebhookParams,
  // Common
  Environment, PaginationParams,
} from '@pagozz/sdk';