我正在通过我的应用购买应用。我正在使用Flutter-In-App-Purchase Plugin来实现IAP功能。以下是我实现IAP的代码。
class InApp extends StatefulWidget {
@override
_InAppState createState() => _InAppState();
}
class _InAppState extends State<InApp> {
StreamSubscription _purchaseUpdatedSubscription;
StreamSubscription _purchaseErrorSubscription;
StreamSubscription _conectionSubscription;
final List<String> _productLists = Platform.isAndroid
? ["Buy Book"]
: ["Buy Book"];
List<IAPItem> _items = [];
List<PurchasedItem> _purchases = [];
@override
void initState() {
super.initState();
initPlatformState();
}
@override
void dispose() {
if (_conectionSubscription != null) {
_conectionSubscription.cancel();
_conectionSubscription = null;
}
}
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> initPlatformState() async {
// prepare
var result = await FlutterInappPurchase.instance.initConnection;
print('result: $result');
if (!mounted) return;
_conectionSubscription =
FlutterInappPurchase.connectionUpdated.listen((connected) {
print('connected: $connected');
});
_purchaseUpdatedSubscription =
FlutterInappPurchase.purchaseUpdated.listen((productItem) {
print('purchase-updated: $productItem');
});
_purchaseErrorSubscription =
FlutterInappPurchase.purchaseError.listen((purchaseError) {
print('purchase-error: $purchaseError');
});
}
void _requestPurchase(IAPItem item) {
FlutterInappPurchase.instance.requestPurchase(item.productId);
}
Future _getProduct() async {
List<IAPItem> items = await FlutterInappPurchase.instance.getProducts(_productLists);
for (var item in items) {
print('${item.toString()}');
this._items.add(item);
}
setState(() {
this._items = items;
this._purchases = [];
});
_getPurchases();
}
Future _getPurchases() async {
List<PurchasedItem> items = await FlutterInappPurchase.instance.getAvailablePurchases();
for (var item in items) {
print('${item.toString()}');
this._purchases.add(item);
}
setState(() {
this._items = [];
this._purchases = items;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: RaisedButton(
onPressed: () {
_requestPurchase(_items[0]);
},
child: Text("Buy Item"),
),
),
);
}
}
当我单击BuyItem并调用requestPurchase()方法时。我收到以下错误日志,并收到类似“找不到您要购买的商品”
这样的错误W / ActivityThread(8794):handleWindowVisibility:令牌没有活动 android.os.BinderProxy@572f129 W / ProxyBillingActivity(8794):活动 以resultCode 0和结算的responseCode:6结尾 W / BillingHelper(8794):找不到采购清单,试图找到 单一数据。 W / BillingHelper(8794):接收到错误的购买数据。 W / BillingHelper(8794):也找不到单个购买数据。 E / DoobooUtils(8794):错误代码:6 I / Flutter(8794): 购买错误:responseCode:6,debugMessage :、代码:E_UNKNOWN, 消息:发生未知或意外错误。请再试一遍 以后。
请提出解决方案。
谢谢。
答案 0 :(得分:1)
我认为您的应用内商品将处于非活动状态。
默认情况下,当您在Play控制台中添加被管理产品时,该产品将处于非活动状态。因此,只需在您的Google Play控制台帐户中访问您的应用内产品并确认它处于活动状态即可。
此外,请确保您正在开发/测试的应用的VersionCode和VersionName至少应与Google Play开发者控制台/ Play商店中的版本相同。
对于扑朔迷离,您可以在pubspec.yaml文件中检查版本。