使用OpenIab进行Amazon InApp测试

时间:2013-12-23 14:29:44

标签: android in-app-purchase amazon sandbox amazon-appstore

我正在尝试为Android应用程序实施In App购买。所以,为了支持各种应用程序商店(即三星,谷歌播放,亚马逊等),我正在使用enter link description here的OpenIab

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

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

现在,asusual,我正在执行以下步骤

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测试Amazon InApp购买。

1 个答案:

答案 0 :(得分:3)

这是因为OpenIAB必须选择适当的商店来购买路线。仅当从亚马逊商店发现应用程序附带的特殊属性时,OpenIAB路线才会购买到亚马逊。

要通过亚马逊强制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!!!