我正在尝试为 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/