从多个帐户歧义中购买单个应用内商品

时间:2016-10-20 09:36:12

标签: android in-app-purchase in-app-billing

我在我的应用中遇到了一个关键边缘案例。我会试着解释一下情况。

我有一个应用程序,通过应用内购买提供一些优质内容。用户在其设备上有一个与Play商店相关联的电子邮件ID。

以下是该方案:

1)用户使用abc@gmail.com登录应用程序并购买优质内容。此人从未购买过高级内容,因此他的isPremiumPurchased旗帜为false

购买成功,我授予他优质内容并将标志更改为true。 按预期工作。

2)用户在我的应用中退出帐户,然后使用其他帐户(例如xyz@gmail.com)再次登录我的应用。他继续再次购买优质内容。此帐户是一个不同的帐户,因此他的" isPremiumPurchased" flag是false

此用户拥有与前一个帐户不同的帐户,对吗?但如果他试图购买,我总是得到"物品已经拥有" ,这也是预期的。该项目已由与相同Play商店地址关联的其他帐户购买,现在此帐户无法购买。

处理这种情况的理想方法应该是什么?我不应该允许第二个帐户访问高级内容。这是一个完全独立的帐户,不是吗?我甚至无法消耗该物品。我该如何解决这个问题

2 个答案:

答案 0 :(得分:2)

如果您想根据应用中使用的电子邮件区分购买,则购买必须与用于登录您应用的电子邮件相关联。我不确定,但您可以使用developerPayload参数。

<强>采购:

iabHelper.launchPurchaseFlow(activity, SKU1, RC_REQUEST, purchaseListener, current_email);

<强>验证

private boolean validateDeveloperPayload(Purchase purchaseDetails) {
        String payload = purchaseDetails.getDeveloperPayload();
        if(payload.equals(current_email)){
            return true;    
        }
        return false;
    }

答案 1 :(得分:1)

非常简单。在应用中,购买与Google Play商店中的主要帐户相关联。

说,您有一个与Google Play商店相关联的帐户myaccount@gmail.com。

  

以下是该方案:

     

1)用户使用abc@gmail.com登录应用程序并购买   优质内容。此人从未购买过优质内容   所以他的“isPremiumPurchased旗帜是假的。

     

购买成功,我授予他优质内容和   将标志更改为true。按预期工作。

优质内容购买与 myaccount@gmail.com 相关联,而不是 abc@gmail.com ,这是您应用的本地内容。

  

2)用户在我的应用中退出其帐户并登录到我的应用   再次使用不同的帐户,比如xyz@gmail.com。他接着说   再次购买优质内容。这个帐户是不同的   因此他的“isPremiumPurchased”标志是假的。

     

此用户拥有与前一个帐户不同的帐户,对吗?但如果   他试图购买,我总是得到“物品已经拥有”,这是   预计也是如此。

用户从您的应用退出而不是从Google Play注销。因此,当您检查优质商品的purchse状态时,Google Play会在购买时回复您。

  

该项目已由另一个帐户购买   与相同的Play商店地址相关联,现在是此帐户   无法购买。

请确保帐户的切换位置,是在您的应用或Google帐户中?

这是一个小小的简报;

下载&amp;使用帐户' xxx@gmail.com '从Play商店安装应用,购买商品。 在设备' yyy@gmail.com '中添加尚未完成商品购买的Google帐户。 将Playstore切换到帐户 yyy@gmail.com 和测试项目。 物品仅处于PURCHASE状态。

将应用程序下载的帐户视为主要帐户,以检查来自Play商店的购买详情

下载&amp;使用帐户' xxx@gmail.com '从Play商店安装应用,购买商品。 在设备' yyy@gmail.com '中添加尚未完成商品购买的Google帐户。 将Playstore切换到帐户 yyy@gmail.com 和测试项目。 商品仅处于 PURCHASE 状态。 从设备中删除帐户 xxx@gmail.com ,然后检查该项目。 商品处于未购买状态。

由于删除了“ xxx@gmail.com ”,因此主帐户为“ yyy@gmail.com ”。 现在不购买“ yyy@gmail.com ”的IN APP项目。