Xử lý mã lỗi API Tính toàn vẹn của Play

Nếu ứng dụng đưa ra yêu cầu bằng API Tính toàn vẹn của Play và lệnh gọi không thành công, thì một mã lỗi sẽ được trả về. Loại mã lỗi được trả về tuỳ thuộc vào loại yêu cầu:

Chiến lược thử lại

Bạn nên sử dụng thuật toán thời gian đợi luỹ thừa cho các thao tác với Tính toàn vẹn của Play diễn ra ở chế độ nền và không ảnh hưởng đến trải nghiệm người dùng khi người dùng đang hoạt động.

Ví dụ: thuật toán này thích hợp để triển khai khi xác nhận giao dịch mua mới vì thao tác này có thể diễn ra ở chế độ nền và không cần xác nhận theo thời gian thực nếu có lỗi.

Sau lỗi đầu tiên, hãy bắt đầu với độ trễ ban đầu là 5 giây trước khi thử lại.

Triển khai chiến lược thử lại với số lần thử tối đa làm điều kiện thoát, sử dụng độ trễ tăng theo cấp số nhân mỗi lần (10 giây, 20 giây).

Trong các lần thử lại này, hãy kiểm tra kết nối mạng và tránh tình trạng quá tải thiết bị.

Nếu bạn tiếp tục thấy lỗi sau 3 lần thử lại, hãy xem kết quả như thể máy khách không vượt qua được tất cả các quy trình kiểm tra tính toàn vẹn. Có thể xảy ra lỗi vì một số lý do, bao gồm (nhưng không giới hạn ở): thiết bị quá tải, vấn đề về kết nối mạng hoặc do kẻ tấn công cố gắng gây lỗi.

Giá trị mã lỗi cho thư viện Java

IntegrityErrorCode StandardIntegrityErrorCode
-1 API_NOT_AVAILABLE API_NOT_AVAILABLE
-2 PLAY_STORE_NOT_FOUND PLAY_STORE_NOT_FOUND
-3 NETWORK_ERROR NETWORK_ERROR
-4 PLAY_STORE_ACCOUNT_NOT_FOUND
-5 APP_NOT_INSTALLED APP_NOT_INSTALLED
-6 PLAY_SERVICES_NOT_FOUND PLAY_SERVICES_NOT_FOUND
-7 APP_UID_MISMATCH APP_UID_MISMATCH
-8 TOO_MANY_REQUESTS TOO_MANY_REQUESTS
-9 CANNOT_BIND_TO_SERVICE CANNOT_BIND_TO_SERVICE
-10 NONCE_TOO_SHORT
-11 NONCE_TOO_LONG
-12 GOOGLE_SERVER_UNAVAILABLE GOOGLE_SERVER_UNAVAILABLE
-13 NONCE_IS_NOT_BASE64
-14 PLAY_STORE_VERSION_OUTDATED PLAY_STORE_VERSION_OUTDATED
-15 PLAY_SERVICES_VERSION_OUTDATED PLAY_SERVICES_VERSION_OUTDATED
-16 CLOUD_PROJECT_NUMBER_IS_INVALID CLOUD_PROJECT_NUMBER_IS_INVALID
-17 CLIENT_TRANSIENT_ERROR REQUEST_HASH_TOO_LONG
-18 CLIENT_TRANSIENT_ERROR
-19 INTEGRITY_TOKEN_PROVIDER_INVALID
-100 INTERNAL_ERROR INTERNAL_ERROR

Giá trị mã lỗi khác cho thư viện gốc

IntegrityErrorCode StandardIntegrityErrorCode
-100 INTEGRITY_INTERNAL_ERROR STANDARD_INTEGRITY_INTERNAL_ERROR
-101 INTEGRITY_INITIALIZATION_NEEDED STANDARD_INTEGRITY_INITIALIZATION_NEEDED
-102 INTEGRITY_INITIALIZATION_FAILED STANDARD_INTEGRITY_INITIALIZATION_FAILED
-103 INTEGRITY_INVALID_ARGUMENT STANDARD_INTEGRITY_INVALID_ARGUMENT

Mã lỗi có thể thử lại

