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

# Nuxt

> Pagamentos e checkouts facilitados ao extremo com Nuxt

## Instalação

Escolha seu gerenciador de pacotes preferido para instalar o módulo:

`pnpm add @norbaas-sh/nuxt`

### Registre o módulo

Adicione o módulo ao seu `nuxt.config.ts:`

```typescript theme={null}
export default defineNuxtConfig({
  modules: ["@norbaas-sh/nuxt"],
});
```

## Checkout

Crie um manipulador de Checkout que cuida dos redirecionamentos

```typescript theme={null}
// server/routes/api/checkout.post.ts
export default defineEventHandler((event) => {
  const {
    private: { norbaasAccessToken, norbaasCheckoutSuccessUrl, norbaasServer },
  } = useRuntimeConfig();

  const checkoutHandler = Checkout({
    accessToken: norbaasAccessToken,
    successUrl: norbaasCheckoutSuccessUrl,
    server: norbaasServer as "sandbox" | "production",
  });

  return checkoutHandler(event);
});
```

### Parâmetros de Consulta

Passe 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 seu cliente pode visualizar pedidos e assinaturas.

```typescript theme={null}
// server/routes/api/portal.get.ts
export default defineEventHandler((event) => {
  const {
    private: { norbaasAccessToken, norbaasCheckoutSuccessUrl, norbaasServer },
  } = useRuntimeConfig();

  const customerPortalHandler = CustomerPortal({
    accessToken: norbaasAccessToken,
    server: norbaasServer as "sandbox" | "production",
    getCustomerId: (event) => {
      //  Use sua própria lógica para obter o ID do cliente - de um banco de dados, sessão, etc.
      return Promise.resolve("9d89909b-216d-475e-8005-053dba7cff07");
    },
  });

  return customerPortalHandler(event);
});
```

## Webhooks

Uma utilidade simples que resolve cargas úteis de webhook recebidas assinando corretamente o segredo do webhook.

```typescript theme={null}
// server/routes/webhook/norbaas.post.ts
export default defineEventHandler((event) => {
  const {
    private: { norbaasWebhookSecret },
  } = useRuntimeConfig();

  const webhooksHandler = Webhooks({
    webhookSecret: norbaasWebhookSecret,
    onPayload: async (payload) => {
  // Manipule a carga útil  
  // Não é necessário retornar uma resposta de confirmação
    },
  });

  return webhooksHandler(event);
});
```

### Manipuladores de Carga Útil

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

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