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

# Guia Rápido

> Processe seu primeiro pagamento em menos de 10 minutos

## Visão Geral

Este guia te levará através dos passos essenciais para processar seu primeiro pagamento com a API Autorizou. Em menos de 10 minutos, você terá uma integração funcional.

<Note>
  **Pré-requisito:** você precisa de uma conta Autorizou (criada via onboarding) e das chaves de API que o atendimento envia. Ainda não tem acesso? [Fale com a Autorizou](https://autorizou.com.br/cadastro).
</Note>

## Passo 1: Configurar Autenticação

Primeiro, configure sua chave de API do ambiente de testes. As chaves começam com o prefixo `aut_`:

<CodeGroup>
  ```bash Environment Variables theme={null}
  export AUTORIZOU_API_KEY="4eC39HqLyjWDarjtT1zdp7dc"
  export AUTORIZOU_BASE_URL="https://pay.autorizou.dev/api/v1"
  ```

  ```javascript .env theme={null}
  AUTORIZOU_API_KEY=4eC39HqLyjWDarjtT1zdp7dc
  AUTORIZOU_BASE_URL=https://pay.autorizou.dev/api/v1
  ```

  ```php .env theme={null}
  AUTORIZOU_API_KEY=4eC39HqLyjWDarjtT1zdp7dc
  AUTORIZOU_BASE_URL=https://pay.autorizou.dev/api/v1
  ```
</CodeGroup>

## Passo 2: Criar um Cliente

Todo pagamento precisa estar associado a um cliente. Vamos criar um:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://pay.autorizou.dev/api/v1/customers \
    -H "Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "João Silva",
      "email": "joao.silva@exemplo.com.br",
      "documents": [
        {
          "type": "cpf",
          "value": "12345678901"
        }
      ],
      "addresses": [
        {
          "type": "billing",
          "postal_code": "01310100",
          "line_1": "Av. Paulista",
          "number": "1000",
          "neighborhood": "Bela Vista",
          "city": "São Paulo",
          "state": "SP",
          "country": "BR"
        }
      ],
      "phone": {
        "type": "mobile",
        "ddi": "55",
        "ddd": "11",
        "number": "999999999"
      }
    }'
  ```

  ```javascript JavaScript theme={null}
  const customer = await fetch('https://pay.autorizou.dev/api/v1/customers', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer 4eC39HqLyjWDarjtT1zdp7dc',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      name: 'João Silva',
      email: 'joao.silva@exemplo.com.br',
      documents: [
        {
          type: 'CPF',
          value: '12345678901'
        }
      ],
      addresses: [
        {
          type: 'billing',
          postal_code: '01310100',
          line_1: 'Av. Paulista',
          number: '1000',
          neighborhood: 'Bela Vista',
          city: 'São Paulo',
          state: 'SP',
          country: 'BR'
        }
      ],
      phone: {
        type: 'mobile',
        ddi: '55',
        ddd: '11',
        number: '999999999'
      }
    })
  }).then(res => res.json());

  console.log('Cliente criado:', customer.id);
  ```

  ```php PHP theme={null}
  <?php

  $data = [
      'name' => 'João Silva',
      'email' => 'joao.silva@exemplo.com.br',
      'documents' => [
          [
              'type' => 'CPF',
              'value' => '12345678901'
          ]
      ],
      'addresses' => [
          [
              'type' => 'billing',
              'postal_code' => '01310100',
              'line_1' => 'Av. Paulista',
              'number' => '1000',
              'neighborhood' => 'Bela Vista',
              'city' => 'São Paulo',
              'state' => 'SP',
              'country' => 'BR'
          ]
      ],
      'phone' => [
          'type' => 'mobile',
          'ddi' => '55',
          'ddd' => '11',
          'number' => '999999999'
      ]
  ];

  $curl = curl_init();
  curl_setopt_array($curl, [
      CURLOPT_URL => 'https://pay.autorizou.dev/api/v1/customers',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc',
          'Content-Type: application/json'
      ],
      CURLOPT_POSTFIELDS => json_encode($data)
  ]);

  $response = curl_exec($curl);
  $customer = json_decode($response, true);
  curl_close($curl);

  echo "Cliente criado: " . $customer['id'];
  ?>
  ```
</CodeGroup>

### Resposta Esperada:

```json theme={null}
{
  "id": "46e9d3d9-afb2-4d19-9a29-43b739f859a5",
  "hash": "AUTCUS01JZX3Y5T4Q8KWVREGH2M9SN",
  "name": "João Silva",
  "email": "joao.silva@exemplo.com.br",
  "created_at": "15/01/2024 10:30:00",
  "updated_at": "15/01/2024 10:30:00"
}
```

<Tip>
  **Guarde o ID do cliente:** Você precisará dele para os próximos passos. No exemplo acima seria `46e9d3d9-afb2-4d19-9a29-43b739f859a5`.
</Tip>

## Passo 3: Tokenizar um Cartão

Para processar pagamentos com cartão, primeiro precisamos tokenizá-lo de forma segura:

<Warning>
  **Importante:** Este exemplo usa dados de cartão em texto puro para simplicidade. Em produção, use nossa biblioteca de tokenização no frontend para maior segurança.
</Warning>

<CodeGroup>
  ```bash cURL   theme={null}
  curl -X POST https://pay.autorizou.dev/api/v1/cards \
    -H "Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc" \
    -H "Content-Type: application/json" \
    -d '{
      "customer_id": "46e9d3d9-afb2-4d19-9a29-43b739f859a5",
      "encrypted": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
    }'
  ```

  ```javascript JavaScript theme={null}
  // Em produção, use nossa biblioteca de tokenização no frontend
  const cardData = {
    number: '4111111111111111',
    holder: 'JOAO SILVA',
    expMonth: '12',
    expYear: '2030',
    securityCode: '123'
  };

  // Simular tokenização (usar biblioteca real em produção)
  const encrypted = btoa(JSON.stringify({ cardData }));

  const card = await fetch('https://pay.autorizou.dev/api/v1/cards', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer 4eC39HqLyjWDarjtT1zdp7dc',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      customer_id: '46e9d3d9-afb2-4d19-9a29-43b739f859a5',
      encrypted: encrypted
    })
  }).then(res => res.json());

  console.log('Cartão tokenizado:', card.id);
  ```

  ```php PHP theme={null}
  <?php

  // Em produção, use tokenização no frontend
  $cardData = [
      'number' => '4111111111111111',
      'holder' => 'JOAO SILVA', 
      'expMonth' => '12',
      'expYear' => '2030',
      'securityCode' => '123'
  ];

  // Simular criptografia (usar biblioteca real em produção)
  $encrypted = base64_encode(json_encode(['cardData' => $cardData]));

  $data = [
      'customer_id' => '46e9d3d9-afb2-4d19-9a29-43b739f859a5',
      'encrypted' => $encrypted
  ];

  $curl = curl_init();
  curl_setopt_array($curl, [
      CURLOPT_URL => 'https://pay.autorizou.dev/api/v1/cards',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc',
          'Content-Type: application/json'
      ],
      CURLOPT_POSTFIELDS => json_encode($data)
  ]);

  $response = curl_exec($curl);
  $card = json_decode($response, true);
  curl_close($curl);

  echo "Cartão tokenizado: " . $card['id'];
  ?>
  ```
</CodeGroup>

### Resposta Esperada:

```json theme={null}
{
  "id": "3f7d2a91-8c4e-4b6f-9a2d-5e8c1f4b7a30",
  "customer_id": "46e9d3d9-afb2-4d19-9a29-43b739f859a5",
  "holder": "JOAO SILVA",
  "brand": "visa",
  "first_6": "411111",
  "last_4": "1111",
  "exp_month": "12",
  "exp_year": "30",
  "created_at": "15/01/2024 10:35:00",
  "updated_at": "15/01/2024 10:35:00"
}
```

## Passo 4: Processar o Pagamento

Agora vamos processar seu primeiro pagamento com cartão de crédito:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://pay.autorizou.dev/api/v1/charges/orders \
    -H "Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc" \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: order_$(date +%s)" \
    -d '{
      "mcc": "5411",
      "code": "PED001",
      "description": "Compra de teste - Guia rápido",
      "customer": {
        "id": "46e9d3d9-afb2-4d19-9a29-43b739f859a5"
      },
      "payment": {
        "amount": 10000,
        "currency": "BRL",
        "payment_method": "credit_card",
        "installments": 1,
        "credit_card": {
          "id": "3f7d2a91-8c4e-4b6f-9a2d-5e8c1f4b7a30",
          "statement_descriptor": "LOJA TESTE",
          "capture": true,
          "processing_model": "authorization_and_capture"
        }
      },
      "items": [
        {
          "name": "Produto de Teste",
          "description": "Produto para testar integração",
          "quantity": 1,
          "amount": 10000
        }
      ]
    }'
  ```

  ```javascript JavaScript theme={null}
  const payment = await fetch('https://pay.autorizou.dev/api/v1/charges/orders', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer 4eC39HqLyjWDarjtT1zdp7dc',
      'Content-Type': 'application/json',
      'Idempotency-Key': `order_${Date.now()}`
    },
    body: JSON.stringify({
      mcc: '5411',
      code: 'PED001',
      description: 'Compra de teste - Guia rápido',
      customer: {
        id: '46e9d3d9-afb2-4d19-9a29-43b739f859a5'
      },
      payment: {
        amount: 10000, // R$ 100,00 em centavos
        currency: 'BRL',
        payment_method: 'credit_card',
        installments: 1,
        credit_card: {
          id: 'card_def456ghi789jkl012',
          statement_descriptor: 'LOJA TESTE',
          capture: true,
          processing_model: 'authorization_and_capture'
        }
      },
      items: [
        {
          name: 'Produto de Teste',
          description: 'Produto para testar integração', 
          quantity: 1,
          amount: 10000
        }
      ]
    })
  }).then(res => res.json());

  console.log('Pagamento processado:', payment);
  ```

  ```php PHP theme={null}
  <?php

  $data = [
      'mcc' => '5411',
      'code' => 'PED001',
      'description' => 'Compra de teste - Guia rápido',
      'customer' => [
          'id' => '46e9d3d9-afb2-4d19-9a29-43b739f859a5'
      ],
      'payment' => [
          'amount' => 10000, // R$ 100,00 em centavos
          'currency' => 'BRL',
          'payment_method' => 'credit_card',
          'installments' => 1,
          'credit_card' => [
              'id' => 'card_def456ghi789jkl012',
              'statement_descriptor' => 'LOJA TESTE',
              'capture' => true,
              'processing_model' => 'authorization_and_capture'
          ]
      ],
      'items' => [
          [
              'name' => 'Produto de Teste',
              'description' => 'Produto para testar integração',
              'quantity' => 1,
              'amount' => 10000
          ]
      ]
  ];

  $curl = curl_init();
  curl_setopt_array($curl, [
      CURLOPT_URL => 'https://pay.autorizou.dev/api/v1/charges/orders',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc',
          'Content-Type: application/json',
          'Idempotency-Key: order_' . time()
      ],
      CURLOPT_POSTFIELDS => json_encode($data)
  ]);

  $response = curl_exec($curl);
  $payment = json_decode($response, true); 
  curl_close($curl);

  echo "Pagamento processado: " . json_encode($payment, JSON_PRETTY_PRINT);
  ?>
  ```
