Изначально я создал приложение с помощью Xamarin.Android. Недавно я перенес его на .NET 8, но заметил, что после оплаты я теряю свои деньги, так как они автоматически возвращаются. Я читал на некоторых форумах, что мне нужно было подтвердить платеж, и я это сделал:
Изначально я создал приложение с помощью Xamarin.Android. Недавно я перенес его на .NET 8, но заметил, что после оплаты я теряю свои деньги, так как они автоматически возвращаются. Я читал на некоторых форумах, что мне нужно было подтвердить платеж, и я это сделал: [code]public async Task ShowDonate(bool isMoreThanOneAllowed = false) { try { var connected = await CrossInAppBilling.Current.ConnectAsync();
//Couldn't connect to billing, could be offline, alert user if (!connected) { Toast.MakeText(context, Resource.String.LblInAppError, ToastLength.Short).Show(); return false; }
var productId = isMoreThanOneAllowed ? PRODUCT_ID_MORE_THAN_ONE : PRODUCT_ID; var purchase = await CrossInAppBilling.Current.PurchaseAsync(productId, ItemType.InAppPurchase); if (purchase == null) { //Not purchased, alert the user Toast.MakeText(context, Resource.String.LblInAppNoPay, ToastLength.Short).Show(); return false; } else { // Purchase was successful if ((bool)!purchase.IsAcknowledged) { if (isMoreThanOneAllowed) { // For consumables, we need to consume the purchase var consumeResult = await CrossInAppBilling.Current.ConsumePurchaseAsync(productId, purchase.PurchaseToken); if (consumeResult) { // Consuming was successful Toast.MakeText(context, Resource.String.LblInAppThanks, ToastLength.Short).Show(); return true; } else { Toast.MakeText(context, Resource.String.LblInAppNoPay, ToastLength.Short).Show(); return false; } } else { // For non-consumables, we finalize (acknowledge) the purchase var acknowledgeResult = await CrossInAppBilling.Current.FinalizePurchaseAsync(purchase.PurchaseToken); if (acknowledgeResult.First().Success) { Toast.MakeText(context, Resource.String.LblInAppThanks, ToastLength.Short).Show(); return true; } else { Toast.MakeText(context, Resource.String.LblInAppNoPay, ToastLength.Short).Show(); return false; } } } else { // Purchase was already acknowledged SaveDonationStatus(); return true; } } } catch { // Handle exception Toast.MakeText(context, Resource.String.LblInAppTryAgain, ToastLength.Short).Show(); return false; } finally { await CrossInAppBilling.Current.DisconnectAsync(); } } [/code] Я не уверен, что делаю неправильно. Есть идеи, чего еще мне не хватает в моем коде?