如需从应用发起购买请求,请从应用的主线程调用 launchBillingFlow() 方法。此方法接受对 BillingFlowParams 对象的引用,该对象包含通过调用 querySkuDetailsAsync() 获取的相关 SkuDetails 对象。如需创建 BillingFlowParams 对象,请使用 BillingFlowParams.Builder 类。BillingFlowParams ,请使用 BillingFlowParams.Builder 类:
// An activity reference from which the billing flow will be launched.
Activity activity = …;
// Retrieve a value for “skuDetails” by calling querySkuDetailsAsync().
BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
.setSkuDetails(skuDetails)
.build();
int responseCode = billingClient.launchBillingFlow(activity, billingFlowParams).getResponseCode();
// Handle the result.
launchBillingFlow() 方法会返回 BillingClient.BillingResponseCode 中列出的几个响应代码之一。请务必检查此结果,以确保在启动购买流程时没有错误。BillingResponseCode 为 OK 表示成功启动。
成功调用 launchBillingFlow() 后,系统会显示 Google Play 购买屏幕。如下图:
![](https://img-blog.csdnimg.cn/20210706104405291.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2c5ODQxNjA1NDc=,size_16,color_FFFFFF,
t_70)
Google Play 会调用 onPurchasesUpdated(),以将购买操作的结果传送给实现 PurchasesUpdatedListener接口的监听器。您可以在初始化客户端时使用 setListener() 方法指定监听器。
你必须实现 onPurchasesUpdated() 来处理可能的响应代码。以下示例展示了如何替换 onPurchasesUpdated():
@Override
void onPurchasesUpdated(BillingResult billingResult, List purchases) {
if (billingResult.getResponseCode() == BillingResponseCode.OK
&& purchases != null) {
for (Purchase purchase : purchases) {
handlePurchase(purchase);
}
} else if (billingResult.getResponseCode() == BillingResponseCode.USER_C