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

# Link de Pagamento

> Obtenha e utilize o link de pagamento para receber de seus clientes

## Visão Geral

Após criar um produto, você recebe um `uuid` que é usado para construir o link de pagamento. Este link pode ser compartilhado diretamente com seus clientes para que eles realizem o pagamento.

## Formato do Link

```
https://garu.com.br/pay/{uuid}
```

**Exemplo:** `https://garu.com.br/pay/a1b2c3d4-e5f6-7890-abcd-ef1234567890`

## Obtendo o Link de Pagamento

### Método 1: Na Criação do Produto

Quando você cria um produto via API, a resposta inclui o campo `uuid`:

```javascript theme={null}
const response = await fetch('https://garu.com.br/api/products', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.GARU_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Meu Produto',
    description: 'Descrição do produto',
    value: 99.90,
    pix: true,
    creditCard: true,
    boleto: true,
    installments: 6
  })
});

const product = await response.json();
const paymentLink = `https://garu.com.br/pay/${product.uuid}`;

console.log(paymentLink);
// https://garu.com.br/pay/a1b2c3d4-e5f6-7890-abcd-ef1234567890
```

### Método 2: Consultando um Produto Existente

Se você já tem um produto criado, consulte-o pelo UUID:

```bash theme={null}
# Endpoint público - não requer autenticação
curl -X GET https://garu.com.br/api/products/a1b2c3d4-e5f6-7890-abcd-ef1234567890
```

**Resposta:**

```json theme={null}
{
  "id": 123,
  "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "name": "Meu Produto",
  "value": 99.90,
  ...
}
```

### Método 3: Listando Todos os Produtos

Recupere todos os seus produtos e seus UUIDs:

```bash theme={null}
curl -X GET https://garu.com.br/api/products \
  -H "Authorization: Bearer sk_test_sua_chave_api"
```

**Resposta:**

```json theme={null}
{
  "data": [
    {
      "id": 123,
      "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "name": "Curso de Marketing Digital",
      "value": 297.00
    },
    {
      "id": 124,
      "uuid": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
      "name": "E-book Python",
      "value": 47.00
    }
  ],
  "count": 2,
  "page": 1,
  "totalPages": 1
}
```

## Utilizando o Link de Pagamento

### Compartilhamento Direto

Envie o link diretamente para seus clientes via:

* Email
* WhatsApp
* Redes sociais
* SMS

### Incorporando no seu Site

<CodeGroup>
  ```html Botão HTML theme={null}
  <a href="https://garu.com.br/pay/a1b2c3d4-e5f6-7890-abcd-ef1234567890"
     class="btn-comprar">
    Comprar Agora - R$ 297,00
  </a>

  <style>
  .btn-comprar {
    display: inline-block;
    padding: 12px 24px;
    background-color: #257264;
    color: white;
    text-decoration: none;
    border-radius: 8px;
    font-weight: bold;
  }
  .btn-comprar:hover {
    background-color: #005243;
  }
  </style>
  ```

  ```javascript React theme={null}
  function BotaoComprar({ productUuid, preco }) {
    const handleClick = () => {
      window.location.href = `https://garu.com.br/pay/${productUuid}`;
    };

    return (
      <button onClick={handleClick} className="btn-comprar">
        Comprar Agora - R$ {preco.toFixed(2)}
      </button>
    );
  }

  // Uso
  <BotaoComprar
    productUuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
    preco={297}
  />
  ```

  ```javascript Vue theme={null}
  <template>
    <button @click="comprar" class="btn-comprar">
      Comprar Agora - R$ {{ preco.toFixed(2) }}
    </button>
  </template>

  <script>
  export default {
    props: ['productUuid', 'preco'],
    methods: {
      comprar() {
        window.location.href = `https://garu.com.br/pay/${this.productUuid}`;
      }
    }
  }
  </script>
  ```
</CodeGroup>

### Abrindo em Popup

Para uma experiência de checkout mais integrada:

```javascript theme={null}
function abrirCheckout(uuid) {
  const width = 500;
  const height = 700;
  const left = (window.innerWidth - width) / 2;
  const top = (window.innerHeight - height) / 2;

  window.open(
    `https://app.garu.com.br/${uuid}`,
    'GaruCheckout',
    `width=${width},height=${height},left=${left},top=${top}`
  );
}
```

## URL de Retorno Personalizada

Configure para onde o cliente será redirecionado após o pagamento:

```json theme={null}
{
  "name": "Curso de Marketing Digital",
  "value": 297.00,
  "pix": true,
  "creditCard": true,
  "boleto": true,
  "installments": 12,
  "returnUrl": "https://meusite.com.br/obrigado",
  "returnUrlButtonText": "Acessar Curso"
}
```

Após o pagamento, o cliente verá um botão com o texto "Acessar Curso" que redireciona para `https://meusite.com.br/obrigado`.

<Tip>
  Use a URL de retorno para direcionar o cliente para uma página de agradecimento ou para entregar o acesso ao produto.
</Tip>

## Fluxo Completo

```javascript theme={null}
const GARU_BASE_URL = 'https://garu.com.br/pay';

async function criarProdutoEObterLink(dadosProduto) {
  // 1. Criar o produto
  const response = await fetch('https://garu.com.br/api/products', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.GARU_API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(dadosProduto)
  });

  if (!response.ok) {
    throw new Error('Falha ao criar produto');
  }

  const product = await response.json();

  // 2. Construir o link de pagamento
  const paymentLink = `${GARU_BASE_URL}/${product.uuid}`;

  // 3. Retornar produto e link
  return {
    produto: product,
    linkPagamento: paymentLink,
    uuid: product.uuid
  };
}

// Uso
const resultado = await criarProdutoEObterLink({
  name: 'Curso de Marketing Digital',
  description: 'Aprenda marketing digital',
  value: 297.00,
  pix: true,
  creditCard: true,
  boleto: true,
  installments: 12,
  returnUrl: 'https://meusite.com.br/obrigado',
  returnUrlButtonText: 'Acessar Curso'
});

console.log(`Produto criado: ${resultado.produto.name}`);
console.log(`Link de pagamento: ${resultado.linkPagamento}`);
```

## Boas Práticas

<AccordionGroup>
  <Accordion title="Salve o UUID no seu banco de dados">
    Sempre armazene o `uuid` do produto para referência futura. Você precisará dele para construir o link de pagamento.
  </Accordion>

  <Accordion title="Use URLs de retorno significativas">
    Configure URLs de retorno que entreguem valor ao cliente, como páginas de acesso ao produto ou instruções de próximos passos.
  </Accordion>

  <Accordion title="Teste antes de ir para produção">
    Use chaves `sk_test_` para testar todo o fluxo antes de usar chaves de produção.
  </Accordion>

  <Accordion title="Configure webhooks para confirmação">
    Não dependa apenas do retorno do cliente. Configure webhooks para receber confirmação de pagamento do servidor.
  </Accordion>
</AccordionGroup>

## Próximos Passos

<CardGroup cols={2}>
  <Card title="Webhooks" icon="webhook" href="/api-reference/webhooks">
    Receba notificações de pagamento em tempo real
  </Card>

  <Card title="Exemplos de Código" icon="code" href="/api-reference/exemplos">
    Veja implementações completas em várias linguagens
  </Card>
</CardGroup>
