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

# Astro

> Pagamentos e Checkouts facilitados com Astro

`pnpm install @norbaas-sh/astro zod`

## Checkout

Crie um handler de Checkout que cuida dos redirecionamentos.

```typescript theme={null}
import { Checkout } from "@norbaas-sh/astro";
import { NORBAAS_ACCESS_TOKEN, NORBAAS_SUCCESS_URL } from "astro:env/server";

export const GET = Checkout({
  accessToken: NORBAAS_ACCESS_TOKEN,
  successUrl: NORBAAS_SUCCESS_URL,
  server: "sandbox", // Use 'sandbox' se estiver testando a Norbaas — omita este parâmetro ou use 'production' no ambiente de produção
});
```

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

Passe os parâmetros de consulta 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 ele possa visualizar pedidos e assinaturas.

```typescript theme={null}
import { CustomerPortal } from "@norbaas-sh/astro";
import { NORBAAS_ACCESS_TOKEN } from "astro:env/server";

export const GET = CustomerPortal({
  accessToken: NORBAAS_ACCESS_TOKEN,
  getCustomerId: (event) => "",  // Função que resolve o ID do Cliente no Norbaas
  server: "sandbox", // Use 'sandbox' se estiver testando o Norbaas — omita ou use 'production' no ambiente de produção
});
```

## Webhooks

Uma utilidade simples que resolve os dados recebidos do webhook, validando corretamente a assinatura usando o segredo do webhook.

```typescript theme={null}
import { Webhooks } from '@norbaas-sh/astro';
import { NORBAAS_WEBHOOK_SECRET } from "astro:env/server"

export const POST = Webhooks({
  webhookSecret: NORBAAS_WEBHOOK_SECRET,
  onPayload: async (payload) => /**  Lidar com os dados*/,
})
```

### Manipuladores de Payload

O manipulador 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) =>
