Код: Выделить всё
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();
}
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... roid-net-8