# Quickstart: Crea tu primer pago

Esta guía te ayuda a crear tu primera transacción de pago exitosa en el entorno Sandbox. Te autenticarás con la API, enviarás una solicitud de pago y verificarás el estado de la transacción, todo en pocos minutos.

## Requisitos

Antes de comenzar, asegúrate de tener:

* Credenciales de Sandbox: `client_id` y `client_secret` (disponibles en el portal de desarrolladores)
* Base URL de Sandbox: [`https://api-sbx.globalgetnet.com`](https://api-sbx.pre.globalgetnet.com)

<Callout type="tip">

Utiliza [tarjetas de prueba](https://docs.globalgetnet.com/en/articles?article=test-cards) para simular distintos escenarios de pago en Sandbox.

</Callout>

## Paso 1: Obtener una credencial de sandbox

<Callout type="warning">

La obtención de `client_id` y `client_secret` varía según la región en la que te encuentres. Contacta con tu gestor para más información.

</Callout>

Para generar la credencial, en la página principal de Getnet, sigue los siguientes pasos:

![](https://static-devportal-ux.sensedia-eng.com/Pagonxt/production/documentations/getnet-final-1765816313012-cssplwc9.gif)

1. Haz clic en el área de usuario.
2. Selecciona **Developer Dashboard**.
3. En el menú lateral, selecciona **API Keys**.
4. Haz clic en **Create a new credential**.
5. Completa los campos **Name** y **Description**.
6. Haz clic en **Continue**.
7. En el aviso, haz clic en **Generate Secret ID**.
8. Copia el client_secret, ya que no volverá a mostrarse una vez generado.
9. Haz clic en **Continue**.

Tu credencial se ha creado correctamente.

<Callout type="info">

Si pierdes la clave client_secret, pulsa **Refresh secret** para generar una nueva.

</Callout>

## Paso 2: Obtener un Access Token

Autentícate en la API utilizando tus credenciales. Combina tu `client_id` y `client_secret` con dos puntos (`:`), codifica el resultado en Base64 y úsalo en el header Authorization.

```bash
curl --request POST \
  --url https://api-sbx.globalgetnet.com/authentication/oauth2/access_token \
  --header 'authorization: Basic <BASE64(client_id:client_secret)>' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=client_credentials
```

La respuesta incluye un `access_token` que expira aproximadamente en una hora:

```json
{
  "access_token": "eyJ0eXAiOiJKV1QiLCJraWQiOiI1amhLMy9xK0ZpK0tTRkIrRUwwN3VhMFYwdGM9IiwiYWxnIjoiUlMyNTYifQ...",
  "scope": "digital-platform-sbx:gateway-api",
  "token_type": "Bearer",
  "expires_in": 3599
}
```

Para ver los pasos detallados de autenticación, consulta la [guía de autenticación](/es/global-api/sep-api/first-steps-api/authentication).

## Paso 3: Crear un pago

Crea un pago en un solo paso que autoriza y captura los fondos en una única operación. Sustituye los placeholders por tus valores reales:

* `<ACCESS_TOKEN>` - El token del Paso 1
* `<UUID>` - Una clave de idempotencia única (genera un nuevo UUID para cada pago)

```bash
curl --request POST \
  --url https://api-sbx.globalgetnet.com/dpm/payments-gwproxy/v2/payments \
  --header 'authorization: Bearer <ACCESS_TOKEN>' \
  --header 'content-type: application/json' \
  --header 'x-transaction-channel-entry: XX' \
  --data '{
  "idempotency_key": "63c7f8ee-51a6-470d-bb76-ef762b62bfb9",
  "order_id": "ORDER-QUICKSTART-001",
  "data": {
    "amount": 10000,
    "currency": "BRL",
    "payment": {
      "payment_method": "CREDIT",
      "transaction_type": "FULL",
      "number_installments": 1,
      "card": {
        "number": "5155901222260000",
        "expiration_month": "12",
        "expiration_year": "30",
        "cardholder_name": "JOHN TEST",
        "security_code": "123"
      }
    },
    "customer": {
      "email": "customer@example.com"
    }
  }
}'
```

Un pago exitoso devuelve una respuesta con `status: "APPROVED"`:

```json
{
  "payment_id": "053de7f9-3725-437b-bdfc-bbf3ed0acb75",
  "order_id": "ORDER-QUICKSTART-001",
  "amount": 10000,
  "currency": "BRL",
  "status": "APPROVED",
  "payment_method": "CREDIT",
  "received_at": "2025-01-15T10:30:00.000Z"
}
```

<Callout type="note">

El ejemplo utiliza un número de tarjeta de prueba. En Sandbox, puedes usar varias [tarjetas de prueba](https://docs.globalgetnet.com/en/articles?article=test-cards) para simular distintos escenarios.

</Callout>

## Paso 4: Verificar el pago (Opcional)

Comprueba el estado de la transacción utilizando el [endpoint Get Transaction](https://docs.globalgetnet.com/en/products/online-payments/regional-api/swagger#tag/payment-record-management/get/dpm/hub-payment-info/v1/payments/info/{payment_id}) con el `payment_id` de la respuesta:

```bash
curl --request GET \
  --url https://api-sbx.globalgetnet.com/dpm/hub-payment-info/v1/payments/info/<PAYMENT_ID> \
  --header 'authorization: Bearer <ACCESS_TOKEN>'
```

## Resolución de problemas

**401 Unauthorized**: Tu access token puede haber expirado. Solicita uno nuevo y vuelve a intentarlo.

**422 Validation Error**: Verifica que todos los campos obligatorios estén presentes:

* `idempotency_key` (único para cada pago)
* `order_id`
* `data.amount` (en céntimos)
* `data.currency`
* `data.payment.payment_method` (`CREDIT` o `DEBIT`)
* `data.payment.transaction_type` (`FULL`)
* `data.payment.number_installments` (`1` para pago único)
* Datos completos de la tarjeta

**Pago rechazado**: Prueba con otra [tarjeta de prueba](https://docs.globalgetnet.com/en/articles?article=test-cards) o ajusta el importe.

## Próximos pasos

¡Enhorabuena! Has creado tu primer pago. Para aprender más:

* Sigue la [guía completa de pago en un solo paso](/es/global-api/sep-api/payment-guides-api/card-payments/single-step-payment) para una implementación detallada y requisitos de producción.
* Explora los [pagos preautorizados](/es/global-api/sep-api/payment-guides-api/card-payments/pre-auth-payment) para flujos en dos pasos.