使用 OpenIab 进行 Amazon InApp 测试

Posted

技术标签:

【中文标题】使用 OpenIab 进行 Amazon InApp 测试【英文标题】:Amazon InApp testing using OpenIab 【发布时间】:2014-01-11 18:58:48 【问题描述】:

我正在尝试为 android 应用程序实现应用内购买。因此,为了支持各种应用商店(即三星、Google Play、亚马逊等),我正在使用来自enter link description here的 OpenIab

我已成功将OpenIab 用于 Google Play 商店。

但是,对于Amazon,我无法测试 InApp 购买。 我想使用亚马逊 SDK 测试器测试亚马逊购买。为此,我创建了amazon.sdktester.json 并放置在/sdcard/amazon.sdktester.json

现在,像往常一样,我正在执行以下步骤

String base64EncodedPublicKey = "xxxxxxxx";

Map<String, String> storeKeys = new HashMap<String, String>();
        storeKeys.put(OpenIabHelper.NAME_GOOGLE, base64EncodedPublicKey);
OpenIabHelper helper= new OpenIabHelper(this, storeKeys);
        helper.startSetup(new IabHelper.OnIabSetupFinishedListener() 

            @Override
            public void onIabSetupFinished(IabResult result) 
                // TODO Auto-generated method stub

                if (result.isSuccess()) 
                    System.out.println("Successfully Setup finished");
                
                else 
                    System.out.println("Failed to setup IAB"+result.getMessage());
                

            
        );

现在,IabSetup 正在失败,即 result.isSuccess() 正在返回 false

但是,如果我使用IAP API,那么Amazon SDK tester 会完美启动。

所以,我的问题是,如何使用带有OpenIab 的 Amazon SDK 测试器,即如何使用 OpenIab 测试 Amazon InApp 购买。

【问题讨论】:

【参考方案1】:

这是因为 OpenIAB 必须选择合适的商店来路由购买。 OpenIAB 仅在从亚马逊商店找到应用程序附带的特殊属性时才会将购买路由到亚马逊。

要通过 Amazon 强制 OpenIAB 工作,请使用以下方法:

1) 如果你使用 OpenIAB.jar 不想处理源代码,请使用如下所示的构造函数 OpenIABHelper(context, Options):

    Options opts = new Options();
    opts.storeKeys = new HashMap<String, String>();
    opts.availableStores = new ArrayList<Appstore>();
    opts.availableStores.add(new AmazonAppstore(context) 
        public boolean isBillingAvailable(String packageName) 
            return true;
        
    );
    mHelper = new OpenIabHelper(context, opts);

此代码应仅用于测试目的。确保不要将其发送到生产环境,因为无论从何处安装应用程序,OpenIAB 都会尝试仅将购买路由到亚马逊

2) 如果您喜欢使用 OpenIAB 资源,而不仅仅是在 AmazonStore 中打开几个标志:

public class AmazonAppstore extends DefaultAppstore 
    private static final boolean mDebugLog = false;
    private static final String TAG = AmazonAppstore.class.getSimpleName();

    private volatile Boolean sandboxMode = false; // <------- switch to false!!!

【讨论】:

以上是关于使用 OpenIab 进行 Amazon InApp 测试的主要内容,如果未能解决你的问题,请参考以下文章

使用 Amazon Cognito 进行简单的用户注册

使用 Amazon 的附属 API 进行自动完成

使用 Amazon Redshift / PostgreSQL 进行队列分析

使用 Amazon Redshift / PostgreSQL 进行漏斗查询

markdown 让我们在Amazon Linux上使用Certbot进行加密

sh 使用Crontab和Amazon EC2上的s3cmd.Red Hat Linux对Amazon S3进行MongoDB自动备份