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

> ## Agent Instructions
> Responda em português brasileiro, na segunda pessoa ("você"), com base na documentação Malga.
> Não invente endpoints, parâmetros, status codes ou comportamentos de API. Se não estiver na docs, diga que não encontrou e indique a página mais próxima.
> Use os headers X-Client-Id e X-Api-Key nos exemplos de autenticação.
> Motor de Assinaturas refere-se a /v1/subscriptions* (cycles, trial, retentativas, webhooks subscription.*). Não chame de "motor de recorrência".
> Recorrência (provedor) é paymentMethod.recurrence em POST /v1/charges (initial / subsequent / unscheduled), distinto do Motor de Assinaturas.
> Sandbox é ambiente de testes e não afeta produção.

# Utilizando os eventos

A aplicação possui dois métodos principais: on e tokenize.

### on(eventType, function)

O método on permite escutar eventos e executar um callback quando um determinado evento ocorre.

#### Eventos disponíveis

##### `cardTypeChange`

Disparado quando o valor do campo card-number é alterado.

<b>Objeto de retorno:</b>

```typescript theme={null}
{
  field: 'card-number'
  parentNode: Element
  card?: {
    niceType: string
    type: string
    patterns: (number | number[])[]
    gaps: number[]
    lengths: number[]
    code: {
      name: string
      size: number
    }
  }
}
```

<b>Exemplo de uso</b>

```typescript theme={null}
malgaTokenization.on('cardTypeChange', () => console.log('cardTypeChange'))
```

##### `validity`

Disparado quando há uma alteração nos campos e a validação padrão (defaultValidation) está ativada.

<b>Objeto de retorno:</b>

```typescript theme={null}
{
  field: 'card-number'| 'card-cvv'| 'card-holder-name'| 'card-expiration-date'
  valid: boolean
  error: {
    field: 'card-number'| 'card-cvv'| 'card-holder-name'| 'card-expiration-date'
    message: string
    code: string
  }
  empty: boolean
  potentialValid: boolean
  parentNode: Element | null
}
```

<b>Exemplo de uso</b>

```typescript theme={null}
malgaTokenization.on('validity', () => console.log('validity'))
```

##### `focus` e `blur`

Eventos disparados quando um campo recebe ou perde foco.

<b>Objeto de retorno:</b>

```typescript theme={null}
{
  field: 'card-number'| 'card-cvv'| 'card-holder-name'| 'card-expiration-date'
  parentNode: Element
}
```

<b>Exemplo de uso</b>

```typescript theme={null}
malgaTokenization.on('blur', () => console.log('blur'))
malgaTokenization.on('focus', () => console.log('focus'))
```

### tokenize()

Método responsável por enviar os dados do cartão para tokenização.

<b>Objeto de retorno:</b>

```typescript theme={null}
{
  tokenId: string
  error: {
    type: string 
    code: number
    message: string
    details?: string | string[]
    declinedCode?: string 
    }
}
```

<b>Exemplo de uso</b>

```typescript theme={null}
const { tokenId, error } = await malgaTokenization.tokenize()

if (error) {
  console.error('Error', error.message)
}

return console.log('TokenId:', tokenId)

```

Método responsável por criptografar os dados do cartão, enviá-los para tokenização e retornar o tokenID em caso de sucesso.

<CardGroup>
  <Card href="https://github.com/plughacker/malga-tokenization/tree/main/examples/v2/tokenization-v2" icon="https://mintlify.s3.us-west-1.amazonaws.com/malga/img/api-sdks/new-tab.svg" title="Exemplos de tokenização">
    Veja o código completo
  </Card>
</CardGroup>


## Related topics

- [Cartão de crédito](/documentations/payment-methods/credit-card.md)
- [Webhooks v1.1](/documentations/webhooks/webhook1-1.md)
- [Pagamentos com Pix na Malga](/documentations/payment-methods/pix.md)
- [Sobre as APIs da Malga](/api-reference/about-apis.md)