Nguyên nhân của những lỗi này đôi khi là do các điều kiện tạm thời. Do đó, bạn nên thử lại lệnh gọi.

NETWORK_ERROR (Mã lỗi -3)

Lỗi này cho biết đã xảy ra sự cố kết nối mạng giữa thiết bị và hệ thống Play.

Giải pháp có thể áp dụng

Để khôi phục, hãy yêu cầu người dùng kiểm tra kết nối mạng và sử dụng các lần thử lại đơn giản hoặc thời gian đợi luỹ thừa, tuỳ thuộc vào thao tác đã kích hoạt lỗi.

Xem thêm

NETWORK_ERROR đối với các yêu cầu kiểu cũ.

TOO_MANY_REQUESTS (Mã lỗi -8)

Ứng dụng gọi đang gửi quá nhiều yêu cầu đến API và đã được điều tiết.

Giải pháp có thể áp dụng

  1. Yêu cầu tăng mức tối đa hằng ngày cho số lượng yêu cầu của bạn
  2. Hãy thử lại với thời gian đợi luỹ thừa.

Xem thêm

TOO_MANY_REQUESTS đối với các yêu cầu kiểu cũ.

GOOGLE_SERVER_UNAVAILABLE (Mã lỗi -12)

Lỗi máy chủ nội bộ Google không xác định.

Giải pháp có thể áp dụng

Hãy thử lại với thời gian đợi luỹ thừa. Bạn có thể cân nhắc báo lỗi nếu liên tục không thành công.

Xem thêm

GOOGLE_SERVER_UNAVAILABLE đối với các yêu cầu kiểu cũ.

CLIENT_TRANSIENT_ERROR (Mã lỗi -18)

Đã xảy ra lỗi tạm thời trên thiết bị khách.

Đối với các yêu cầu API thông thường, mã này được hỗ trợ kể từ phiên bản 1.3.0 của thư viện API Tính toàn vẹn của Play dành cho Kotlin và Java, Trình bổ trợ Tính toàn vẹn của Google Play dành cho Unity phiên bản 1.3.0 trở lên và SDK gốc của Play Core phiên bản 1.13.0 trở lên.

Giải pháp có thể áp dụng

Hãy thử lại với thời gian đợi luỹ thừa.

Xem thêm

CLIENT_TRANSIENT_ERROR đối với các yêu cầu kiểu cũ.

Lưu ý: Khi được báo cáo trong khi sử dụng yêu cầu API kiểu cũ, giá trị được trả về sẽ là -17.

INTERNAL_ERROR (Mã lỗi -100)

Lỗi nội bộ không xác định.

Giải pháp có thể áp dụng

Hãy thử lại với thời gian đợi luỹ thừa. Bạn có thể cân nhắc báo lỗi nếu liên tục không thành công.

Xem thêm

INTERNAL_ERROR đối với các yêu cầu kiểu cũ.

STANDARD_INTEGRITY_INTERNAL_ERROR (Mã lỗi -100)

Lỗi nội bộ không xác định.

Giải pháp có thể áp dụng

Hãy thử lại với thời gian đợi luỹ thừa. Bạn có thể cân nhắc báo lỗi nếu liên tục không thành công.

Xem thêm

Hãy xem INTEGRITY_INTERNAL_ERROR để biết các yêu cầu kiểu cũ.

STANDARD_INTEGRITY_INITIALIZATION_FAILED (Mã lỗi -102)

Đã xảy ra lỗi khi khởi chạy Standard Integrity API (API Tính toàn vẹn tiêu chuẩn).

Giải pháp có thể áp dụng

Hãy thử lại với thời gian đợi luỹ thừa. Bạn có thể cân nhắc báo lỗi nếu liên tục không thành công.

Xem thêm

Hãy xem INTEGRITY_INITIALIZATION_FAILED để biết các yêu cầu kiểu cũ.

Mã lỗi không thể thử lại

Bạn không thể thử lại theo cách tự động trong những trường hợp này. Tuy nhiên, việc thử lại theo cách thủ công có thể giúp ích nếu người dùng giải quyết tình trạng gây ra sự cố. Ví dụ: nếu người dùng cập nhật phiên bản Cửa hàng Play lên một phiên bản được hỗ trợ, thì họ có thể thử lại thao tác ban đầu.

