在 Flutter SDK 中处理错误

SDK 返回的每个错误都是 AdaptyErrorCode。以下是一个示例:

如果这些解决方案无法解决您的问题,请参阅其他问题,在联系支持之前按照步骤操作,以便我们更高效地为您提供帮助。

    try {
      final result = await adapty.makePurchase(product: product);
    } on AdaptyError catch (adaptyError) {
      if (adaptyError.code == AdaptyErrorCode.paymentCancelled) {
        // Cancelled
      }
    } catch (e) {
    }

系统 StoreKit 代码

错误代码解决方案
unknown0表示发生了未知或意外错误的错误代码。
请重试或查看其他问题部分。
clientInvalid1此错误代码表示客户端不被允许执行所尝试的操作。
paymentCancelled2

此错误代码表示用户取消了付款请求。

无需采取任何操作,但从业务逻辑角度,您可以向用户提供折扣或稍后提醒他们。

paymentInvalid3此错误表示某个支付参数未被 App Store 识别。
paymentNotAllowed4此错误代码表示用户不被允许授权付款。
storeProductNotAvailable5此错误代码表示所请求的产品在商店中不可用。
请尝试重新安装应用。
cloudServicePermissionDenied6此错误代码表示用户未允许访问云服务信息。
cloudServiceNetworkConnectionFailed7此错误代码表示设备无法连接到网络。
cloudServiceRevoked8此错误代码表示用户已撤销使用此云服务的权限。
privacyAcknowledgementRequired9此错误代码表示用户尚未确认 Apple 的隐私政策。
unauthorizedRequestData10此错误代码表示应用正在尝试使用其没有所需权限的属性。
invalidOfferIdentifier11

优惠 identifier 无效。例如,您未在 App Store 中设置具有该标识符的优惠,或者您已撤销该优惠。

请确保您在 AppStore Connect 中设置了所需的优惠,并传入有效的优惠标识符。

invalidSignature12此错误代码表示付款折扣中的签名无效。
missingOfferParams13此错误代码表示付款折扣中缺少参数。
invalidOfferPrice14此错误代码表示您在 App Store Connect 中指定的价格不再有效。优惠必须始终表示折扣价格。

自定义 Android 代码

错误代码解决方案
adaptyNotInitialized20您需要通过 Adapty.activate 方法正确配置 Adapty SDK。了解如何为 Flutter 配置
productNotFound22此错误表示请求购买的产品在商店中不可用。
invalidJson23付费墙 JSON 无效。请在 Adapty 看板中修复。有关如何修复的详细信息,请参阅使用远程配置自定义付费墙主题。
currentSubscriptionToUpdateNotFoundInHistory24未找到需要续订的原始订阅。
pendingPurchase25此错误表示购买状态为待处理而非已购买。有关详细信息,请参阅 Android 开发者文档中的处理待处理交易页面。
billingServiceTimeout97此错误表示请求在 Google Play 响应之前已达到最大超时时间。例如,这可能是由于 Play Billing Library 调用所请求的操作执行延迟所致。
featureNotSupported98当前设备上的 Play Store 不支持所请求的功能。
billingServiceDisconnected99此致命错误表示客户端应用通过 BillingClient 与 Google Play Store 服务的连接已断开。
billingServiceUnavailable102此瞬时错误表示 Google Play 计费服务当前不可用。在大多数情况下,这意味着客户端设备与 Google Play 计费服务之间的某处存在网络连接问题。
billingUnavailable103

此错误表示在购买过程中发生了用户计费错误。可能发生此情况的示例包括:

1. 用户设备上的 Play Store 应用已过时。

2. 用户所在的国家/地区不受支持。

3. 用户是企业用户,其企业管理员已禁止用户进行购买。

4. Google Play 无法向用户的支付方式收费。例如,用户的信用卡可能已过期。

5. 用户未登录 Play Store 应用。

