---
title: "Xử lý lỗi trong Flutter SDK"
description: "Xử lý lỗi trong Flutter SDK."
---

Mọi lỗi được SDK trả về đều là `AdaptyErrorCode`. Dưới đây là một ví dụ:
:::tip
**Bật verbose logs trước khi debug.** Hầu hết các `AdaptyError` đều bao gồm một lỗi cơ bản từ StoreKit, Play Billing, mạng hoặc backend. Khi bật verbose logs (`await Adapty().setLogLevel(AdaptyLogLevel.verbose)` — xem [Logging](sdk-installation-flutter#logging)), lỗi đó sẽ được in ra console, thường cho bạn biết nguyên nhân thực sự.
:::

:::important
Nếu các giải pháp này không khắc phục được vấn đề của bạn, hãy xem [Các vấn đề khác](#other-issues) để biết các bước cần thực hiện trước khi liên hệ hỗ trợ, giúp chúng tôi hỗ trợ bạn hiệu quả hơn.
:::
```javascript showLineNumbers
    try {
      final result = await adapty.makePurchase(product: product);
    } on AdaptyError catch (adaptyError) {
      if (adaptyError.code == AdaptyErrorCode.paymentCancelled) {
        // Cancelled
      }
    } catch (e) {
    }
```

## Mã StoreKit của hệ thống \{#system-storekit-codes\}
| Lỗi | Mã | Giải pháp |
|-----|----|-----------|
| [unknown](https://developer.apple.com/documentation/storekit/skerror/code/unknown)                                                         | 0    | Mã lỗi cho biết đã xảy ra lỗi không xác định hoặc không mong muốn. <br/> Thử lại hoặc xem phần [Các vấn đề khác](#other-issues).                                                                                                                                                                                                                                                                                                                   |
| [clientInvalid](https://developer.apple.com/documentation/storekit/skerror/code/clientinvalid)                                             | 1    | Mã lỗi này cho biết client không được phép thực hiện hành động đã thử.                                                                                                                                                                                                                                                                                                                                                                           |
| [paymentCancelled](https://developer.apple.com/documentation/storekit/skerror/code/paymentcancelled)                                       | 2    | <p>Mã lỗi này cho biết người dùng đã hủy yêu cầu thanh toán.</p><p>Không cần thực hiện thêm hành động nào, nhưng về mặt logic nghiệp vụ, bạn có thể đề xuất ưu đãi hoặc nhắc lại người dùng vào lúc khác.</p>                                                                                                                                                                                                                                             |
| [paymentInvalid](https://developer.apple.com/documentation/storekit/skerror/code/paymentinvalid)                                           | 3    | Lỗi này cho biết một trong các thông số thanh toán không được App Store nhận dạng.                                                                                                                                                                                                                                                                                                                                                        |
| [paymentNotAllowed](https://developer.apple.com/documentation/storekit/skerror/code/paymentnotallowed)                                     | 4    | Mã lỗi này cho biết người dùng không được phép ủy quyền thanh toán.                                                                                                                                                                                                                                                                                                                                                                       |
| [storeProductNotAvailable](https://developer.apple.com/documentation/storekit/skerror/code/storeproductnotavailable)                       | 5    | Mã lỗi này cho biết sản phẩm được yêu cầu không có sẵn trong cửa hàng. <br/>  Thử cài đặt lại ứng dụng.                                                                                                                                                                                                                                                                                                                                               |
| [cloudServicePermissionDenied](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicepermissiondenied)               | 6    | Mã lỗi này cho biết người dùng chưa cho phép truy cập vào thông tin dịch vụ Cloud.                                                                                                                                                                                                                                                                                                                                                        |
| [cloudServiceNetworkConnectionFailed](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicenetworkconnectionfailed) | 7    | Mã lỗi này cho biết thiết bị không thể kết nối với mạng.                                                                                                                                                                                                                                                                                                                                                                                         |
| [cloudServiceRevoked](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicerevoked/)                                | 8    | Mã lỗi này cho biết người dùng đã thu hồi quyền sử dụng dịch vụ cloud này.                                                                                                                                                                                                                                                                                                                                                           |
| [privacyAcknowledgementRequired](https://developer.apple.com/documentation/storekit/skerror/code/privacyacknowledgementrequired)           | 9    | Mã lỗi này cho biết người dùng chưa xác nhận chính sách quyền riêng tư của Apple.                                                                                                                                                                                                                                                                                                                                                            |
| [unauthorizedRequestData](https://developer.apple.com/documentation/storekit/skerror/code/unauthorizedrequestdata)                         | 10   | Mã lỗi này cho biết ứng dụng đang cố sử dụng một thuộc tính mà nó không có quyền truy cập cần thiết.                                                                                                                                                                                                                                                                                                                                         |
| [invalidOfferIdentifier](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferidentifier)                           | 11   | <p>[`identifier`](https://developer.apple.com/documentation/storekit/skpaymentdiscount/identifier) của ưu đãi không hợp lệ. Ví dụ: bạn chưa thiết lập ưu đãi với identifier đó trong App Store, hoặc bạn đã thu hồi ưu đãi.</p><p>Hãy đảm bảo bạn đã thiết lập các ưu đãi mong muốn trong AppStore Connect và truyền vào một identifier ưu đãi hợp lệ.</p>                                                                                           |
| [invalidSignature](https://developer.apple.com/documentation/storekit/skerror/code/invalidsignature)                                       | 12   | Mã lỗi này cho biết chữ ký trong payment discount không hợp lệ.                                                                                                                                                                                                                                                                                                                                                                                    |
| [missingOfferParams](https://developer.apple.com/documentation/storekit/skerror/code/missingofferparams)                                   | 13   | Mã lỗi này cho biết payment discount bị thiếu các thông số.                                                                                                                                                                                                                                                                                                                                                                        |
| [invalidOfferPrice](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferprice/)                                    | 14   | Mã lỗi này cho biết mức giá bạn đã chỉ định trong App Store Connect không còn hợp lệ. Các ưu đãi phải luôn đại diện cho mức giá đã được giảm.                                                                                                                                                                                                                                                                                                                    |
## Mã Android tùy chỉnh \{#custom-android-codes\}
| Lỗi | Mã | Giải pháp |
|-----|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| adaptyNotInitialized | 20 | Bạn cần cấu hình Adapty SDK đúng cách bằng phương thức `Adapty.activate`. Tìm hiểu cách thực hiện [cho Flutter](sdk-installation-flutter#activate-adapty-module-of-adapty-sdk). |
| productNotFound | 22 | Lỗi này cho biết sản phẩm được yêu cầu mua không có sẵn trong cửa hàng. |
| invalidJson | 23 | JSON của paywall không hợp lệ. Hãy sửa lại trong Adapty Dashboard. Tham khảo chủ đề [Tùy chỉnh paywall với remote config](customize-paywall-with-remote-config) để biết cách khắc phục. |
| currentSubscriptionToUpdateNotFoundInHistory | 24 | Không tìm thấy gói đăng ký gốc cần được gia hạn. |
| pendingPurchase | 25 | Lỗi này cho biết trạng thái mua hàng đang ở trạng thái chờ xử lý thay vì đã mua thành công. Tham khảo trang [Xử lý giao dịch đang chờ](https://developer.android.com/google/play/billing/integrate#pending) trong tài liệu Android Developer để biết thêm chi tiết. |
| billingServiceTimeout | 97 | Lỗi này cho biết yêu cầu đã vượt quá thời gian chờ tối đa trước khi Google Play có thể phản hồi. Nguyên nhân có thể do chậm trễ trong quá trình thực thi hành động được yêu cầu bởi lệnh gọi Play Billing Library. |
| featureNotSupported | 98 | Tính năng được yêu cầu không được Play Store hỗ trợ trên thiết bị hiện tại. |
| billingServiceDisconnected | 99 | Lỗi nghiêm trọng này cho biết kết nối của ứng dụng khách đến dịch vụ Google Play Store qua `BillingClient` đã bị ngắt. |
| billingServiceUnavailable | 102 | Lỗi tạm thời này cho biết dịch vụ Google Play Billing hiện không khả dụng. Trong hầu hết các trường hợp, nguyên nhân là do sự cố kết nối mạng ở đâu đó giữa thiết bị khách và dịch vụ Google Play Billing. |
| billingUnavailable | 103 | <p>Lỗi này cho biết đã xảy ra lỗi thanh toán của người dùng trong quá trình mua hàng. Một số trường hợp có thể xảy ra:</p><p></p><p>1\. Ứng dụng Play Store trên thiết bị của người dùng đã lỗi thời.</p><p>2. Người dùng đang ở quốc gia không được hỗ trợ.</p><p>3. Người dùng là tài khoản doanh nghiệp và quản trị viên đã tắt tính năng mua hàng.</p><p>4. Google Play không thể tính phí phương thức thanh toán của người dùng. Ví dụ: thẻ tín dụng có thể đã hết hạn.</p><p>5. Người dùng chưa đăng nhập vào ứng dụng Play Store.</p> |
| developerError | 105 | Đây là lỗi nghiêm trọng cho biết bạn đang sử dụng API không đúng cách. |
| billingError | 106 | Đây là lỗi nghiêm trọng cho biết có vấn đề nội bộ với chính Google Play. |
| itemAlreadyOwned | 107 | Sản phẩm consumable đã được mua trước đó. |
| itemNotOwned | 108 | Lỗi này cho biết hành động được yêu cầu trên mặt hàng đã thất bại vì |
## Mã StoreKit tùy chỉnh \{#custom-storekit-codes\}
| Lỗi                                                                                               | Mã | Giải pháp                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|-----------------------------------------------------------------------------------------------------|------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| noProductIDsFound                                                                                   | 1000 | <p>Lỗi này cho biết không có sản phẩm nào bạn yêu cầu trên paywall có sẵn để mua trong App Store, mặc dù chúng đã được liệt kê ở đó. Lỗi này đôi khi đi kèm với cảnh báo `InvalidProductIdentifiers`. Nếu cảnh báo xuất hiện mà không có lỗi, hãy bỏ qua nó.</p><p>Nếu bạn gặp lỗi này, hãy làm theo các bước trong phần [Cách khắc phục lỗi Code-1000 `noProductIDsFound`](InvalidProductIdentifiers-flutter).</p> |
| noProductsFound                                                                                     | 1001 | Lỗi này cho biết sản phẩm được yêu cầu mua không có sẵn trong cửa hàng.                                                                                                                                                                                                                                                                                                                                                         |
| productRequestFailed                                                                                | 1002 | Không thể tải danh sách sản phẩm hiện có vào lúc này.                                                                                                                                                                                                                                                                                                                                                                                                   |
| cantMakePayments                                                                                    | 1003 | Không cho phép in-app purchase trên thiết bị này. Xem [hướng dẫn](cantMakePayments-flutter) khắc phục sự cố.                                                                                                                                                                                                                                                                                                                                                 |
| noPurchasesToRestore                                                                                | 1004 | Lỗi này cho biết App Store không tìm thấy giao dịch mua nào để khôi phục.                                                                                                                                                                                                                                                                                                                                                                       |
| [cantReadReceipt](https://developer.apple.com/documentation/storekit/skerror/code/paymentcancelled) | 1005 | <p>Không có receipt hợp lệ trên thiết bị. Điều này có thể xảy ra khi kiểm thử trong sandbox.</p><p>Trong sandbox, bạn sẽ không có file receipt hợp lệ cho đến khi thực sự thực hiện một giao dịch mua, vì vậy hãy đảm bảo bạn đã mua ít nhất một lần trước khi truy cập nó. Khi kiểm thử trong sandbox, cũng hãy đảm bảo bạn đã đăng nhập trên thiết bị bằng tài khoản Apple sandbox hợp lệ.</p>                                               |
| productPurchaseFailed                                                                               | 1006 | Mua sản phẩm thất bại. Lỗi này bọc một lỗi StoreKit bên dưới — hãy đọc lỗi được bọc đó (hoặc bật verbose logs để xem trong console) để biết lý do thực sự. Lỗi được bọc thường là một trong các mã StoreKit 0–14 trong bảng trên — phổ biến nhất là `paymentCancelled`, `paymentInvalid`, `paymentNotAllowed`, hoặc `invalidOfferPrice`. Nếu bạn không xác định được nguyên nhân cụ thể, hãy thử [sandbox profile](test-purchases-in-sandbox) mới; nếu vẫn thất bại, hãy liên hệ bộ phận hỗ trợ của Apple. |
| missingOfferSigningParams                                                                           | 1007 | <p>Lỗi này cho biết có vấn đề với tích hợp Adapty hoặc với các ưu đãi.</p><p>Tham khảo [Cấu hình tích hợp App Store](app-store-connection-configuration) và [Ưu đãi](offers) để biết cách thiết lập chúng.</p>                                                                                                                                                                                                                      |
| refreshReceiptFailed                                                                                | 1010 | Lỗi này cho biết receipt không được nhận. Chỉ áp dụng cho StoreKit 1.                                                                                                                                                                                                                                                                                                                                                              |
| receiveRestoredTransactionsFailed                                                                   | 1011 | Khôi phục giao dịch mua thất bại.                                                                                                                                                                                                                                                                                                                                                                                                                        |
## Mã lỗi mạng tùy chỉnh \{#custom-network-codes\}
| Lỗi                | Mã | Giải pháp                                                                                                                                                                                                                                                                                                                                                                                                                        |
| :------------------- | :--- |:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| notActivated   | 2002 | Adapty SDK chưa được kích hoạt. <br/> Thường gặp nhất khi màn hình splash hoặc một UI hook sớm gọi các phương thức Adapty trước khi `Adapty().activate` hoàn tất. Triệu chứng này xảy ra không nhất quán và có thể không tái hiện trên emulator vì thời gian thực thi trên thiết bị thật khác nhau. Hãy `await` Future của `activate` trước khi lên lịch bất kỳ lệnh gọi SDK nào khác. Xem [Thứ tự gọi trong Flutter SDK](flutter-sdk-call-order) để biết toàn bộ trình tự.                                                                                                                                                                                                                                                                                                                    |
| badRequest     | 2003 | Yêu cầu không hợp lệ. <br/> Đảm bảo bạn đã hoàn thành tất cả các bước cần thiết để [tích hợp với App Store](app-store-connection-configuration).                                                                                                                                                                                                                                                                                           |
| serverError    | 2004 | Lỗi máy chủ. <br/> Thử lại sau một khoảng thời gian. Nếu vấn đề vẫn chưa được giải quyết, hãy liên hệ với đội ngũ hỗ trợ Adapty.                                                                                                                                                                                                                                                                                                                      |
| networkFailed  | 2005 | Lỗi này cho biết có sự cố với kết nối mạng trên thiết bị của người dùng. <br/> Hãy thử tắt VPN hoặc chuyển từ mạng di động sang WiFi hoặc ngược lại.                                                                                                                                                                                                                                                                   |
| decodingFailed | 2006 | Lỗi này cho biết quá trình giải mã phản hồi đã thất bại. <br/> Kiểm tra lại code của bạn và đảm bảo rằng các tham số bạn gửi là hợp lệ. Ví dụ, lỗi này có thể cho biết bạn đang sử dụng API key không hợp lệ.                                                                                                                                                                                                                       |
| encodingFailed | 2009 | Lỗi này cho biết quá trình mã hóa yêu cầu đã thất bại.                                                                                                                                                                                                                                                                                                                                                                                 |
| analyticsDisabled    | 3000 | Chúng tôi không thể xử lý các sự kiện analytics vì bạn đã [tắt tính năng này](analytics-integration#disabling-external-analytics-for-a-specific-customer).                                                                                                                                                                                                                                                                                         |
| wrongParam           | 3001 | Lỗi này cho biết một số tham số của bạn không đúng. <br/> Nếu bạn đang sử dụng Adapty paywall builder và không thể hiển thị paywall do lỗi này, hãy bật **Show on device** trong paywall builder.<br/> Một nguyên nhân khác có thể là phiên bản file [fallback](fallback-paywalls) cục bộ không khớp với phiên bản SDK. Hãy tải file mới trong dashboard. |
| activateOnceError    | 3005 | Không thể gọi phương thức `.activate` nhiều hơn một lần.                                                                                                                                                                                                                                                                                                                                                                      |
| profileWasChanged    | 3006 | Hồ sơ người dùng đã thay đổi trong quá trình thực hiện thao tác. <br/> Điều này xảy ra khi một phương thức được gọi trong khi `Adapty().identify` vẫn đang chạy — lệnh gọi đang thực thi sẽ tác động lên một hồ sơ sắp bị thay thế và SDK sẽ từ chối nó. Luôn `await` `identify` trước bất kỳ lệnh gọi hành động người dùng nào. Xem [Thứ tự gọi trong Flutter SDK](flutter-sdk-call-order).                                                                                                                                                                                          |
| unsupportedData      | 3007 | Lỗi này cho biết định dạng dữ liệu không được SDK hỗ trợ.                                                                                                                                                                                                                                                                                                                                                             |
| persistingDataError  | 3100 | Đã xảy ra lỗi khi lưu dữ liệu.                                                                                                                                                                                                                                                                                                                                                                                                 |
| fetchTimeoutError    | 3101 | Lỗi này cho biết thao tác tải dữ liệu đã hết thời gian chờ.                                                                                                                                                                                                                                                                                                                                                           |
## Vấn đề khác \{#other-issues\}

Nếu bạn vẫn chưa tìm được giải pháp, hãy thử các bước tiếp theo sau:
- **Nâng cấp SDK lên phiên bản mới nhất**: Chúng tôi luôn khuyến nghị nâng cấp lên các phiên bản SDK mới nhất vì chúng ổn định hơn và bao gồm các bản sửa lỗi đã biết.
- **Liên hệ đội hỗ trợ hoặc nhận trợ giúp từ các nhà phát triển khác** trong [diễn đàn hỗ trợ](https://adapty.featurebase.app/).
- **Liên hệ đội hỗ trợ qua [support@adapty.io](mailto:support@adapty.io) hoặc qua chat**: Nếu bạn chưa sẵn sàng nâng cấp SDK hoặc việc nâng cấp không giải quyết được vấn đề, hãy liên hệ đội hỗ trợ của chúng tôi. Lưu ý rằng vấn đề của bạn sẽ được giải quyết nhanh hơn nếu bạn [bật verbose logging](sdk-installation-flutter#logging) và chia sẻ log với đội nhóm. Bạn cũng có thể đính kèm các đoạn code liên quan.