我有一个正在运行的版本,包含字符串ITEM_SKU =" android.test.purchased&#34 ;;所以我可以买一个(假的)产品。 现在我意识到这是一种消费品。但我需要非消耗品。如果你使用我的应用程序购买,它是一个高级升级。
1)我有什么需要改变用户购买非消费品?
2)第二件事是,如果有人已经购买了优质产品,我想检查一下。他/她应该只支付一次。我怎么能这样做?
我在董事会或官方Google API上进行了大量搜索。有一个样本" Trivial Drive"来自谷歌,我可以在那里找到我的问题的解决方案。但我找不到合适的代码。
以下是我的代码的一些片段:
//a button click call this method
public void buyClick() {
mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001,mPurchaseFinishedListener);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}
public void consumeItem() {
System.out.println("counsumeItem wurde aufgerufen");
mHelper.queryInventoryAsync(mReceivedInventoryListener);
}
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
@Override
public void onIabPurchaseFinished(IabResult result, Purchase info) {
if (result.isFailure()) {
return;
}
else if (info.getSku().equals(ITEM_SKU)) {
consumeItem();
buyButton.setEnabled(false);
}
}
};
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
public void onConsumeFinished(Purchase purchase, IabResult result) {
if (result.isSuccess()) {
clickButton.setEnabled(true); //hier den Datenbankzugriff reinmachen
} else {
System.out.println("Handle error"); // handle error
}
}
};
IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
if (result.isFailure()) {
// Handle failure
System.out.println("FAILURE");
} else {
mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU), mConsumeFinishedListener);
}
}
};
如果您需要更多代码或信息,请给我一个标志。