Ngày xuất bản: 2 tháng 12 năm 2020
Ngoài việc cho phép ứng dụng của bạn bán hàng hoá kỹ thuật số và gói thuê bao trên Cửa hàng Play, Google Play Billing còn cung cấp các công cụ để quản lý danh mục, giá và gói thuê bao, các báo cáo hữu ích cũng như quy trình thanh toán do Cửa hàng Play cung cấp mà người dùng đã quen thuộc. Đây là yêu cầu đối với các ứng dụng bán hàng hoá kỹ thuật số được phát hành trên Cửa hàng Play.
API Google Play Billing có thuật ngữ riêng và bao gồm các thành phần ứng dụng và phần phụ trợ. Phần này chỉ đề cập đến một phần nhỏ của API dành riêng cho việc sử dụng API Hàng hoá kỹ thuật số và Hoạt động đáng tin cậy trên web. Hãy nhớ đọc tài liệu về Google Play Billing và nắm được các khái niệm của tài liệu đó trước khi tích hợp vào ứng dụng chính thức.
Quy trình cơ bản
Để cung cấp hàng hoá kỹ thuật số thông qua Cửa hàng Play, hãy định cấu hình danh mục của bạn trên Cửa hàng Play và kết nối Cửa hàng Play làm phương thức thanh toán từ PWA.
Bạn có thể thực hiện việc này trong giao diện Cửa hàng Play như sau:
- Nhấp vào Sản phẩm trong trình đơn Play Console. Xem các sản phẩm và gói thuê bao hiện có trong ứng dụng.
- Nhấp vào Tạo sản phẩm để thêm sản phẩm mới.
- Thêm mã sản phẩm, tên, nội dung mô tả và giá. Tạo mã sản phẩm có ý nghĩa và dễ nhớ vì bạn sẽ cần đến mã này sau này. Bạn không thể thay đổi mã nhận dạng sau khi tạo.
- Nếu tạo một gói thuê bao, bạn cũng phải chỉ định một kỳ thanh toán. Bạn có thể liệt kê các lợi ích của gói thuê bao và thêm các tính năng, chẳng hạn như bản dùng thử miễn phí, giá ưu đãi, thời gian gia hạn và lựa chọn đăng ký lại.
- Nhấp vào Kích hoạt để cung cấp sản phẩm.
Nếu muốn, bạn có thể thêm sản phẩm bằng API Nhà phát triển Play.
Sau khi định cấu hình danh mục, bước tiếp theo là định cấu hình quy trình thanh toán từ PWA. Sử dụng kết hợp API Hàng hoá kỹ thuật số và API Yêu cầu thanh toán.
Tìm nạp giá sản phẩm bằng API Hàng hoá kỹ thuật số
Khi sử dụng Google Play Billing, hãy đảm bảo rằng giá hiển thị cho người dùng khớp với giá trong trang thông tin trên Cửa hàng Play. Không thể đồng bộ hoá các mức giá đó theo cách thủ công, vì vậy, API Hàng hoá kỹ thuật số cung cấp một cách để ứng dụng web truy vấn nhà cung cấp dịch vụ thanh toán cơ bản về giá:
// The SKU for the product, as defined in the Play Store interface
async function populatePrice(sku) {
try {
// Check if the Digital Goods API is supported by the browser.
if (window.getDigitalGoodsService) {
// The Digital Goods API can be supported by other Payments provider.
// In this case, we're retrieving the Google Play Billing provider.
const service =
await window.getDigitalGoodsService("https://play.google.com/billing");
// Fetch product details using the `getDetails()` method.
const details = await service.getDetails([sku]);
if (details.length === 0) {
console.log(`Could not get SKU: "${sku}".`);
return false;
}
// The details contain both the price and the currenncy.
item = details[0];
const value = item.price.value;
const currency = item.price.currency;
const formattedPrice = new Intl.NumberFormat(navigator.language, {
style: 'currency', currency: currency }).format(value);
// Display the price to the user.
document.getElementById("price").innerHTML = formattedPrice;
} else {
console.error("Could not get price for SKU \"" + sku + "\".");
}
} catch (error) {
console.log(error);
}
return false;
}
Bạn có thể phát hiện tính năng hỗ trợ cho API Hàng hoá kỹ thuật số bằng cách kiểm tra xem getDigitalGoodsService()
có trên đối tượng window
hay không.
Sau đó, hãy gọi window.getDigitalGoodsService()
với giá trị nhận dạng Google Play Billing làm tham số.
Thao tác này sẽ trả về một thực thể dịch vụ cho Google Play Billing và các nhà cung cấp khác có thể triển khai tính năng hỗ trợ cho API Hàng hoá kỹ thuật số và có các giá trị nhận dạng khác.
Cuối cùng, hãy gọi getDetails()
trên tham chiếu đến đối tượng Google Play Billing, truyền SKU cho mục dưới dạng tham số. Phương thức này trả về một đối tượng chi tiết chứa cả giá và đơn vị tiền tệ cho mặt hàng có thể hiển thị cho người dùng.
Bắt đầu quy trình mua
API Yêu cầu thanh toán hỗ trợ quy trình mua hàng trên web và cũng được dùng để tích hợp Google Play Billing. Hãy xem bài viết Cách hoạt động của API Yêu cầu thanh toán để tìm hiểu thêm nếu bạn mới sử dụng API Yêu cầu thanh toán.
Để sử dụng API với Google Play Billing, bạn cần thêm một phương thức thanh toán có phương thức được hỗ trợ là https://play.google.com/billing
.
Thêm SKU vào dữ liệu cho công cụ:
const supportedInstruments = [{
supportedMethods: "https://play.google.com/billing",
data: {
sku: sku
}
}];
Sau đó, hãy tạo một đối tượng PaymentRequest
như bình thường và sử dụng API như bình thường
const request = new PaymentRequest(supportedInstruments, details);
Xác nhận giao dịch mua
Sau khi giao dịch hoàn tất, hãy sử dụng API Hàng hoá kỹ thuật số để xác nhận giao dịch thanh toán. Đối tượng phản hồi từ PaymentRequest
chứa một mã thông báo mà bạn có thể sử dụng để xác nhận giao dịch:
const response = await request.show();
const token = response.details.token;
const service = await window.getDigitalGoodsService("https://play.google.com/billing");
await service.acknowledge(token, 'onetime');
API Hàng hoá kỹ thuật số và API Yêu cầu thanh toán không có thông tin về danh tính của người dùng. Do đó, bạn có thể liên kết giao dịch mua với người dùng trong phần phụ trợ và đảm bảo họ có quyền truy cập vào các mặt hàng đã mua. Khi liên kết giao dịch mua với người dùng, hãy nhớ lưu mã thông báo giao dịch mua, vì bạn có thể cần mã này để xác minh xem giao dịch mua đã bị huỷ hoặc hoàn tiền hay chưa, hoặc liệu gói thuê bao có còn hoạt động hay không. Hãy xem API Thông báo theo thời gian thực dành cho nhà phát triển và API Nhà phát triển Google Play vì các API này cung cấp các điểm cuối để xử lý những trường hợp đó trong phần phụ trợ của bạn.
Kiểm tra các quyền hiện có
Người dùng có thể đã sử dụng mã khuyến mãi hoặc có gói thuê bao sản phẩm của bạn. Để xác thực rằng người dùng có các quyền thích hợp, bạn có thể gọi lệnh listPurchases()
trên dịch vụ hàng hoá kỹ thuật số. Thao tác này sẽ trả về tất cả giao dịch mua mà khách hàng đã thực hiện trong ứng dụng của bạn. Đây cũng là nơi để xác nhận mọi giao dịch mua chưa được xác nhận để đảm bảo người dùng sử dụng đúng quyền của họ.
const purchases = await itemService.listPurchases();
for (p of purchases) {
if (!p.acknowledged) {
await itemService.acknowledge(p.purchaseToken, 'onetime');
}
}