# Primeros pasos (https://dev.cosmospay.lat/docs/es/getting-started/)

> Todo lo que necesitas antes de tu primer pago con Cosmos Pay, desde qué es y cómo fluye un pago hasta las dos formas de integrar.

**Cosmos Pay** te permite aceptar pagos en [Stellar](https://stellar.org),
[Solana](https://solana.com) y [Monad](https://monad.xyz) usando **intenciones de pago**: describes un pago, el pagador lo completa desde su propia
billetera, y tú lo confirmas en cadena. En torno a ese núcleo también obtienes **swaps** (en cada red y entre ellas), **webhooks**, **productos**,
**clientes** y **analíticas**.

Hay dos formas de integrar, y la mayoría de las aplicaciones usan ambas juntas:

- [Usar el SDK (recomendado)](https://dev.cosmospay.lat/docs/sdk/server/overview/): @cosmosapp/pay_sdk, un cliente de JavaScript/TypeScript tipado que gestiona la autenticación, las solicitudes y la firma con la billetera por ti.
- [Llamar a la API REST directamente](https://dev.cosmospay.lat/docs/api/): La API REST de pagos (OpenAPI) si no usas JavaScript o quieres control total sobre las solicitudes.

## Cómo funciona un pago

Cada pago atraviesa los mismos tres pasos (aquí con el SDK, en Stellar):

1. **Tu servidor crea una intención** con tu clave de API secreta, p. ej. `client.paymentIntents.createPay({ ... })`. Obtienes un `uri` SEP-7 y un `qr` para mostrarle al pagador.
2. **El pagador la completa** en su billetera de Stellar (Freighter, xBull, Rabet, LOBSTR o Albedo). En el navegador esto es una sola llamada: `new WebClient().pay(intent)`, que devuelve un `txHash` en cadena.
3. **Tu servidor valida** ese hash con `intent.validate(txHash)`, lo que actualiza el estado del pago y dispara un webhook a tus endpoints.

En Solana y Monad, indica `chain`, con el SDK (`createPay({ chain: 'solana', ... })`, desde la versión 2.2) o con la [API REST](https://dev.cosmospay.lat/docs/api/payment-intents/):
recibes un enlace Solana Pay o EIP-681 en lugar de uno SEP-7, el pagador lo paga desde cualquier
billetera de esa red, y la API de pagos detecta el pago en cadena y dispara los mismos webhooks.

> **Testnet vs mainnet**
>
> Nunca eliges la red en el código: la decide el **prefijo de tu clave de API**: las claves `dv_` corren
> en **testnet**, las claves `prod_` corren en **mainnet**. Desarrolla con una clave `dv_`, luego cámbiala por una
> clave `prod_` para salir a producción.

## Antes de empezar

1. **Obtén una clave de API**: inicia sesión en la plataforma de desarrolladores y genera una. Consulta [Obtén tu clave de API](https://dev.cosmospay.lat/docs/api-keys/).
2. **Instala el SDK**: `npm install @cosmosapp/pay_sdk` (Node.js ≥ 18). Consulta [Instalación](https://dev.cosmospay.lat/docs/sdk/server/installation/).
3. **Mantén la clave en tu servidor.** Es secreta; el cliente web del navegador nunca la necesita.

## Tu primer pago

```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 pasos

- [Obtén tu clave de API](https://dev.cosmospay.lat/docs/api-keys/): Inicia sesión, elige un entorno y genera una clave en el panel.
- [Inicio rápido](https://dev.cosmospay.lat/docs/sdk/server/quickstart/): El ejemplo completo de el-servidor-crea / el-navegador-completa.
- [Webhooks](https://dev.cosmospay.lat/docs/sdk/server/webhooks/): Recibe una notificación en el instante en que un pago se completa.
- [Referencia de la API](https://dev.cosmospay.lat/docs/api/): Cada endpoint, con esquemas y un entorno de pruebas de solicitudes.
