> ## 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.

# Elysia

> Pagamentos e checkouts simplificados com Elysia

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

### Checkout

Crie um handler de Checkout que cuida dos redirecionamentos.

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

const app = new Elysia();

app.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
  })
);
```

#### Parâmetros de Consulta (Query Params)

Passe parâmetros de consulta para esta rota.

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

### Portal do Cliente

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

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

const app = new Elysia();

app.get(
  "/portal",
  CustomerPortal({
    accessToken: "xxx", // Ou defina uma variável de ambiente com NORBAAS_ACCESS_TOKEN
    getCustomerId: (event) => "", // Função para resolver um ID de Cliente 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 resolve os payloads recebidos de webhooks assinando corretamente com o segredo do webhook.

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

const app = new Elysia()

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

### Manipuladores de Payload

O manipulador de Webhook também oferece suporte a manipuladores granulares para uma integração fácil.

* 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) =>
