android - 使用 OpenIab 进行 Amazon InApp 测试

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

我正在尝试为 Android 应用程序实现应用内购买。因此,为了支持各种应用商店(即 Samsung、Google Play、Amazon 等),我使用 enter link description here 中的 OpenIab

我已成功使用 Google Play 商店的 OpenIab

但是,对于 Amazon,我无法测试应用内购买。 我想使用 Amazon SDK 测试器测试 Amazon 购买。为此,我创建了 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 测试器 即可完美启动。

所以,我的问题是,如何将 Amazon SDK 测试器与 OpenIab 结合使用,即如何使用 OpenIab 测试 Amazon InApp 购买。

最佳答案

发生这种情况是因为 OpenIAB 必须选择合适的商店来进行购买。仅当 OpenIAB 发现亚马逊商店应用程序附带的特殊属性时,才会将购买路由至亚马逊。

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

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 都会尝试仅将购买路由到 Amazon

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!!!

关于android - 使用 OpenIab 进行 Amazon InApp 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20745553/

相关文章:

sandbox - 有没有办法重置我的 GameCenter 沙盒帐户的成就进度?

docker - docker 内使用 bazel 进行端口隔离

android - 从 Amazon Appstore 下载的应用未显示 Admob 广告

android - 自动将应用程序部署到亚马逊商店

java - 事件总线订阅问题(Otto - Guava 事件总线)

android - Facebook 个人资料图片 Android 返回 null

php - iOS7 - 收据未在沙箱中验证 - 错误 21002 (java.lang.IllegalArgumentException)

android - 易于使用多个 Android 市场的工具?

java - MediaCodec 解码时 AV 同步

android - 移动项目的 SLA(服务水平协议(protocol))