"You Already Have This Item" 应用内购买颤动



我在应用程序中使用应用内购买。免费购买。但当我想第二次购买相同的产品时,这个Play Store会向我展示"你已经有了这个项目"。我希望我的产品被一次又一次地购买。我不知道该怎么解决。非常感谢你的帮助。我在下面留下了我的源代码。

InAppPurchase iap = InAppPurchase.instance;
bool available = true;
List<ProductDetails> products = [];
List<PurchaseDetails> purchases = [];
StreamSubscription subscription;
int credits = 0;
@override
void initState() {
initialize();
super.initState();
}
@override
void dispose() {
subscription.cancel();
super.dispose();
}
void initialize() async {
available = await iap.isAvailable();
if (available) {
await getProducts();

verifyPurchase();
subscription = iap.purchaseStream.listen((data) => setState(() {
print('New Purchase');
purchases.addAll(data);
verifyPurchase();
}));
}
}
Future<void> getProducts() async {
Set<String> ids = Set.from(['buy_300_wecoin']);
ProductDetailsResponse response = await iap.queryProductDetails(ids);
setState(() {
products = response.productDetails;
});
}
PurchaseDetails hasPurchased(String productID) {
return purchases.firstWhere((purchase) => purchase.productID == productID,
orElse: () => null);
}
bool verifyPurchase() {
PurchaseDetails purchase = hasPurchased('buy_300_wecoin');
if (purchase != null && purchase.status == PurchaseStatus.purchased) {
return true;
}
}
void buyProduct(ProductDetails prod) {
final PurchaseParam purchaseParam = PurchaseParam(productDetails: prod);
iap.buyConsumable(purchaseParam: purchaseParam, autoConsume: false);
}

首先,手动放置using

import 'package:in_app_purchase_android/in_app_purchase_android.dart';

然后在InAppPurchase.instance.purchaseStream方法中使用以下代码

if (purchaseDetails.status == PurchaseStatus.restored) {
if (Platform.isAndroid) {
final InAppPurchaseAndroidPlatformAddition androidAddition =
_inAppPurchases.getPlatformAddition<InAppPurchaseAndroidPlatformAddition>();
await androidAddition.consumePurchase(purchaseDetails);
}
}

然后在initState()中添加以下行,以便调用restore purchases并触发Stream侦听器。

_inAppPurchases.restorePurchases();

您应该使用应用内消费

消耗品是用户消费以接收应用内内容的产品,如游戏内货币。当用户消费产品时,你的应用程序会分发相关内容,用户可以然后再次购买该商品。

请注意,应用商店没有任何用于查询消耗品的API,Google Play认为消耗品一旦被标记为已消费,就不再拥有,并且无法在此处退货。为了在设备之间恢复这些内容,您需要将它们保存在自己的服务器上并进行查询。

尝试in_app_purchase库,并使用此库阅读有关耗材IAP的信息。