繁体   English   中英

Android in App Billing v3,如何安全地恢复购买?

[英]Android in app billing v3, how to restore purchases safely?

当用户购买产品时,我使用Web服务验证购买的产品,以防止受到重放攻击,我向购买产品添加了(即刻)开发人员有效负载。 它按预期工作。

但是如何恢复交易呢? 我可以从本地清单中获取签名的数据和签名以及所有其他信息(通过在IabHelper中调用queryPurchases()),但是我无法在任何地方设置新的开发人员有效负载,因此无法在Web服务上对其进行验证。

如何安全地还原交易?

帮助将不胜感激...

编辑:我应该坚持使用iab v2还原交易吗?

因此,据我所知,这是一个尚未解决的安全问题,损害了应用程序内计费API v3的安全性。 无法安全地(通过Web服务验证)在应用程序计费api v3中恢复购买。

在撰写本文时,Google Play计费库示例应用在查询购买的商品时会检索开发人员有效载荷以进行验证。 代码如下:

// Listener that's called when we finish querying the items and subscriptions we own
IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
    public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
        Log.d(TAG, "Query inventory finished.");

        .
        .
        .

        // Do we have the premium upgrade?
        Purchase premiumPurchase = inventory.getPurchase(SKU_PREMIUM);
        mIsPremium = (premiumPurchase != null && verifyDeveloperPayload(premiumPurchase));
        Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));

        .
        .
        .
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM