Xử lý lỗi trong Unity 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 lỗi gốc từ StoreKit, Play Billing, mạng, hoặc backend. Khi bật verbose logs (Adapty.SetLogLevel(AdaptyLogLevel.Verbose, ...) — xem Logging), lỗi gốc đó sẽ được in ra console, thường cho 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 để 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.

using AdaptySDK;

Adapty.MakePurchase(product, (result, error) => {
  if (error != null && error.Code == AdaptyErrorCode.CantMakePayments) {
      // In-app purchases are not allowed on this device
  }
});
Note

Giao dịch mua mà người dùng hủy không phải là lỗi. MakePurchase báo cáo kết quả đó thông qua result: result.TypeAdaptyPurchaseResultType.UserCancelled — xem Thực hiện mua hàng.

Mã lỗi StoreKit hệ thống

LỗiGiải pháp
unknown0Mã lỗi này cho biết đã xảy ra lỗi không xác định hoặc không mong đợi.
Thử lại hoặc xem phần Các vấn đề khác.
clientInvalid1Mã lỗi này cho biết client không được phép thực hiện hành động đang cố gắng.
paymentCancelled2

Mã lỗi này cho biết người dùng đã hủy yêu cầu thanh toán.

Không cần thực hiện hành động nào, nhưng về mặt logic nghiệp vụ, bạn có thể đề xuất ưu đãi cho người dùng hoặc nhắc nhở họ sau.

paymentInvalid3Lỗi này cho biết một trong các tham số thanh toán không được App Store nhận dạng.
paymentNotAllowed4Mã lỗi này cho biết người dùng không được phép xác thực thanh toán.
storeProductNotAvailable5Mã 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.
Thử cài lại ứng dụng.
cloudServicePermissionDenied6Mã lỗi này cho biết người dùng chưa cho phép truy cập thông tin dịch vụ Cloud.
cloudServiceNetworkConnectionFailed7Mã lỗi này cho biết thiết bị không thể kết nối mạng.
cloudServiceRevoked8Mã 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.
privacyAcknowledgementRequired9Mã 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.
unauthorizedRequestData10Mã 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.
invalidOfferIdentifier11

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.

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 offer identifier hợp lệ.

invalidSignature12Mã lỗi này cho biết chữ ký trong payment discount không hợp lệ.
missingOfferParams13Mã lỗi này cho biết thiếu các tham số trong payment discount.
invalidOfferPrice14Mã lỗi này cho biết giá bạn đã chỉ định trong App Store Connect không còn hợp lệ nữa. Các ưu đãi luôn phải thể hiện mức giá giảm.

Mã lỗi Android tùy chỉnh

LỗiGiải pháp
adaptyNotInitialized20Bạ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 Unity.
productNotFound22Lỗ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.
invalidJson23JSON của paywall không hợp lệ. Hãy sửa nó trong Adapty Dashboard. Tham khảo chủ đề Tùy chỉnh paywall với Remote Config để biết cách khắc phục.
currentSubscriptionToUpdateNotFoundInHistory24Không tìm thấy gói đăng ký gốc cần gia hạn.
pendingPurchase25Lỗi này cho biết trạng thái mua hàng đang ở trạng thái chờ xử lý thay vì đã mua. Tham khảo trang Xử lý giao dịch đang chờ trong tài liệu Android Developer để biết thêm chi tiết.
billingServiceTimeout97Lỗi này cho biết yêu cầu đã đạt đến 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, ví dụ, sự chậm trễ trong quá trình thực thi hành động mà lệnh gọi Play Billing Library yêu cầu.
featureNotSupported98Tính năng được yêu cầu không được Play Store hỗ trợ trên thiết bị hiện tại.
billingServiceDisconnected99Lỗi nghiêm trọng này cho biết kết nối của ứng dụng client đến dịch vụ Google Play Store thông qua BillingClient đã bị ngắt.
billingServiceUnavailable102Lỗ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, điều này có nghĩa là có sự cố kết nối mạng ở đâu đó giữa thiết bị client và dịch vụ Google Play Billing.
billingUnavailable103

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. Các ví dụ khi điều này có thể xảy ra bao gồm:

1. Ứng dụng Play Store trên thiết bị của người dùng đã lỗi thời.

2. Người dùng đang ở quốc gia không được hỗ trợ.

3. Người dùng là người dùng doanh nghiệp và quản trị viên doanh nghiệp của họ đã vô hiệu hóa quyền mua hàng.

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ủa người dùng có thể đã hết hạn.

5. Người dùng chưa đăng nhập vào ứng dụng Play Store.

developerError105Đây là lỗi nghiêm trọng cho biết bạn đang sử dụng API không đúng cách.
billingError106Đây là lỗi nghiêm trọng cho biết có sự cố nội bộ với chính Google Play.
itemAlreadyOwned107Sản phẩm consumable đã được mua trước đó.
itemNotOwned108Lỗi này cho biết hành động được yêu cầu trên sản phẩm đã thất bại vì