API_NOT_AVAILABLE (Mã lỗi -1)

Phiên bản Cửa hàng Play được cài đặt trên thiết bị có thể đã cũ và không có sẵn API Tính toàn vẹn. Một khả năng khác là API Tính toàn vẹn chưa được bật trong Google Play Console.

Giải pháp có thể áp dụng

  • Đảm bảo rằng bạn đã bật API Tính toàn vẹn trong Google Play Console.
  • Yêu cầu người dùng cập nhật ứng dụng Cửa hàng Google Play.

Xem thêm

Hãy xem API_NOT_AVAILABLE để biết yêu cầu kiểu cũ.

PLAY_STORE_NOT_FOUND (Mã lỗi -2)

Không tìm thấy ứng dụng Cửa hàng Play chính thức trên thiết bị.

Giải pháp có thể áp dụng

Yêu cầu người dùng cài đặt hoặc bật Cửa hàng Google Play.

Xem thêm

Hãy xem PLAY_STORE_NOT_FOUND để biết yêu cầu kiểu cũ.

PLAY_STORE_ACCOUNT_NOT_FOUND (Mã lỗi -4)

Lưu ý: Thông tin này chỉ được báo cáo cho yêu cầu kiểu cũ thông qua IntegrityErrorCode.

Không tìm thấy tài khoản Cửa hàng Play trên thiết bị. Lưu ý rằng API Tính toàn vẹn của Play hiện hỗ trợ các yêu cầu chưa được xác thực. Mã lỗi này chỉ dùng cho những phiên bản Cửa hàng Play cũ không được hỗ trợ.

Giải pháp có thể áp dụng

Yêu cầu người dùng cập nhật và đăng nhập vào Cửa hàng Google Play.

APP_NOT_INSTALLED (Mã lỗi -5)

Chưa cài đặt được ứng dụng gọi. Đã xảy ra lỗi; có thể là do một cuộc tấn công.

Giải pháp có thể áp dụng

Không thể xử lý. Xem kết quả như thể máy khách không vượt qua được tất cả các quy trình kiểm tra tính toàn vẹn.

Xem thêm

Hãy xem APP_NOT_INSTALLED để biết yêu cầu kiểu cũ.

PLAY_SERVICES_NOT_FOUND (Mã lỗi -6)

Các dịch vụ Play không hoạt động hoặc cần được cập nhật.

Giải pháp có thể áp dụng

Yêu cầu người dùng cài đặt, cập nhật hoặc bật Dịch vụ Google Play.

Xem thêm

Hãy xem APP_NOT_INSTALLED để biết yêu cầu kiểu cũ.

APP_UID_MISMATCH (Mã lỗi -7)

UID (mã nhận dạng người dùng) của ứng dụng gọi không khớp với mã trong Trình quản lý gói.

Giải pháp có thể áp dụng

Không thể xử lý. Xem kết quả như thể máy khách không vượt qua được tất cả các quy trình kiểm tra tính toàn vẹn.

Xem thêm

Hãy xem APP_UID_MISMATCH để biết yêu cầu kiểu cũ.

CANNOT_BIND_TO_SERVICE (Mã lỗi -9)

Không liên kết được với dịch vụ trong Cửa hàng Play. Có thể là do một phiên bản Cửa hàng Play cũ được cài đặt trên thiết bị.

Giải pháp có thể áp dụng

Yêu cầu người dùng cập nhật Cửa hàng Google Play.

Xem thêm

Hãy xem CANNOT_BIND_TO_SERVICE để biết yêu cầu kiểu cũ.

NONCE_TOO_SHORT (Mã lỗi -10)

Lưu ý: Thông tin này chỉ được báo cáo cho yêu cầu kiểu cũ thông qua IntegrityErrorCode.

Độ dài của số chỉ dùng một lần quá ngắn. Số chỉ dùng một lần phải có kích thước tối thiểu là 16 byte trước khi mã hoá base64.

Giải pháp có thể áp dụng

Thử lại bằng một số chỉ dùng một lần dài hơn.

NONCE_TOO_LONG (Mã lỗi -11)