</CodeGroup>

### Resposta Esperada:

```json theme={null}
{
  "id": "8e5a2c74-9d1f-4b3e-a627-5c8f2e9b4d13",
  "hash": "AUTOCC01JZX3Y5T4Q8KWVREGH2M9SP",
  "status": "paid",
  "is_closed": true,
  "payment": {
    "id": "d29b6f81-4e7c-4a5d-93f8-1b6d4a8c2e57",
    "hash": "AUTPCC01JZX3Y5T4Q8KWVREGH2M9SQ",
    "merchant_reference": "PED001",
    "status": "authorized",
    "payment_method": "credit_card",
    "amount": 10000,
    "installments": 1,
    "currency": "BRL",
    "description": "Compra de teste - Guia rápido",
    "bank_slip": null,
    "credit_card": {
      "id": "3f7d2a91-8c4e-4b6f-9a2d-5e8c1f4b7a30",
      "holder": "JOAO SILVA",
      "brand": "visa",
      "first_6": "411111",
      "last_4": "1111",
      "exp_month": "12",
      "exp_year": "30",
      "statement_descriptor": "LOJA TESTE",
      "capture": true,
      "three_ds": null
    },
    "pix": null,
    "pix_recurring": null,
    "google_pay": null,
    "apple_pay": null,
    "refused_reason": null,
    "return_code": "00",
    "created_at": "2024-01-15 10:40:00",
    "updated_at": "2024-01-15 10:40:02"
  },
  "fee": {
    "fixed_fee_amount": 0,
    "platform_fee_percentage": 2.99,
    "platform_fee_amount": 299
  },
  "customer": {
    "id": "46e9d3d9-afb2-4d19-9a29-43b739f859a5",
    "name": "João Silva",
    "email": "joao.silva@exemplo.com.br"
  }
}
```

