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

# Autenticação

> Troca o CNPJ da empresa emissora e a chave do integrador por um JWT.

Toda chamada da API, exceto esta, exige o cabeçalho `Authorization: Bearer {token}`.

O valor que volta em `data` é o JWT. A `CHAVE_INTEGRADOR` não entra nesse cabeçalho. Ela só serve para montar o segredo desta chamada.

## O que você precisa

* A **CHAVE\_INTEGRADOR**, entregue pelo MyCredit para a revenda. Sem essa chave a autenticação não acontece.
* O **CNPJ da empresa que autentica e emite o PIX**, somente números. Esse CNPJ é quem recebe o JWT e, nas chamadas seguintes, é quem cria o PIX.

<Warning>
  O CNPJ precisa existir no MyCredit. Empresa sem revenda autentica com uma chave válida e não passa pela verificação de vínculo. Empresa ligada a uma revenda só autentica se a chave for dela ou da revenda à qual está associada. A revenda autentica o próprio CNPJ com a própria chave, mesmo sem um vínculo da revenda com ela mesma.
</Warning>

## Passo a passo

<Steps>
  <Step title="Monte o segredo">
    Junte o CNPJ e a chave com uma barra vertical (`|`):

    ```text theme={null}
    CNPJ_DA_EMPRESA_EMISSORA|CHAVE_INTEGRADOR
    ```

    Exemplo, com dados fictícios:

    ```text theme={null}
    99999999999999|CHAVE123456789
    ```
  </Step>

  <Step title="Codifique em Base64">
    Converta a string inteira para Base64. A codificação evita que a barra vertical se perca na URL. Ela não substitui o HTTPS.

    O exemplo acima vira:

    ```text theme={null}
    OTk5OTk5OTk5OTk5OTl8Q0hBVkUxMjM0NTY3ODk=
    ```
  </Step>

  <Step title="Troque o segredo pelo JWT">
    Faça um GET. Não envie corpo nem cabeçalho Authorization nesta chamada.

    ```bash theme={null}
    curl -X GET "https://sandboxapi.mycredit.com.br/api/token/OTk5OTk5OTk5OTk5OTl8Q0hBVkUxMjM0NTY3ODk="
    ```

    Resposta de sucesso:

    ```json theme={null}
    {
      "sucesso": true,
      "data": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
    }
    ```

    O campo `data` é o JWT. Ele vale **2 dias**. Quando expirar, repita este passo.

    Se o segredo estiver errado ou a empresa não existir, a API responde HTTP 400:

    ```json theme={null}
    {
      "sucesso": false,
      "errors": "Não foi possível autenticar"
    }
    ```

    Quando a empresa existe, mas não está ligada a esta revenda, a mensagem é `Empresa não associada a esta revenda`.
  </Step>

  <Step title="Use o JWT nas outras chamadas">
    ```bash theme={null}
    curl -X POST "https://sandboxapi.mycredit.com.br/api/pix" \
      -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
      -H "Content-Type: application/json" \
      -d "{\"formaPagamento\":{\"tpTransacao\":11,\"idFaturaPag\":\"9b041599-eacc-4a0f-9a16-e0191c9a66aa\",\"modPagamento\":18,\"valorPagamento\":1.29}}"
    ```
  </Step>
</Steps>

## Erros comuns

<AccordionGroup>
  <Accordion title="A API responde 401 nas cobranças">
    O cabeçalho está sem `Bearer`, o JWT expirou ou você enviou o segredo Base64 no lugar do JWT. Gere o token de novo e envie `Authorization: Bearer {data}`.
  </Accordion>

  <Accordion title="A API responde que não foi possível autenticar">
    A chave não existe, está inativa, ou o CNPJ não está cadastrado. Confira se a carteira PIX dessa empresa já foi ativada e se o CNPJ é o da empresa emissora.
  </Accordion>

  <Accordion title="Empresa não associada a esta revenda">
    O CNPJ pertence a uma empresa ligada a uma revenda, mas não à revenda dona desta chave. Empresa sem revenda não cai neste erro. A revenda autentica o próprio CNPJ sem vínculo consigo mesma.
  </Accordion>

  <Accordion title="O PIX é gerado na empresa errada">
    O CNPJ à esquerda da barra vertical define quem autentica e emite a cobrança. Em uma revenda, trocar esse CNPJ muda a empresa emissora, desde que ela esteja associada a essa revenda.
  </Accordion>
</AccordionGroup>

## Ambientes

| Ambiente | Base da API |
| - | - |
| Sandbox | `https://sandboxapi.mycredit.com.br` |
| Produção | `https://mycreditapi.azurewebsites.net` |

A chave de um ambiente não vale no outro. Monte o segredo com a `CHAVE_INTEGRADOR` daquele ambiente.


## OpenAPI

````yaml GET /api/token/{chave}
openapi: 3.1.0
info:
  title: Mycredit API
  description: API para integração com serviços PIX e gestão de contas Mycredit
  version: 1.0.0
  contact:
    name: Suporte Mycredit
    url: https://mycredit.com.br/contato
servers:
  - url: https://sandboxapi.mycredit.com.br
    description: Ambiente de sandbox
  - url: https://mycreditapi.azurewebsites.net
    description: Ambiente de produção
security:
  - bearerAuth: []
paths:
  /api/token/{chave}:
    get:
      summary: Autenticação
      description: >-
        Troca o segredo (CNPJ da empresa que emite o PIX, uma barra vertical e a
        CHAVE_INTEGRADOR, tudo em Base64) por um Bearer token. Empresa sem
        revenda autentica com uma chave válida. Empresa de uma revenda precisa
        estar associada à revenda dona da chave. A revenda autentica o próprio
        CNPJ com a própria chave, sem vínculo consigo mesma. O JWT vale 2 dias.
      operationId: obterToken
      parameters:
        - name: chave
          in: path
          required: true
          description: >-
            Segredo em Base64. O texto original, antes de codificar, é
            CNPJ_DA_EMPRESA_EMISSORA|CHAVE_INTEGRADOR. O CNPJ, só números, é a
            empresa que autentica e emite o PIX.
          schema:
            type: string
      responses:
        '200':
          description: Token gerado. O campo data é o JWT, em texto.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '400':
          description: >-
            Chave inexistente, empresa inexistente, empresa sem vínculo com a
            revenda da chave ou empresa sem usuário.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security: []
components:
  schemas:
    TokenResponse:
      type: object
      properties:
        sucesso:
          type: boolean
          example: true
        data:
          type: string
          description: >-
            JWT para enviar como Authorization: Bearer {data}. Não envie o
            segredo Base64 neste cabeçalho.
          example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
    ErrorResponse:
      type: object
      properties:
        sucesso:
          type: boolean
          description: >-
            Indica se a operação foi executada ou concluída com sucesso. Sempre
            false para respostas de erro
          example: false
        errors:
          type: string
          description: Descrição detalhada do erro ocorrido
          example: Mensagem de erro
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.