Compense mantiene un SDK oficial por lenguaje. Los cinco están en la versión 1.1.0, cubren las 115 operaciones del contrato v1 y comparten las mismas reglas, comprobadas con pruebas de paridad contra el contrato fijado (gateway develop 9cf78da): mismo verbo, ruta e idempotencia por operación, y —en JS, PHP, .NET y Go— el mismo cuerpo exacto que envía el SDK de Python.

Qué hacen todos #

CapacidadDetalle
AutenticaciónCabecera X-API-Key en cada llamada; entornos production, sandbox y dev, o URL base propia.
IdempotenciaIdempotency-Key en toda escritura con llave: la tuya o un UUIDv4 generado.
Reintentos429/502/503/504 con backoff exponencial, jitter y Retry-After; escrituras solo con retryWrites.
ErroresExcepciones tipadas por código con el Problem RFC 9457 y su trace_id.
MontosTexto decimal exacto (MoneyCOP) desde enteros, decimales o texto.
PaginaciónPage y OffsetPage iterables, con recorrido automático en JS, .NET y Go.
DeprecacionesUn aviso por operación cuando el gateway envía Deprecation/Sunset.
WebhooksVerificación HMAC-SHA256 sin estado, con varios secretos (rotación), tolerancia de tiempo y detección de eventos de prueba; catálogo de 52 eventos.
ParidadPruebas que fallan si una operación del contrato no está cubierta o difiere en verbo, ruta o idempotencia.

Cómo se llaman las cosas en cada uno #

Los nombres siguen los operationId del contrato, agrupados por módulo, en la convención de cada lenguaje. La referencia del API muestra el método exacto de cada operación en los cinco.

OperaciónPythonJavaScript / TSPHP.NETGo
payBillclient.wallet.bills.pay(...)client.wallet.bills.pay({...})$client->wallet->bills->pay(...)client.Wallet.Bills.PayAsync(...)client.Wallet.Bills.Pay(ctx, &BillPayParams{...})
registerLoanPaymentclient.loans.register_payment(...)client.loans.registerPayment(id, {...})$client->loans->registerPayment(...)client.Loans.RegisterPaymentAsync(...)client.Loans.RegisterPayment(ctx, id, &LoanPaymentParams{...})
sendWebhookTestEventclient.webhooks.endpoints.send_test(...)client.webhooks.endpoints.sendTest(...)$client->webhooks->endpoints->sendTest(...)client.Webhooks.Endpoints.SendTestAsync(...)client.Webhooks.Endpoints.SendTest(ctx, ...)
Verificar webhookverify_webhook(body, headers, secret)verifyWebhook(body, headers, secret)Webhook::verify($body, $headers, $secret)CompenseWebhooks.Verify(body, headers, secret)webhook.Verify(body, header, secrets)
ConvenciónPythonJavaScript / TSPHP.NETGo
Nombressnake_casecamelCasecamelCasePascalCase + AsyncPascalCase
Parámetrosargumentos con nombreobjeto de opcionesargumentos con nombre (PHP 8)parámetros con nombre/opcionalesstruct *Params (o nil) + ...CallOption
AsincroníaCompenseClient y AsyncCompenseClienttodo Promisesíncronotodo Task con CancellationTokensíncrono con context.Context
Campos libresextra= / **fieldsextra / fieldsextra: / argumentos con nombre extraIReadOnlyDictionary<string, object?>Extra / Fields map[string]any
CLI compensesísí (npx compense)nonono

Cómo elegir #

  • Usa el SDK del lenguaje de tu sistema. Todos tienen la misma cobertura; no hay funciones exclusivas salvo la CLI (Python y JS) y el cliente asíncrono explícito de Python.
  • ¿Sin SDK para tu lenguaje? El contrato es OpenAPI 3.1: llama por HTTP siguiendo la referencia y aplica las reglas de Conceptos (idempotencia, reintentos y verificación de webhooks son las que más se olvidan).
  • ¿Varios lenguajes en tu entidad? Mezclarlos es seguro: hablan el mismo contrato y verifican las firmas de webhooks de forma idéntica (las pruebas usan vectores generados por el SDK de Python).

Código fuente #

Los repositorios son privados de Appiasoft; Compense da acceso de lectura en el onboarding. Cada uno trae su README (en inglés), una guía en español por módulo y ejemplos ejecutables.

SDKRepositorioGuías en españolEjemplos
PythonAppiasoft/compense-saas-sdk-pythonDocs/features/README
JavaScript / TSAppiasoft/compense-saas-sdk-jsdocs/examples/
PHPAppiasoft/compense-saas-sdk-phpdocs/examples/
.NETAppiasoft/compense-saas-sdk-dotnetdocs/modulos/examples/
GoAppiasoft/compense-saas-sdk-godocs/examples/