## Parabéns!

Você processou com sucesso seu primeiro pagamento! O `status: paid` do pedido com `payment.status: authorized` indica que o pagamento foi aprovado e confirmado.

## Testando Outros Cenários

### Pagamento Recusado

Use o cartão `4000000000000002` para simular uma recusa:

```json theme={null}
{
  "payment": {
    "credit_card": {
      "encrypted": "[dados do cartão recusado]"
    }
  }
}
```

### Pagamento PIX

```json theme={null}
{
  "payment": {
    "payment_method": "pix",
    "amount": 10000,
    "pix": {
      "expires_at": "2024-12-31T23:59:59Z"
    }
  }
}
```

### Pagamento com Boleto

```json theme={null}
{
  "payment": {
    "payment_method": "bank_slip",
    "amount": 10000, 
    "bank_slip": {
      "due_at": "2024-12-31"
    }
  }
}
```

## Próximos Passos

Agora que você tem uma integração básica funcionando:

<CardGroup cols={2}>
  <Card title="Configurar Webhooks" icon="webhook" href="/webhooks-intro">
    Receba notificações em tempo real sobre mudanças de status
  </Card>

  <Card title="Implementar Split" icon="handshake" href="/casos-uso/split-pagamento">
    Distribua valores entre múltiplos destinatários
  </Card>

  <Card title="Adicionar 3D Secure" icon="shield-check" href="/casos-uso/3d-secure">
    Aumente a segurança com autenticação adicional
  </Card>

  <Card title="Criar Assinaturas" icon="refresh" href="/api-reference/charges/criar-assinatura">
    Implemente cobranças recorrentes
  </Card>
