# Procesa tu primer pago

Este tutorial te guía para realizar tu primera petición API a Get Smart API Cloud. Iniciarás un pago en el **Entorno de Pruebas** utilizando credenciales de ejemplo.

Al final de este tutorial, habrás:

1. Construido un objeto de pago JSON válido.  
2. Generado la firma criptográfica requerida.  
3. Enviado una petición `POST` a la API.  
4. Recibido una confirmación `200 OK`.

## Requisitos previos

* **Cliente API:** Una herramienta como `curl`, Postman o un entorno de código (Python, Node.js, etc.).  
* **Credenciales de prueba:** Utilizaremos los siguientes valores de marcador de posición encontrados en la documentación:  
  * **Código de comercio (`comercio`):** `777888991`  
  * **Terminal:** `1`  
  * **Clave del comercio:** `AAABBB` (Utilizada para la firma)

## Paso 1: Definir los datos de pago

Para iniciar un pago, debes construir un objeto JSON que contenga los detalles de la transacción. La estructura requiere una jerarquía específica.

Crea un objeto JSON con los siguientes campos:

```json
{
  "comercio": "777888991",
  "terminal": 1,
  "timestamp": "20250428 111217",
  "notificacion": {
    "urlNotificacion": "[https://www.miservicio.es/servicio/notificaciones/tpvpc](https://www.miservicio.es/servicio/notificaciones/tpvpc)",
    "correoNotificacion": "email@comercio.es"
  },
  "datosOperacion": {
    "importe": "15.00",
    "factura": "FACTURA1"
  }
}
```

**Notas sobre los campos**: 

* `timestamp`: Debe estar en formato `YYYYMMDD HHmmss`.  
* `importe`: El importe en formato `XXXXXXXXX.XX` (p. ej., `15.00`).  
* `factura`: Tu ID de referencia único para la compra (máx. 250 caracteres).

## Paso 2: Generar la firma

La seguridad en API Cloud se garantiza mediante una firma SHA256. No puedes enviar el JSON anterior tal cual; debes firmarlo.

La lógica de la firma funciona de la siguiente manera:

1. Toma la cadena JSON **exacta** del objeto `info` (minimizada, sin espacios adicionales).  
2. Añade tu **clave del comercio** al final de esa cadena.  
3. Calcula el hash **SHA256** de la cadena combinada.

<Callout type="tip">

Para profundizar en el algoritmo de firma, consulta la guía de [Lógica de firma y seguridad](/es/get-smart/get-smart-api-cloud/core-concepts/signature-logic-and-security).

</Callout>

### Ejemplo de cálculo

**Payload (minimizado):** `{"comercio":"777888991","timestamp":"...","datosOperacion":{"importe":"15.00",...}}`

**Clave del comercio:** `AAABBB`

**Cadena combinada:** `{"comercio":"..."...}AAABBB`

**Firma resultante:** `0ED5D16230C0E2683CF304A713154B90D887D592EF72437AA214CBA305B00646`

## Paso 3: Enviar la petición

Combina tu objeto `info` y tu `signature` calculada en el cuerpo final de la petición. Envía este payload al **Endpoint del Entorno de Pruebas**.

**Endpoint:** `https://tpvpc-i.redsys.es:27443/TPV_PC/services/rest/tpvpcwss/v1/pago`

### Petición vía cURL

Aquí tienes un ejemplo completo y ejecutable utilizando `curl`.

```bash
curl -X POST "https://tpvpc-i.redsys.es:27443/TPV_PC/services/rest/tpvpcwss/v1/pago" \\
     -H "Content-Type: application/json" \\
     -d '{
           "info": {
             "comercio": "777888991",
             "terminal": 1,
             "timestamp": "20250428 111217",
             "notificacion": {
               "urlNotificacion": "https://www.miservicio.es/servicio/notificaciones/tpvpc",
               "correoNotificacion": "email@comercio.es"
             },
             "datosOperacion": {
               "importe": "15.00",
               "factura": "FACTURA1"
             }
           },
           "signature": "0ED5D16230C0E2683CF304A713154B90D887D592EF72437AA214CBA305B00646"
         }'
```

<Callout type="warning">

La firma del ejemplo anterior es válida **solo** para los datos y el timestamp exactos mostrados (`20250428 111217`). Si cambias el timestamp o el importe, **debes** recalcular la firma.

</Callout>

## Paso 4: Verificar la respuesta

Si tu petición tiene éxito, la API devolverá un estado `200 OK` y una respuesta JSON.

**Ejemplo de respuesta de éxito:**

```json
{
    "signature": "CD8E8EC1C53E945C03A37E6B3B2E2273AC4DF11E1C6AE0F9556007F505DABE39",
    "info": {
        "resultado": {
            "codigo": "0"
        }
    }
}
```

* **`codigo: "0"`**: Indica que la API recibió y validó tu petición correctamente.  
* **Procesamiento asíncrono:** Esta respuesta **no** significa que el pago se haya completado. Solo significa que el sistema en la nube ha aceptado el comando. El terminal físico se activará ahora y solicitará la tarjeta al cliente.

## Próximos pasos

¡Has iniciado un pago correctamente!

* [**Configurar Webhooks y Notificaciones**](/es/get-smart/get-smart-api-cloud/integration-guides/set-up-webhooks-and-notifications): Aprende a recibir el resultado final (Aprobado/Denegado) una vez que el cliente termine de interactuar con el terminal.  
* [**Configurar entornos y credenciales**](/es/get-smart/get-smart-api-cloud/first-steps/configure-environments-and-credentials): Cambia estas credenciales de prueba por tus claves de producción.