> ## Documentation Index
> Fetch the complete documentation index at: https://commet.co/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrar con Java

> Instala y configura el SDK de Commet para Java.

Instala la Commet Skill para que tu agente integre el SDK actual y valide su trabajo contra el contrato vivo de la API.

```bash theme={null}
npx skills add commet-labs/skills --skill commet
```

<Steps>
  <Step title="Instalar">
    <Tabs>
      <Tab title="Maven">
        ```xml title="pom.xml" theme={null}
        <dependency>
            <groupId>co.commet</groupId>
            <artifactId>commet-java</artifactId>
            <version>8.0.0</version>
        </dependency>
        ```
      </Tab>

      <Tab title="Gradle">
        ```kotlin title="build.gradle.kts" theme={null}
        implementation("co.commet:commet-java:9.0.0")
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Configurar">
    ```bash title=".env" theme={null}
    COMMET_API_KEY=ck_sandbox_xxx
    ```

    ```java title="CommetClient.java" theme={null}
    import co.commet.Commet;

    public class CommetClient {

        public static final Commet commet = Commet.builder()
                .apiKey(System.getenv("COMMET_API_KEY"))
                .build();
    }
    ```

    El cliente no tiene opción de environment: sandbox o live lo decide la organización a la que pertenece la API key.
  </Step>

  <Step title="Crear cliente y suscribir">
    `customers().create` es idempotente — si ya existe un cliente con el mismo `id`, devuelve el registro existente.

    ```java theme={null}
    import co.commet.params.CreateCustomerParams;
    import co.commet.params.CreateSubscriptionParams;

    commet.customers().create(
        CreateCustomerParams.builder("user@example.com")
            .id("user_123")
            .build()
    );

    var subscription = commet.subscriptions().create(
        CreateSubscriptionParams.builder("user_123")
            .planCode("pro")
            .build()
    );

    String checkoutUrl = subscription.checkoutUrl();
    ```

    El cliente es redirigido al checkout para completar el pago.
  </Step>

  <Step title="Verificar acceso">
    ```java theme={null}
    import co.commet.models.FeatureAccess;
    import co.commet.models.Subscription;
    import co.commet.models.SubscriptionStatus;
    import co.commet.params.GetActiveSubscriptionParams;
    import co.commet.params.GetFeatureAccessParams;

    Subscription sub = commet.subscriptions().getActive(
        GetActiveSubscriptionParams.builder("user_123").build()
    );
    SubscriptionStatus status = sub != null ? sub.status() : null;

    FeatureAccess access = commet.featureAccess()
            .get("custom_branding", GetFeatureAccessParams.builder("user_123").build());
    boolean allowed = access.allowed();
    ```
  </Step>

  <Step title="Trackear uso">
    ```java theme={null}
    import co.commet.params.TrackUsageParams;

    commet.usage().track(
        TrackUsageParams.builder("api_calls", "user_123")
            .value(1.0)
            .build()
    );
    ```

    El uso se agrega y se cobra al final del período.
  </Step>

  <Step title="Webhooks">
    ```java theme={null}
    import co.commet.resources.Webhooks;
    import java.util.Map;

    Webhooks webhooks = new Webhooks();

    Map<String, Object> payload = webhooks.verifyAndParse(
            rawBody, signature, webhookSecret
    );

    if (payload == null) {
        // devolver 401
    }

    if ("subscription.activated".equals(payload.get("event"))) {
        // manejar activación
    }
    ```
  </Step>
</Steps>

## Relacionado

* [Referencia del SDK](/docs/es/sdk-reference)


## Related topics

- [Integrar con Flask](/docs/es/integrate-with-flask.md)
- [Integrar con Django](/docs/es/integrate-with-django.md)
- [Integrar con Encore](/docs/es/integrate-with-encore.md)
- [Integrar con Laravel](/docs/es/integrate-with-laravel.md)
- [Integrar con PHP](/docs/es/integrate-with-php.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.