</CardGroup>

## Troubleshooting Comum

<AccordionGroup>
  <Accordion title="Erro 401 - Unauthorized" icon="circle-xmark">
    **Causa:** Chave de API inválida ou não fornecida\
    **Solução:** Verifique se o header `Authorization` está correto: `Bearer ...`
  </Accordion>

  <Accordion title="Erro 422 - Validation Error" icon="circle-xmark">
    **Causa:** Dados inválidos na requisição\
    **Solução:** Verifique os campos obrigatórios e formatos (CPF, email, etc.)
  </Accordion>

  <Accordion title="Cliente não encontrado" icon="circle-xmark">
    **Causa:** ID do cliente incorreto ou inexistente\
    **Solução:** Confirme que está usando o ID retornado na criação do cliente
  </Accordion>

  <Accordion title="Cartão inválido" icon="circle-xmark">
    **Causa:** Dados do cartão malformados ou criptografia incorreta\
    **Solução:** Use os cartões de teste fornecidos e verifique a tokenização
  </Accordion>
</AccordionGroup>

## Suporte

Precisa de ajuda? Entre em contato:

* **Email:** [suporte@autorizou.com.br](mailto:suporte@autorizou.com.br)
* **WhatsApp:** +55 19 93619-9806
* **Documentação completa:** [Referência da API](/api-reference/customers/create-customer)