developerError105这是一个致命错误,表示您不正确地使用了某个 API。
billingError106这是一个致命错误,表示 Google Play 本身存在内部问题。
itemAlreadyOwned107消耗型商品已被购买。
itemNotOwned108此错误表示对该商品请求的操作失败,因为

自定义 StoreKit 代码

错误代码解决方案
noProductIDsFound1000

此错误表示您在付费墙上请求的产品均无法在 App Store 中购买,即使它们已在那里列出。此错误有时可能伴随 InvalidProductIdentifiers 警告。如果仅出现警告而没有错误,请忽略它。

如果您遇到此错误,请按照修复 Code-1000 noProductIDsFound 错误部分中的步骤操作。

noProductsFound1001此错误表示请求购买的产品在商店中不可用。
productRequestFailed1002目前无法获取可用产品。
cantMakePayments1003此设备不允许应用内购买。请参阅故障排除指南
noPurchasesToRestore1004此错误表示 App Store 未找到可恢复的购买记录。
cantReadReceipt1005

设备上没有有效的收据。这在沙盒测试期间可能是个问题。

在沙盒中,在您实际进行购买之前不会有有效的收据文件,因此请确保在访问之前先进行一次购买。在沙盒测试期间,还请确保您在设备上使用有效的 Apple 沙盒账户登录。

productPurchaseFailed1006产品购买失败。这是与 Adapty 无关的 StoreKit 错误。请尝试使用新的沙盒账户。如果无法解决,请联系 Apple 支持。
missingOfferSigningParams1007

此错误表示 Adapty 集成或优惠存在问题。

有关如何设置的详细信息,请参阅配置 App Store 集成优惠

refreshReceiptFailed1010此错误表示未收到收据。仅适用于 StoreKit 1。
receiveRestoredTransactionsFailed1011购买恢复失败。

自定义网络代码

错误代码解决方案
notActivated2002Adapty SDK 未激活。您需要使用 Adapty.activate 方法正确配置 Adapty SDK
badRequest2003错误请求。
请确保您已完成与 App Store 集成所需的所有步骤。
serverError2004服务器错误。
请过一段时间后重试。如果问题未解决,请联系 Adapty 支持团队。
networkFailed2005此错误表示用户设备的网络连接存在问题。
请尝试禁用 VPN,或从蜂窝网络切换到 WiFi,或反之。
decodingFailed2006此错误表示响应解码失败。
请检查您的代码,确保您发送的参数有效。例如,此错误可能表示您正在使用无效的 API 密钥。
encodingFailed2009此错误表示请求编码失败。
analyticsDisabled3000由于您已选择退出,我们无法处理分析事件。
wrongParam3001此错误表示您的某些参数不正确。
如果您正在使用 Adapty 付费墙编辑工具且因此错误无法显示付费墙,请在付费墙编辑工具中启用 Show on device
另一个可能的原因是本地备用付费墙文件版本与 SDK 版本不匹配。请在看板中下载新文件。
activateOnceError3005不能多次调用 .activate 方法。
profileWasChanged3006操作期间用户画像发生了更改。
当您调用 identify 后,在 identify 成功之前调用另一个方法时,可能会发生此错误。为避免此问题,请等待 identify 成功后再调用其他方法。
unsupportedData3007此错误表示 SDK 不支持该数据格式。
persistingDataError3100保存数据时出错。
fetchTimeoutError3101此错误表示获取操作超时。

其他问题

如果您尚未找到解决方案,接下来可以:

  • 将 SDK 升级到最新版本:我们始终建议升级到最新的 SDK 版本,因为它们更稳定,并包含已知问题的修复。
  • 联系支持团队或在支持论坛中向其他开发者寻求帮助
  • 通过 [email protected] 或聊天联系支持团队:如果您还未准备好升级 SDK,或升级后问题仍未解决,请联系我们的支持团队。请注意,如果您启用详细日志记录并与团队共享日志,您的问题将得到更快速的解决。您还可以附上相关代码片段。