2

我正在尝试为 Android 应用程序实现应用内购买。因此,为了支持各种应用商店(即三星、Google Play、亚马逊等),我正在使用 OpenIab 从此处输入链接描述

我已成功使用OpenIabGoogle 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可以完美启动。

所以,我的问题是,如何使用 Amazon SDK 测试器,OpenIab即如何使用OpenIab.

4

1 回答 1

3

发生这种情况是因为 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!!!
于 2014-01-23T15:34:57.730 回答