> ## Documentation Index
> Fetch the complete documentation index at: https://docs.norbaas.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Fastify

> Pagamentos e Checkouts feitos de forma extremamente simples com Fastify

```bash theme={null}
pnpm install @norbaas-sh/fastify zod
```

## Checkout

Crie um handler de Checkout que cuida dos redirecionamentos.

```typescript theme={null}
import fastify from "fastify";
import { Checkout } from "@norbaas-sh/fastify";

fastify().get(
  "/checkout",
  Checkout({
    accessToken: "xxx",  // Ou defina uma variável de ambiente como NORBAAS_ACCESS_TOKEN
    successUrl: process.env.SUCCESS_URL,
    server: "sandbox", // Use sandbox se estiver testando o Norbaas — omita o parâmetro ou passe 'production' caso contrário
  })
);
```

### Query Params

Passe parâmetros de query para esta rota.

* products `?products=123`
* customerId (opcional) `?products=123&customerId=xxx`
* customerExternalId (opcional) `?products=123&customerExternalId=xxx`
* customerEmail (opcional) `?products=123&customerEmail=janedoe@gmail.com`
* customerName (opcional) `?products=123&customerName=Jane`
* metadata (opcional) `URL-Encoded JSON string`

## Portal do Cliente

Crie um portal do cliente onde seu cliente pode visualizar pedidos e assinaturas.

```typescript theme={null}
import fastify from "fastify";
import { CustomerPortal } from "@norbaas-sh/fastify";

fastify().get(
  "/portal",
  CustomerPortal({
    accessToken: "xxx", // Ou defina uma variável de ambiente como NORBAAS_ACCESS_TOKEN
    getCustomerId: (event) => "", // Função para obter um ID de Cliente do Norbaas
    server: "sandbox", // Use sandbox se estiver testando o Norbaas — omita o parâmetro ou passe 'production' caso contrário
  })
);
```

## Webhooks

Uma utilidade simples que processa os payloads recebidos do webhook assinando corretamente com o segredo do webhook.

```typescript theme={null}
import fastify from 'fastify'
import { Webhooks } from "@norbaas-sh/fastify";

fastify.post('/norbaas/webhooks', Webhooks({
  webhookSecret: process.env.NORBAAS_WEBHOOK_SECRET!,
  onPayload: async (payload) => /** Manipuladores de Payload */,
}))
```

### Manipuladores de Payload

O handler de Webhook também oferece suporte a manipuladores granulares para facilitar a integração.

* onCheckoutCreated: (payload) =>
* onCheckoutUpdated: (payload) =>
* onOrderCreated: (payload) =>
* onSubscriptionCreated: (payload) =>
* onSubscriptionUpdated: (payload) =>
* onSubscriptionActive: (payload) =>
* onSubscriptionCanceled: (payload) =>
* onSubscriptionRevoked: (payload) =>
* onProductCreated: (payload) =>
* onProductUpdated: (payload) =>
* onOrganizationUpdated: (payload) =>
* onBenefitCreated: (payload) =>
* onBenefitUpdated: (payload) =>
* onBenefitGrantCreated: (payload) =>
* onBenefitGrantUpdated: (payload) =>
* onBenefitGrantRevoked: (payload) =>
* onCustomerCreated: (payload) =>
* onCustomerUpdated: (payload) =>
* onCustomerDeleted: (payload) =>
* onCustomerStateChanged: (payload) =>
