我正在尝试为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购买。
答案 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!!!