Trước đây, trọng tải dành cho nhà phát triển được sử dụng cho nhiều mục đích như ngăn chặn lừa đảo và phân bổ giao dịch mua cho đúng người dùng. Với phiên bản Thư viện Google Play Billing 2.2 trở lên, các trường hợp sử dụng trước đây dựa vào trọng tải dành cho nhà phát triển hiện đã được hỗ trợ đầy đủ trong các phần khác của thư viện.
Với sự hỗ trợ này, chúng tôi đã ngừng sử dụng gói trọng tải dành cho nhà phát triển từ phiên bản 2.2 của Thư viện Google Play Billing. Các phương thức liên kết với trọng tải của nhà phát triển không còn được dùng trong phiên bản 2.2 nữa và đã bị xoá trong phiên bản 3.0. Xin lưu ý rằng ứng dụng có thể tiếp tục truy xuất trọng tải của nhà phát triển đối với các giao dịch mua được thực hiện bằng các phiên bản thư viện hoặc AIDL trước đó.
Để biết danh sách nội dung thay đổi chi tiết, hãy xem Ghi chú phát hành về Thư viện Google Play Billing phiên bản 2.2 và Ghi chú phát hành về Thư viện Google Play Billing phiên bản 3.0.
Xác minh giao dịch mua
Để đảm bảo giao dịch mua đáng tin cậy và không bị giả mạo hoặc phát lại, Google khuyến nghị nên
sử dụng mã thông báo giao dịch mua (được lấy từ phương thức
getPurchaseToken()
trong
Purchase
) cùng với API Nhà phát triển Google Play để xác minh giao dịch mua là đáng tin cậy.
Để biết thêm thông tin, hãy xem phần Chống gian lận và hành vi sử dụng sai mục đích.
Thuộc tính giao dịch mua
Nhiều ứng dụng và đặc biệt là trò chơi cần đảm bảo rằng một giao dịch mua được phân bổ chính xác cho nhân vật/hình đại diện trong trò chơi hoặc hồ sơ người dùng trong ứng dụng đã khởi tạo giao dịch mua. Kể từ Thư viện Google Play Billing 2.2, ứng dụng có thể truyền giá trị nhận dạng hồ sơ và tài khoản làm rối tới Google khi khởi chạy hộp thoại giao dịch mua và yêu cầu hoàn trả hàng khi bạn truy xuất một giao dịch mua.
Hãy sử dụng thông số
setObfuscatedAccountId()
và
setObfuscatedProfileId()
trong
BillingFlowParams
đồng thời truy xuất các thông số này bằng phương thức
getAccountIdentifiers()
trong đối tượng
Purchase
.
Liên kết siêu dữ liệu với giao dịch mua
Bạn nên lưu trữ siêu dữ liệu về giao dịch mua trên một máy chủ phụ trợ an toàn mà bạn duy trì. Siêu dữ liệu về giao dịch mua này phải được liên kết với mã mua hàng mà bạn nhận được bằng phương thức getPurchaseToken
trong đối tượng Purchase
. Bạn có thể duy trì dữ liệu này bằng cách truyền mã thông báo mua hàng và siêu dữ liệu
đến phần phụ trợ khi gọi PurchasesUpdatedListener
sau khi mua hàng thành công.
Để đảm bảo liên kết siêu dữ liệu trong trường hợp gián đoạn quy trình mua, Google khuyên bạn nên lưu trữ siêu dữ liệu trên máy chủ phụ trợ trước khi khởi chạy hộp thoại giao dịch mua và liên kết siêu dữ liệu đó với mã tài khoản của người dùng, SKU đang được mua và dấu thời gian hiện tại.
Nếu quy trình mua bị gián đoạn trước khi gọi PurchasesUpdatedListener
, ứng dụng sẽ phát hiện giao dịch mua này sau khi ứng dụng tiếp tục và gọi BillingClient.queryPurchasesAsync()
Sau đó, bạn có thể gửi các giá trị được truy xuất từ phương thức getPurchaseTime()
,getSku()
và getPurchaseToken()
của đối tượng Purchase
vào máy chủ phụ trợ để tra cứu siêu dữ liệu, liên kết siêu dữ liệu với mã thông báo giao dịch mua và tiếp tục xử lý giao dịch mua đó. Xin lưu ý rằng dấu thời gian bạn lưu trữ ban đầu sẽ không khớp chính xác với giá trị từ getPurchaseTime()
của đối tượng Purchase
. Do đó, bạn cần so sánh các dấu thời gian này ở mức ước chừng. Ví dụ: bạn có thể kiểm tra xem các giá trị có nằm trong một khoảng thời gian nhất định với nhau hay không.