---
title: "Gestión de errores en Unity SDK"
description: "Gestión de errores en Unity SDK."
---

Todos los errores que devuelve el SDK son de tipo `AdaptyErrorCode`. Aquí tienes un ejemplo:
:::tip
**Activa los logs detallados antes de depurar.** La mayoría de los `AdaptyError`s envuelven un error subyacente de StoreKit, Play Billing, de red o de backend. Con los logs detallados activados (`Adapty.SetLogLevel(AdaptyLogLevel.Verbose, ...)` — ver [Logging](sdk-installation-unity#logging)), ese error subyacente se imprime en la consola, lo que normalmente te indica la causa real.
:::

:::important
Si estas soluciones no resuelven tu problema, consulta [Otros problemas](#other-issues) para ver los pasos que debes seguir antes de contactar con soporte y ayudarnos a asistirte de forma más eficiente.
:::
```csharp showLineNumbers
Adapty.MakePurchase(product, (profile, error) => {
  if (error != null && error.Code == Adapty.ErrorCode.PaymentCancelled) {
      // payment cancelled
  }
});
```
## Códigos de sistema StoreKit \{#system-storekit-codes\}
| Error | Código | Solución |
|-----|----|-----------|
| [unknown](https://developer.apple.com/documentation/storekit/skerror/code/unknown)                                                         | 0    | Código de error que indica que ocurrió un error desconocido o inesperado. <br/> Vuelve a intentarlo o consulta la sección [Otros problemas](#other-issues).                                                                                                                                                                                                                                                                                                                   |
| [clientInvalid](https://developer.apple.com/documentation/storekit/skerror/code/clientinvalid)                                             | 1    | Este código de error indica que el cliente no tiene permiso para realizar la acción solicitada.                                                                                                                                                                                                                                                                                                                                                           |
| [paymentCancelled](https://developer.apple.com/documentation/storekit/skerror/code/paymentcancelled)                                       | 2    | <p>Este código de error indica que el usuario canceló una solicitud de pago.</p><p>No se requiere ninguna acción, aunque a nivel de lógica de negocio puedes ofrecer un descuento al usuario o recordárselo más adelante.</p>                                                                                                                                                                                                                                             |
| [paymentInvalid](https://developer.apple.com/documentation/storekit/skerror/code/paymentinvalid)                                           | 3    | Este error indica que el App Store no reconoció uno de los parámetros del pago.                                                                                                                                                                                                                                                                                                                                                        |
| [paymentNotAllowed](https://developer.apple.com/documentation/storekit/skerror/code/paymentnotallowed)                                     | 4    | Este código de error indica que el usuario no tiene permiso para autorizar pagos.                                                                                                                                                                                                                                                                                                                                                                       |
| [storeProductNotAvailable](https://developer.apple.com/documentation/storekit/skerror/code/storeproductnotavailable)                       | 5    | Este código de error indica que el producto solicitado no está disponible en el store. <br/>  Prueba a reinstalar la app.                                                                                                                                                                                                                                                                                                                               |
| [cloudServicePermissionDenied](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicepermissiondenied)               | 6    | Este código de error indica que el usuario no ha permitido el acceso a la información del servicio en la nube.                                                                                                                                                                                                                                                                                                                                        |
| [cloudServiceNetworkConnectionFailed](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicenetworkconnectionfailed) | 7    | Este código de error indica que el dispositivo no pudo conectarse a la red.                                                                                                                                                                                                                                                                                                                                                                         |
| [cloudServiceRevoked](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicerevoked/)                                | 8    | Este código de error indica que el usuario ha revocado el permiso para usar este servicio en la nube.                                                                                                                                                                                                                                                                                                                                                           |
| [privacyAcknowledgementRequired](https://developer.apple.com/documentation/storekit/skerror/code/privacyacknowledgementrequired)           | 9    | Este código de error indica que el usuario aún no ha aceptado la política de privacidad de Apple.                                                                                                                                                                                                                                                                                                                                                            |
| [unauthorizedRequestData](https://developer.apple.com/documentation/storekit/skerror/code/unauthorizedrequestdata)                         | 10   | Este código de error indica que la app intenta usar una propiedad para la que no tiene el entitlement requerido.                                                                                                                                                                                                                                                                                                                                         |
| [invalidOfferIdentifier](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferidentifier)                           | 11   | <p>El [`identifier`](https://developer.apple.com/documentation/storekit/skpaymentdiscount/identifier) de la oferta no es válido. Por ejemplo, no has configurado una oferta con ese identificador en el App Store o la has revocado.</p><p>Asegúrate de configurar las ofertas deseadas en App Store Connect y de pasar un identificador de oferta válido.</p>                                                                                           |
| [invalidSignature](https://developer.apple.com/documentation/storekit/skerror/code/invalidsignature)                                       | 12   | Este código de error indica que la firma en un descuento de pago no es válida.                                                                                                                                                                                                                                                                                                                                                                    |
| [missingOfferParams](https://developer.apple.com/documentation/storekit/skerror/code/missingofferparams)                                   | 13   | Este código de error indica que faltan parámetros en un descuento de pago.                                                                                                                                                                                                                                                                                                                                                                        |
| [invalidOfferPrice](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferprice/)                                    | 14   | Este código de error indica que el precio especificado en App Store Connect ya no es válido. Las ofertas deben representar siempre un precio con descuento.                                                                                                                                                                                                                                                                                                                    |
## Códigos personalizados de Android \{#custom-android-codes\}
| Error | Código | Solución |
|-----|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| adaptyNotInitialized | 20 | Necesitas configurar correctamente el SDK de Adapty mediante el método `Adapty.activate`. Aprende cómo hacerlo [para Unity](sdk-installation-unity#activate-adapty-module-of-adapty-sdk). |
| productNotFound | 22 | Este error indica que el producto solicitado para la compra no está disponible en el store. |
| invalidJson | 23 | El JSON del paywall no es válido. Corrígelo en el Adapty Dashboard. Consulta el tema [Personalizar paywall con Remote Config](customize-paywall-with-remote-config) para obtener detalles sobre cómo solucionarlo. |
| currentSubscriptionToUpdateNotFoundInHistory | 24 | No se encuentra la suscripción original que debe renovarse. |
| pendingPurchase | 25 | Este error indica que el estado de la compra está pendiente en lugar de completado. Consulta la página [Manejo de transacciones pendientes](https://developer.android.com/google/play/billing/integrate#pending) en la documentación de Android Developer para más detalles. |
| billingServiceTimeout | 97 | Este error indica que la solicitud ha alcanzado el tiempo de espera máximo antes de que Google Play pueda responder. Esto puede deberse, por ejemplo, a un retraso en la ejecución de la acción solicitada por la llamada a la Play Billing Library. |
| featureNotSupported | 98 | La función solicitada no es compatible con el Play Store en el dispositivo actual. |
| billingServiceDisconnected | 99 | Este error fatal indica que la conexión de la app cliente al servicio de Google Play Store a través del `BillingClient` se ha interrumpido. |
| billingServiceUnavailable | 102 | Este error transitorio indica que el servicio de Google Play Billing no está disponible actualmente. En la mayoría de los casos, esto significa que hay un problema de conexión a la red en algún punto entre el dispositivo cliente y los servicios de Google Play Billing. |
| billingUnavailable | 103 | <p>Este error indica que se produjo un error de facturación del usuario durante el proceso de compra. Algunos ejemplos de cuándo puede ocurrir esto son:</p><p></p><p>1\. La app de Play Store en el dispositivo del usuario está desactualizada.</p><p>2. El usuario se encuentra en un país no compatible.</p><p>3. El usuario es un empleado de empresa y su administrador ha deshabilitado las compras para los usuarios.</p><p>4. Google Play no puede cargar el método de pago del usuario. Por ejemplo, la tarjeta de crédito del usuario puede haber expirado.</p><p>5. El usuario no ha iniciado sesión en la app de Play Store.</p> |
| developerError | 105 | Este es un error fatal que indica que estás usando una API de forma incorrecta. |
| billingError | 106 | Este es un error fatal que indica un problema interno en Google Play. |
| itemAlreadyOwned | 107 | El producto consumible ya ha sido comprado. |
| itemNotOwned | 108 | Este error indica que la acción solicitada sobre el artículo falló sin |
## Códigos personalizados de StoreKit \{#custom-storekit-codes\}
| Error | Código | Solución |
|-----|----|-----------|
| noProductIDsFound | 1000 | <p>Este error indica que ninguno de los productos que solicitaste en el paywall está disponible para su compra en el App Store, aunque estén listados allí. A veces este error puede aparecer junto con una advertencia `InvalidProductIdentifiers`. Si la advertencia aparece sin un error, puedes ignorarla sin problema.</p><p>Si encuentras este error, sigue los pasos de la sección [Solución para el error `noProductIDsFound` (código 1000)](InvalidProductIdentifiers-unity).</p> |
| productRequestFailed | 1002 | <p>No se pueden obtener los productos disponibles en este momento. Posible causa:</p><p></p><p>- Aún no se ha creado caché y no hay conexión a internet al mismo tiempo.</p> |
| cantMakePayments | 1003 | Las compras in-app no están permitidas en este dispositivo. Consulta la [guía](cantMakePayments-unity) de resolución de problemas. |
| noPurchasesToRestore | 1004 | Este error indica que Google Play no encontró la compra a restaurar. |
| cantReadReceipt | 1005 | <p>No hay ningún recibo válido disponible en el dispositivo. Esto puede ser un problema durante las pruebas en sandbox.</p><p>No se requiere ninguna acción, pero en términos de lógica de negocio, puedes ofrecer un descuento al usuario o recordárselo más adelante.</p> |
| productPurchaseFailed | 1006 | La compra del producto ha fallado. Este error envuelve un error subyacente de StoreKit — lee el error interno (o activa los logs detallados para verlo en la consola) para conocer el motivo real. El error interno suele ser uno de los códigos StoreKit del 0 al 14 de la tabla anterior — los más habituales son `paymentCancelled`, `paymentInvalid`, `paymentNotAllowed` o `invalidOfferPrice`. Si no puedes identificar un motivo concreto, prueba con un nuevo [perfil de sandbox](test-purchases-in-sandbox); si sigue fallando, contacta con el soporte de Apple. |
| refreshReceiptFailed | 1010 | Este error indica que no se recibió el recibo. Solo aplica a StoreKit 1. |
| receiveRestoredTransactionsFailed | 1011 | La restauración de la compra ha fallado. |
## Códigos de red personalizados \{#custom-network-codes\}
| Error                | Código | Solución                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---------------------|:-------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| notActivated   | 2002 | El SDK de Adapty no está activado. <br/> Suele ocurrir cuando una pantalla de carga o un hook de script temprano llama a métodos de Adapty antes de que `Adapty.Activate` termine. El síntoma es intermitente y puede no reproducirse en el editor porque los tiempos en un dispositivo real son distintos. Espera al callback de finalización de `Activate` antes de realizar cualquier otra llamada al SDK. Consulta [Orden de llamadas en el SDK de Unity](unity-sdk-call-order) para ver la secuencia completa. |
| badRequest     | 2003 | Solicitud incorrecta. <br/> Asegúrate de haber completado todos los pasos necesarios para [integrarte con App Store](app-store-connection-configuration).                                                                                                                                                                                                                                                                           |
| serverError    | 2004 | Error del servidor. <br/> Inténtalo de nuevo más tarde. Si el problema persiste, contacta con el equipo de soporte de Adapty.                                                                                                                                                                                                                                                                                                      |
| networkFailed  | 2005 | Este error indica problemas con la conexión de red en el dispositivo del usuario. <br/> Prueba a desactivar la VPN o a cambiar entre WiFi y datos móviles.                                                                                                                                                                                                                                                                   |
| decodingFailed | 2006 | Este error indica que la decodificación de la respuesta ha fallado. <br/> Revisa tu código y asegúrate de que los parámetros que envías son válidos. Por ejemplo, este error puede indicar que estás usando una API key inválida.                                                                                                                                                                                                                       |
| encodingFailed | 2009 | Este error indica que la codificación de la solicitud ha fallado.                                                                                                                                                                                                                                                                                                                                                                 |
| missingURL     | 2010 | La URL solicitada es nil.                                                                                                                                                                                                                                                                                                                                                                                                          |
| analyticsDisabled    | 3000 | No podemos gestionar eventos de analíticas porque las has [desactivado](analytics-integration#disabling-external-analytics-for-a-specific-customer).                                                                                                                                                                                                                                                                                         |
| wrongParam           | 3001 | Este error indica que alguno de los parámetros no es correcto. <br/> Si estás usando el Paywall Builder de Adapty y no puedes mostrar un paywall por este error, activa **Show on device** en el Paywall Builder.<br/> Otra posible causa es que la versión del archivo local de [respaldo](fallback-paywalls) no coincida con la versión del SDK. Descarga un archivo nuevo desde el dashboard. |
| activateOnceError    | 3005 | No es posible llamar al método `.activate` más de una vez.                                                                                                                                                                                                                                                                                                                                                                      |
| profileWasChanged    | 3006 | El perfil del usuario cambió durante la operación. <br/> Ocurre cuando se llama a un método mientras `Adapty.Identify` aún está en curso: la llamada en vuelo aterriza sobre un perfil que está a punto de ser reemplazado y el SDK la rechaza. Espera al callback de finalización de `Identify` antes de cualquier llamada de acción del usuario. Consulta [Orden de llamadas en el SDK de Unity](unity-sdk-call-order). |
| unsupportedData      | 3007 | Este error indica que el formato de datos no es compatible con el SDK.                                                                                                                                                                                                                                                                                                                                                             |
| persistingDataError  | 3100 | Se produjo un error al guardar los datos.                                                                                                                                                                                                                                                                                                                                                                                                 |
| fetchTimeoutError    | 3101 | Este error indica que la operación de obtención de datos ha superado el tiempo de espera.                                                                                                                                                                                                                                                                                                                                           |
## Otros problemas \{#other-issues\}

Si todavía no has encontrado una solución, los siguientes pasos pueden ser:
- **Actualizar el SDK a la última versión**: Siempre recomendamos actualizar a las últimas versiones del SDK, ya que son más estables e incluyen correcciones de problemas conocidos.
- **Contacta con el equipo de soporte u obtén ayuda de otros desarrolladores** en el [foro de soporte](https://adapty.featurebase.app/).
- **Contacta con el equipo de soporte en [support@adapty.io](mailto:support@adapty.io) o por el chat**: Si no puedes actualizar el SDK o la actualización no ha resuelto el problema, contacta con nuestro equipo de soporte. Ten en cuenta que tu problema se resolverá más rápido si [activas el registro detallado](sdk-installation-unity#logging) y compartes los registros con el equipo. También puedes adjuntar fragmentos de código relevantes.