}
};
private BillingClient billingClient = BillingClient.newBuilder(activity)
.setListener(purchasesUpdatedListener)
.enablePendingPurchases()
.build();
3、连接到Google Play
在发出Google Play结算请求之前,您必须先通过以下步骤建立与Google Play的连接:
调用newBuilder() 以创建的实例。 BillingClient 您还必须调用 setListener(),将传递给引用, PurchasesUpdatedListener 以接收有关您的应用发起的购买以及Google Play商店发起的购买的更新。
建立与Google Play的连接。设置过程是异步的,BillingClientStateListener 一旦客户端的设置完成并且可以发出进一步的请求,您就必须实现A 来接收回调。
覆盖 onBillingServiceDisconnected() 回调方法,并实施您自己的重试策略,以在客户端断开连接的情况下处理与Google Play的连接丢失。例如,BillingClient如果Google Play商店服务在后台更新,则可能会失去其连接。 在发出进一步的请求之前,BillingClient必须调用 startConnection()方法重新启动连接。
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingResponseCode.OK) {
// The BillingClient is ready. You can query purchases here.
}
}
@Override
public void onBillingServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
}
});
注意:强烈建议您实施自己的连接重试策略并覆盖该 onBillingServiceDisconnected() 方法。BillingClient执行任何方法时,请确保维护连接。
4、查询应用内商品详细信息
您在配置应用内商品时创建的唯一商品ID用于异步查询Google Play的应用内商品详细信息。要在Google Play中查询应用内商品详情,请致电 querySkuDetailsAsync()。调用此方法时,传递一个实例,SkuDetailsParams 该实例 指定产品ID字符串列表和一个SkuType。该SkuType可以是SkuType.INAPP一次性产品或SkuType.SUBS订阅费。
注意:要查询产品详细信息,您的应用将使用您在Google Play控制台中配置产品时定义的产品ID。
要处理异步操作的结果,还必须指定一个实现该SkuDetailsResponseListener 接口的侦听 器。然后onSkuDetailsResponse() ,您可以重写 以在查询结束时通知侦听器,如以下示例代码所示:
List skuList = new ArrayList<> ();
skuList.add(“premium_upgrade”);
skuList.add(“gas”);
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setS