在 Android 5.0.0 版本中,Google Play Billing Library 引入了新的数据结构来支持应用内购买。以下是常见的数据结构及其含义:
- SkuDetails - 商品详情
这个结构包含了应用内商品的详细信息,比如商品名称、价格、描述、货币单位等等。开发者可以通过查询 Google Play 的商品详情 API 获得 SkuDetails,然后显示在应用内供用户选择商品。
下面是一个简单的代码示例:
// 查询商品详情
List skus = new ArrayList<>();
skus.add("android.test.purchased");
SkuDetailsParams params = SkuDetailsParams.newBuilder()
.setType(BillingClient.SkuType.INAPP)
.setSkusList(skus)
.build();
billingClient.querySkuDetailsAsync(params, new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(BillingResult billingResult, List skuDetailsList) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
for (SkuDetails skuDetails : skuDetailsList) {
// 显示商品详情信息...
}
}
}
});
- Purchase - 购买记录
这个结构包含了用户在应用内购买商品的记录及其相关信息,比如订单 ID、商品 ID、购买时间、支付状态等等。开发者可以通过查询 Google Play 的购买历史 API 获得 Purchase,然后通过验证 Purchase 的签名等信息来确认购买有效性。
下面是一个简单的代码示例:
// 查询购买历史
Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases(BillingClient.SkuType.INAPP);
List purchaseList = purchasesResult.getPurchasesList();
for (Purchase purchase : purchaseList) {
// 验证购买签名等信息...
}
- BillingResult - 操作结果
这个结构表示一个操作的结果,包含了响应码和响应消息。开发者需要通过判断响应码来判断操作是否成功。
下面是一个简单的代码示例:
// 发起购买请求
billingClient.launchBillingFlow(activity, billingFlowParams)
.getResponseCode() == BillingClient.BillingResponseCode.OK;
除了上述三个结构外,Google Play Billing Library 还提供了其他相关