Mã lỗi StoreKit tùy chỉnh

LỗiGiải pháp
noProductIDsFound1000

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ó thể mua được trong App Store, 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, bạn có thể bỏ qua an toàn.

Nếu gặp lỗi này, hãy làm theo các bước trong phần Khắc phục lỗi Code-1000 noProductIDsFound.

productRequestFailed1002

Không thể tải danh sách sản phẩm tại thời điểm này. Nguyên nhân có thể là:

- Chưa có cache nào được tạo và đồng thời không có kết nối internet.

cantMakePayments1003In-App purchase không được phép trên thiết bị này. Xem hướng dẫn khắc phục sự cố.
cantReadReceipt1005

Không có biên lai hợp lệ nào trên thiết bị. Đây có thể là sự cố trong quá trình kiểm tra sandbox.

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ể cung cấp ưu đãi cho người dùng hoặc nhắc lại sau.

productPurchaseFailed1006Mua sản phẩm thất bại. Lỗi này bao gồm lỗi StoreKit bên trong — hãy đọc lỗi bên trong (hoặc bật verbose logs để xem trong console) để biết nguyên nhân thực sự. Lỗi bên trong 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 không xác định được nguyên nhân cụ thể, hãy thử một hồ sơ sandbox mới; nếu vẫn thất bại, hãy liên hệ bộ phận hỗ trợ của Apple.
refreshReceiptFailed1010Lỗi này cho biết biên lai không được nhận. Chỉ áp dụng cho StoreKit 1.
fetchSubscriptionStatusFailed1020SDK không thể đọc trạng thái gói đăng ký từ cửa hàng.
Thử lại lệnh gọi, sau đó xem phần Các vấn đề khác.

Mã lỗi mạng tùy chỉnh

LỗiGiải pháp
notActivated2002Adapty SDK chưa được kích hoạt.
Thường gặp khi màn hình splash hoặc một hook script chạy 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 không ổn định và có thể không tái hiện trong editor vì thời điểm chạy trên thiết bị thực khác nhau. Hãy chờ callback hoàn thành của Activate trước khi thực hiện bất kỳ lệnh gọi SDK nào khác. Xem Thứ tự gọi trong Unity SDK để biết toàn bộ trình tự.
badRequest2003Yêu cầu không hợp lệ.
Hãy đả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.
serverError2004Lỗi máy chủ.
Thử lại sau một khoảng thời gian. Nếu sự cố vẫn chưa được giải quyết, hãy liên hệ với đội ngũ hỗ trợ Adapty.
networkFailed2005Lỗi này cho biết có vấn đề với kết nối mạng trên thiết bị của người dùng.
Thử tắt VPN hoặc chuyển từ mạng di động sang WiFi hoặc ngược lại.
decodingFailed2006Lỗi này cho biết việc giải mã phản hồi thất bại.
Kiểm tra lại code của bạn và đảm bảo các tham số bạn gửi là hợp lệ. Ví dụ, lỗi này có thể cho thấy bạn đang dùng API key không hợp lệ.
encodingFailed2009Lỗi này cho biết việc mã hóa yêu cầu thất bại.
analyticsDisabled3000Không thể xử lý các sự kiện analytics vì bạn đã tắt tính năng này.
wrongParam3001Lỗi này cho biết một số tham số của bạn không đúng.
Nếu bạn đang 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.
Một nguyên nhân khác có thể là phiên bản file fallback cục bộ không khớp với phiên bản SDK. Hãy tải file mới từ dashboard.
activateOnceError3005Không thể gọi phương thức .activate nhiều hơn một lần.
profileWasChanged3006Hồ sơ người dùng đã bị thay đổi trong quá trình thực hiện thao tác.
Đ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ẽ rơi vào một hồ sơ sắp bị thay thế và SDK từ chối nó. Hãy chờ callback hoàn thành của Identify trước khi thực hiện bất kỳ lệnh gọi hành động người dùng nào. Xem Thứ tự gọi trong Unity SDK.
unsupportedData3007Lỗi này cho biết định dạng dữ liệu không được SDK hỗ trợ.
fetchTimeoutError3101Lỗi này cho biết thao tác fetch đã hết thời gian chờ.
operationInterrupted9000Thao tác này đã bị hệ thống ngắt.
Hãy thử lại.

Các vấn đề khác

Nếu bạn vẫn chưa tìm được giải pháp, các bước tiếp theo có thể là:

  • 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 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ộng đồng nhà phát triển tại diễn đàn hỗ trợ.
  • Liên hệ đội hỗ trợ qua support@adapty.io hoặc qua chat: Nếu bạn chưa sẵn sàng nâng cấp SDK hoặ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 và chia sẻ logs với đội ngũ. Bạn cũng có thể đính kèm các đoạn code liên quan.