# Primeiros passos (https://dev.cosmospay.lat/docs/pt/getting-started/)

> Tudo o que você precisa antes do seu primeiro pagamento Cosmos Pay (o que é, como um pagamento flui e as duas formas de integração).

O **Cosmos Pay** permite que você aceite pagamentos na [Stellar](https://stellar.org),
[Solana](https://solana.com) e [Monad](https://monad.xyz) usando **intenções de pagamento**: você descreve um pagamento, o pagador o conclui a partir da própria
carteira e você o confirma on-chain. Em torno desse núcleo você também tem **swaps** (em cada rede e entre elas), **webhooks**, **produtos**,
**clientes** e **análises**.

Há duas formas de integração, e a maioria dos aplicativos usa ambas em conjunto:

- [Usar o SDK (recomendado)](https://dev.cosmospay.lat/docs/sdk/server/overview/): @cosmosapp/pay_sdk, um cliente JavaScript/TypeScript tipado que cuida da autenticação, das requisições e da assinatura na carteira por você.
- [Chamar a API REST diretamente](https://dev.cosmospay.lat/docs/api/): A API REST de Pagamentos (OpenAPI), caso você não use JavaScript ou queira controle total sobre as requisições.

## Como funciona um pagamento

Todo pagamento passa pelas mesmas três etapas (aqui com o SDK, na Stellar):

1. **Seu servidor cria uma intenção** com sua chave de API secreta, por exemplo com `client.paymentIntents.createPay({ ... })`. Você recebe de volta um `uri` SEP-7 e um `qr` para mostrar ao pagador.
2. **O pagador a conclui** na sua carteira Stellar (Freighter, xBull, Rabet, LOBSTR ou Albedo). No navegador isso é uma única chamada: `new WebClient().pay(intent)`, que retorna um `txHash` on-chain.
3. **Seu servidor valida** esse hash com `intent.validate(txHash)`, o que atualiza o status do pagamento e dispara um webhook para seus endpoints.

Na Solana e na Monad, informe `chain`, com o SDK (`createPay({ chain: 'solana', ... })`, a partir da versão 2.2) ou pela [API REST](https://dev.cosmospay.lat/docs/api/payment-intents/):
você recebe um link Solana Pay ou EIP-681 em vez de um SEP-7, o pagador paga de qualquer carteira
dessa rede, e a API de Pagamentos detecta o pagamento on-chain e dispara os mesmos webhooks.

> **Testnet vs mainnet**
>
> Você nunca escolhe a rede no código. Ela é decidida pelo **prefixo da sua chave de API**: chaves `dv_` rodam
> na **testnet**, chaves `prod_` rodam na **mainnet**. Desenvolva com uma chave `dv_` e depois troque por uma
> chave `prod_` para entrar em produção.

## Antes de começar

1. **Obtenha uma chave de API**: entre na plataforma para desenvolvedores e gere uma. Veja [Obtenha sua chave de API](https://dev.cosmospay.lat/docs/api-keys/).
2. **Instale o SDK**: `npm install @cosmosapp/pay_sdk` (Node.js ≥ 18). Veja [Instalação](https://dev.cosmospay.lat/docs/sdk/server/installation/).
3. **Mantenha a chave no seu servidor.** Ela é secreta; o cliente web no navegador nunca precisa dela.

## Seu primeiro pagamento

```ts
import { Client, Assets } from '@cosmosapp/pay_sdk';

const client = new Client({ apiKey: process.env.COSMOS_PAY_API_KEY });

const intent = await client.paymentIntents.createPay({
  destination: 'G...YOUR_MERCHANT_ACCOUNT',
  amount: '10',
  asset: Assets.XLM,
  msg: 'Order #1001',
});

console.log(intent.uri); // show as a link / button
console.log(intent.qr);  // render this data: URL as an <img>
```

## Próximos passos

- [Obtenha sua chave de API](https://dev.cosmospay.lat/docs/api-keys/): Entre, escolha um ambiente e gere uma chave no painel.
- [Início rápido](https://dev.cosmospay.lat/docs/sdk/server/quickstart/): O exemplo completo de servidor-cria / navegador-conclui.
- [Webhooks](https://dev.cosmospay.lat/docs/sdk/server/webhooks/): Seja notificado no instante em que um pagamento é concluído com sucesso.
- [Referência da API](https://dev.cosmospay.lat/docs/api/): Todos os endpoints, com esquemas e um playground de requisições.
