Hay un SDK oficial por lenguaje. Los cinco cubren las 115 operaciones del gateway con los mismos nombres (adaptados a la convención de cada lenguaje) y resuelven lo que toda integración termina haciendo a mano: autenticación, Idempotency-Key en las escrituras, reintentos con backoff, errores tipados problem+json, paginación, avisos de deprecación y verificación de webhooks. Todos están en la versión 1.1.0 y apuntan al API v1 (SemVer alineado: mayor del SDK = mayor del API).

Requisitos #

SDKPaqueteRequisitosDependencias
Pythoncompense-sdk-python (se importa como compense_gateway)Python 3.9+httpx (cliente síncrono y asíncrono)
JavaScript / TypeScript@compense/sdkNode.js 18+ (también Deno, Bun y edge)Ninguna: usa fetch nativo. ESM y CommonJS con tipos
PHPcompense/sdkPHP 8.1+Cualquier cliente PSR-18 (Guzzle sugerido)
.NETCompense.Sdknet8.0 o netstandard2.0 (.NET Framework 4.6.2+)System.Text.Json, Microsoft.Extensions.Http
Gogithub.com/Appiasoft/compense-saas-sdk-goGo 1.21+ (iteradores con 1.23+)Solo biblioteca estándar

Instalación #

Instalar
pip install compense-sdk-python

¿Tu gestor de paquetes no encuentra el SDK?

Los SDK todavía no están en los registros públicos (PyPI, npm, Packagist, NuGet): se distribuyen como releases de sus repositorios privados en GitHub. En el onboarding Compense le da a tu equipo acceso de lectura y descargas el paquete del release v1.1.0 de cada repo (compense-saas-sdk-python, -js, -php, -dotnet, -go de la organización Appiasoft). Se instala igual: pip install ./compense_sdk_python-1.1.0-py3-none-any.whl, npm install ./compense-sdk-1.1.0.tgz, dotnet add package Compense.Sdk --source ./artifacts, un repositorio vcs (o path con el zip) en composer.json, y en Go GOPRIVATE=github.com/Appiasoft/* antes del go get. Las instrucciones exactas vienen en cada release.

Crea el cliente #

Crea un cliente por llave y reutilízalo: todos son seguros para uso concurrente y mantienen un pool de conexiones.

import os
from compense_gateway import CompenseClient, AsyncCompenseClient

client = CompenseClient(api_key=os.environ["COMPENSE_API_KEY"], environment="sandbox")

# Misma superficie, todo awaitable (FastAPI, aiohttp…):
async_client = AsyncCompenseClient(api_key=os.environ["COMPENSE_API_KEY"], environment="sandbox")

Opciones del cliente #

Las mismas perillas existen en los cinco SDK:

OpciónPythonJavaScript / TSPHP.NETGo
Entornoenvironment=environmentenvironment:CompenseEnvironment / EnvironmentWithEnvironment
URL base propia (gana al entorno)base_url=baseUrlbaseUrl:BaseUrlWithBaseURL
Timeout por intentotimeout= (s)timeout (ms)timeout: (s)Timeout (TimeSpan)WithTimeout
Reintentosretry=RetryConfig(...)retry: {...}retry: new RetryConfig(...)Retry = new RetryOptions {...}WithRetry(RetryConfig{...})
Reintentar escriturasRetryConfig(retry_writes=True)retryWrites: trueRetryConfig(retryWrites: true)RetryWrites = trueWithRetryWrites(true)
Cliente HTTP propiohttp_client= / transport= (httpx)fetchhttpClient: (PSR-18)new CompenseClient(httpClient, options)WithHTTPClient
Avisos de deprecaciónlogger compense_gatewayloggerlogger: (PSR-3)ILogger (Compense.Sdk)WithLogger (slog)

Ejemplo con todo configurado:

from compense_gateway import CompenseClient, RetryConfig

client = CompenseClient(
    api_key=os.environ["COMPENSE_API_KEY"],
    environment="sandbox",
    timeout=30.0,
    retry=RetryConfig(max_attempts=5, backoff_base=0.5, backoff_max=30.0, jitter=True),
)

Los detalles de cada opción están en Reintentos y backoff y en la página de cada SDK. Siguiente paso: tu primera llamada.