Lưu ý: Thông tin này chỉ được báo cáo cho yêu cầu kiểu cũ thông qua IntegrityErrorCode.

Độ dài của số chỉ dùng một lần quá dài. Độ dài của số chỉ dùng một lần phải nhỏ hơn 500 byte trước khi mã hoá base64.

Giải pháp có thể áp dụng

Thử lại với số chỉ dùng một lần ngắn hơn.

NONCE_IS_NOT_BASE64 (Mã lỗi -13)

Lưu ý: Thông tin này chỉ được báo cáo cho yêu cầu kiểu cũ thông qua IntegrityErrorCode.

Số chỉ dùng một lần không được mã hoá dưới dạng chuỗi base64 không đóng gói, an toàn trên web.

Giải pháp có thể áp dụng

Thử lại bằng số chỉ dùng một lần ở đúng định dạng.

PLAY_STORE_VERSION_OUTDATED (Mã lỗi -14)

Người dùng cần cập nhật ứng dụng Cửa hàng Google Play.

Giải pháp có thể áp dụng

Yêu cầu người dùng cập nhật Cửa hàng Google Play.

Xem thêm

Hãy xem PLAY_STORE_VERSION_OUTDATED để biết yêu cầu kiểu cũ.

PLAY_SERVICES_VERSION_OUTDATED (Mã lỗi -15)

Người dùng cần cập nhật Dịch vụ Google Play.

Giải pháp có thể áp dụng

Yêu cầu người dùng cập nhật Dịch vụ Google Play.

Xem thêm

Hãy xem PLAY_SERVICES_VERSION_OUTDATED để biết yêu cầu kiểu cũ.

CLOUD_PROJECT_NUMBER_IS_INVALID (Mã lỗi -16)

Số dự án trên đám mây được cung cấp là không hợp lệ.

Giải pháp có thể áp dụng

Dùng số Dự án trên đám mây của Dự án trên đám mây mà bạn đã bật API Tính toàn vẹn của Play.

Xem thêm

Hãy xem CLOUD_PROJECT_NUMBER_IS_INVALID để biết yêu cầu kiểu cũ.

REQUEST_HASH_TOO_LONG (Mã lỗi -17)

Lưu ý: Thông tin này chỉ được báo cáo khi sử dụng yêu cầu thông thường thông qua StandardIntegrityErrorCode.

requestHash đã cung cấp quá dài. Độ dài của requestHash phải dưới 500 ký tự.

Giải pháp có thể áp dụng

Hãy thử lại bằng một requestHash ngắn hơn.

INTEGRITY_TOKEN_PROVIDER_INVALID (Mã lỗi -19)

Lưu ý: Giá trị này chỉ được báo cáo cho yêu cầu thông thường thông qua StandardIntegrityErrorCode.

StandardIntegrityTokenProvider không hợp lệ. Mã lỗi này chỉ áp dụng cho các yêu cầu API thông thường, được hỗ trợ kể từ phiên bản thư viện 1.3.0 cho ngôn ngữ lập trình Kotlin và Java, Trình bổ trợ Tính toàn vẹn của Google Play dành cho Unity 1.3.0 trở lên và SDK gốc của Play Core phiên bản 1.13.0 trở lên.

Giải pháp có thể áp dụng

Hãy yêu cầu một trình cung cấp mã thông báo về tính toàn vẹn mới.

STANDARD_INTEGRITY_INITIALIZATION_NEEDED (Mã lỗi -101)

Chưa khởi chạy StandardIntegrityManager.

Giải pháp có thể áp dụng

Trước tiên, hãy gọi StandardIntegrityManager_init().

Xem thêm

Hãy xem INTEGRITY_INITIALIZATION_NEEDED để biết các Yêu cầu kiểu cũ

STANDARD_INTEGRITY_INVALID_ARGUMENT (Mã lỗi -103)

Đối số không hợp lệ được truyền tới API Tính toàn vẹn tiêu chuẩn.

Giải pháp có thể áp dụng

Thử lại với đối số chính xác.

Xem thêm

Hãy xem INTEGRITY_INVALID_ARGUMENT để biết các Yêu cầu kiểu cũ.