diff --git a/sdk-license/src/main/java/com/xuqm/sdk/license/LicenseSDK.kt b/sdk-license/src/main/java/com/xuqm/sdk/license/LicenseSDK.kt index 2635886..4126b39 100644 --- a/sdk-license/src/main/java/com/xuqm/sdk/license/LicenseSDK.kt +++ b/sdk-license/src/main/java/com/xuqm/sdk/license/LicenseSDK.kt @@ -15,6 +15,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import retrofit2.HttpException object LicenseSDK { @@ -147,10 +148,12 @@ object LicenseSDK { persistStatus(STATUS_DENIED) return@withContext LicenseResult.Error(result.data?.message ?: "Registration denied") } catch (e: Exception) { - // Network error: use cached status if available - if (cachedStatus == STATUS_OK) { + // HTTP errors (4xx/5xx) are explicit server rejections — never fall back to cache. + // Only genuine network errors (IOException, timeout) allow the offline cache path. + if (e !is HttpException && cachedStatus == STATUS_OK) { return@withContext LicenseResult.Success("Offline - using cached status") } + persistStatus(STATUS_DENIED) return@withContext LicenseResult.Error(e.message ?: "Network error") } }