是否可以在 Android 免安装应用中进行应用内结算?

Is that possible to make in app billing in Android instant apps?

这是我的实现:

private IabHelper mIabHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mIabHelper = new IabHelper(this, GOOGLE_BASE64_KEY);
    mIabHelper.startSetup(this);
}

@Override
public void onIabSetupFinished(IabResult result) {
    if (result.isSuccess()){
        mIabHelper.queryInventoryAsync(true, this);
    } else {
        Log.e("test","onIabSetupFinished-result:"+result.getMessage());
    }
}

然后我得到了这个:

08-09 21:44:00.859 5839-5839/? D/IabHelper: IAB helper created.
08-09 21:44:00.859 5839-5839/? D/IabHelper: Starting in-app billing setup.
08-09 21:44:00.923 5839-5839/? D/IabHelper: Billing service connected.
08-09 21:44:00.925 5839-5839/? D/IabHelper: Checking for in-app billing 3 support.
08-09 21:44:00.934 17057-17069/? I/Finsky: [430] com.google.android.finsky.billing.iab.z.b(44): ...: Account from first account - [...]
08-09 21:44:00.937 17057-17069/? W/Finsky: [430] com.google.android.finsky.billing.iab.z.a(64): Package name ... does not match UID 99089
08-09 21:44:00.938 5839-5839/? E/test: onIabSetupFinished-result:Error checking for billing v3 support. (response: 5:Developer Error)

Google 即时应用尚不支持 Play Billing,但我们正在努力。

参考 Android Instant Apps policyandroid Instant Apps 开发者 必须使用 Google 支付 API 如果 Google Play 应用内结算不支持这些购买,并且开发者没有存档用户的付款信息。开发者必须为使用 Google 付款 API.

的用户收集任何新的或替代的付款信息

在他们的免安装应用中实现了Google支付API的开发者也可以提供纯线下支付,比如货到付款,或者在他们的免安装应用中存储礼品卡。

Play Billing Library

的更多更新

截至 2019 年 10 月 12 日撰写本文时,我发现我可以从我自己的游戏应用程序的 'instant' 版本进行应用内购买。我在网上或文档中找不到任何关于此的内容,所以我只好自己做实验。

当您在安装版中从您自己的应用程序进行应用程序内购买时,它会以 'test purchase' 的形式进行,实际上不会向您收费。 Google 在我开始从即时版本购买商品之前,Play 没有我的付款信息。不幸的是,在您自己的应用程序的即时版本中,您未被识别为开发人员,至少我不是,因此它要求提供付款信息并实际向您收费。这很烦人,因为它干扰了我的统计数据,并引发了一些问题,比如我是应该从开发者控制台给自己退款还是让 google 保留他们的折扣(退款请求会不会很糟糕?)。

我发现安装版和即时版的应用购买似乎是分开的。查询从每个版本中产生不同的结果。我希望即时购买能延续到安装版本。我的安装版本不是免费的,不管这有没有区别。我正在对此做进一步测试,但如果它不会继续下去,我将不得不删除应用内即时应用购买,以免让后来安装完整应用的玩家失望。

顺便说一下,摆脱试购是出了名的困难。即使当您卸载您的应用程序、离线并从 android studio 重新安装它时,库存查询也会找到您过去的购买,因为它存储在您的设备上。即使清除 Play 商店和应用程序本身的缓存也无法摆脱它。您必须在您的发行版本上有一个秘密按钮或类似按钮才能 'consume' 使用适当的代码测试购买。