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

# Tarjetas y datos de prueba

Antes de salir a producción puedes simular transacciones en el entorno de staging sin realizar cargos reales. Usa los siguientes datos para probar los distintos escenarios de pago.

<Note>
  La URL base y las credenciales de autenticación son las mismas que se describen en las secciones Entornos y URLs y Autenticación y seguridad.
</Note>

## Autenticación

Tu servidor llama a PayCode con tu API Key y obtiene un token de sesión temporal que deberás usar en todas las peticiones siguientes.

**Método:** `GET` **Endpoint:** `/Api/v2/auth/login`

**Header requerido:**

| Header          | Valor      |
| --------------- | ---------- |
| `Authorization` | Tu API Key |

***

## Pago con tarjeta

**Método:** `POST` **Endpoint:** `/Api/v2/cobros/pago_tarjeta_ecomerce`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "amount": "1.00",
  "save_card": false,
  "flag_3ds": false,
  "card": {
    "card_number": "4242424242424242",
    "sec_code": "123",
    "exp_month": "02",
    "exp_year": "31",
    "cardholder_name": "Raul Juarez Monroy",
    "msi": null
  },
  "client": {
    "num_cel": "5555555555",
    "first_name": "demo",
    "paternal_surname": "paycode",
    "maternal_surname": "paycode",
    "concept": "prueba"
  }
}
```

**Descripción de los campos:**

| Campo       | Descripción                                                                                                               |
| ----------- | ------------------------------------------------------------------------------------------------------------------------- |
| `amount`    | Monto a cobrar                                                                                                            |
| `save_card` | Indica si la tarjeta se tokeniza para cobros futuros. Por defecto `false`                                                 |
| `flag_3ds`  | Indica si se utiliza autenticación 3DS. Por defecto `false`                                                               |
| `card`      | Datos de la tarjeta: número, código de seguridad, fecha de expiración, nombre del titular y meses sin intereses si aplica |
| `client`    | Datos del cliente                                                                                                         |

**Datos de prueba para los campos de la tarjeta:**

| Campo             | Valor de prueba    |
| ----------------- | ------------------ |
| `card_number`     | `4242424242424242` |
| `sec_code`        | `123`              |
| `exp_month`       | `02`               |
| `exp_year`        | `31`               |
| `cardholder_name` | Cualquier nombre   |

**Posibles respuestas:**

Cargo aprobado:

```json theme={null}
{
  "success": true,
  "error": "",
  "display_message": "Aprobada por HUB Banregio (modo prueba)",
  "reference_number": "178330651",
  "track_code": "178630651",
  "card_type": "CREDITO",
  "result_code": "00"
}
```

Cargo rechazado, número de tarjeta inválido:

```json theme={null}
{
  "success": true,
  "error": "",
  "display_message": "Número de tarjeta inválido",
  "reference_number": "178346272211",
  "track_code": "178346272211",
  "card_type": "CREDITO",
  "result_code": "14"
}
```

Cargo aprobado con tokenización exitosa:

```json theme={null}
{
  "success": true,
  "error": "",
  "display_message": "Aprobado",
  "reference_number": "178346306751",
  "track_code": "178346306751",
  "card_type": "CREDITO",
  "result_code": "00",
  "token_card": "XXXXXXXXXXXXXXXXXXXXX"
}
```

<Note>
  El campo `token_card` aparece en la respuesta únicamente cuando `save_card` es `true` en el request. Este token puede usarse para cobros futuros sin que el cliente tenga que ingresar sus datos de tarjeta nuevamente.
</Note>

***

## Pago con token

**Método:** `POST` **Endpoint:** `/Api/v2/cobros/pago_token_ecomerce`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "amount": "1.00",
  "token_card": "XXXXXXXXXXXXXXXXXXX"
}
```

**Descripción de los campos:**

| Campo        | Descripción                                              |
| ------------ | -------------------------------------------------------- |
| `amount`     | Monto a cobrar                                           |
| `token_card` | Token obtenido al realizar un pago con `save_card: true` |

**Posibles respuestas:**

Cargo aprobado:

```json theme={null}
{
  "success": true,
  "display_message": "Aprobada por HUB Banregio (modo prueba)",
  "reference_number": "178369869513",
  "track_code": "178369869513",
  "card_transaction_id": 21508,
  "metadata": null
}
```

Cargo rechazado, token no encontrado:

```json theme={null}
{
  "success": false,
  "data": [],
  "msg": "No se encontró el token: tVoOPm4gSNSJEDjA5sC6ogQz2l7-zQxxOvzrLkToWOM%3D"
}
```
