Google cung cấp xác thực biên nhận thông qua API nhà phát triển trên Google Play , trong API là hai điểm cuối mà bạn sẽ quan tâm nhất: Purchases.products: get và Purchases.subscriptions: lấy .
Purchases.products: get
có thể được sử dụng để xác minh giao dịch mua sản phẩm không tự động gia hạn, nơi Purchases.subscriptions: get
dành cho xác minh và xác minh lại đăng ký sản phẩm tự động gia hạn.
Để sử dụng một trong hai thiết bị đầu cuối bạn phải biết packageName
, productId
, purchaseToken
tất cả trong số này có thể được tìm thấy trong payload bạn nhận được trên mua. Bạn cũng cần một access_token
tài khoản mà bạn có thể nhận được bằng cách tạo tài khoản dịch vụ API của Google.
Để bắt đầu với tài khoản dịch vụ, trước tiên hãy truy cập trang cài đặt quyền truy cập API Bảng điều khiển dành cho nhà phát triển trên Google play và nhấp vào nút Tạo dự án mới:
Bây giờ bạn sẽ thấy một Dự án được liên kết mới và một vài phần mới, trong phần Tài khoản dịch vụ, hãy nhấp vào nút Tạo tài khoản dịch vụ.
Bạn sẽ thấy một hộp thông tin với hướng dẫn để tạo tài khoản dịch vụ của bạn. Nhấp vào liên kết đến Bảng điều khiển dành cho nhà phát triển của Google và một tab mới sẽ xuất hiện.
Bây giờ hãy nhấp vào Tạo ID khách hàng mới, chọn Tài khoản dịch vụ từ các tùy chọn và nhấp vào Tạo ID khách hàng.
Một tệp JSON sẽ tải xuống, đây là Mã thông báo web JSON của bạn mà bạn sẽ sử dụng để đổi lấy access_token
vì vậy hãy giữ an toàn.
Tiếp theo, chuyển các tab trở lại Bảng điều khiển dành cho nhà phát triển trên Google play và nhấp vào Xong trong hộp thông tin. Bạn sẽ thấy tài khoản dịch vụ mới của mình trong danh sách. Nhấp vào Cấp quyền truy cập bên cạnh email tài khoản dịch vụ.
Tiếp theo trong phần Chọn vai trò cho người dùng này, chọn Tài chính và nhấp vào Thêm người dùng.
Bây giờ bạn đã thiết lập tài khoản dịch vụ của mình và nó có tất cả các quyền truy cập cần thiết để thực hiện xác nhận biên nhận. Tiếp theo là trao đổi JWT của bạn để lấy access_token.
Các access_token
hết hạn sau một giờ trao đổi bạn rất cần một số mã máy chủ để xử lý này và Google đã cung cấp một số thư viện trong nhiều ngôn ngữ để xử lý này (danh sách không đầy đủ):
Tôi sẽ không đi vào chi tiết vì có rất nhiều tài liệu về cách sử dụng các thư viện này, nhưng tôi sẽ đề cập đến việc bạn muốn sử dụng https://www.googleapis.com/auth/androidpublisher
làm phạm vi OAuth2, client_email
từ JWT làm khóa issuer
và khóa công khai bạn có thể lấy từ private_key
và cụm mật khẩu notasecret
sẽ được sử dụng cho signing_key
.
Một khi bạn đã sẵn access_token
sàng để đi (ít nhất là trong giờ tới, lúc đó bạn sẽ muốn yêu cầu một cái mới theo quy trình tương tự trong đoạn trên).
Để kiểm tra trạng thái của giao dịch mua có thể tiêu thụ được (không tự động gia hạn), hãy thực hiện get
yêu cầu http tới:https://www.googleapis.com/androidpublisher/v2/applications/com.example.app/purchases/products/exampleSku/tokens/rojeslcdyyiapnqcynkjyyjh?access_token=your_access_token
Nếu bạn nhận được mã phản hồi 200 http, mọi thứ đã diễn ra như kế hoạch và giao dịch mua của bạn hợp lệ. 404 có nghĩa là mã thông báo của bạn không hợp lệ, vì vậy giao dịch mua rất có thể là một nỗ lực gian lận. 401 có nghĩa là mã thông báo truy cập của bạn không hợp lệ và 403 có nghĩa là tài khoản dịch vụ của bạn không có đủ quyền truy cập, hãy kiểm tra xem bạn đã bật Tài chính cho tài khoản truy cập trong Bảng điều khiển dành cho nhà phát triển trên Google Play chưa.
Phản hồi từ 200 sẽ giống như sau:
{
"kind": "androidpublisher#productPurchase",
"purchaseTimeMillis": long,
"purchaseState": integer,
"consumptionState": integer,
"developerPayload": string
}
Để biết giải thích về từng thuộc tính, hãy xem https://developers.google.com/android-publisher/api-ref/purchases/products .
Các đăng ký tương tự nhau tuy nhiên điểm cuối trông như thế này:
https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token?access_token=you_access_token
Và phản hồi phải chứa các thuộc tính sau:
{
"kind": "androidpublisher#subscriptionPurchase",
"startTimeMillis": long,
"expiryTimeMillis": long,
"autoRenewing": boolean
}
Xem https://developers.google.com/android-publisher/api-ref/purchases/subscriptions để biết mô tả sản phẩm và lưu ý rằng điều đó startTimeMillis
và expiryTimeMillis
sẽ có thể thay đổi tùy thuộc vào thời gian đăng ký.
Chúc bạn xác thực vui vẻ!