private async Task AcklowledgePurchaseAsync(string token) { AcknowledgePurchaseParams acknowledgePurchaseParams = AcknowledgePurchaseParams.NewBuilder() .SetPurchaseToken(token) .Build(); // Consume the Non-Consumable Product BillingResult result = await _billingClient.AcknowledgePurchaseAsync(acknowledgePurchaseParams); if (result == null) { // Failed to get result back. throw new InAppPurchaseException(PurchaseError.Unknown, "BillingResult is null"); } if (result.ResponseCode != BillingResponseCode.Ok) { throw new InAppPurchaseException( result.ResponseCode.ToPurchaseError(), result.DebugMessage); } // Otherwise, the Acknowledgement succeeded. }
public Task <BillingResult> AcknowledgePurchaseAsync(AcknowledgePurchaseParams acknowledgePurchaseParams) { var tcs = new TaskCompletionSource <BillingResult>(); var listener = new InternalAcknowledgePurchaseResponseListener { AcknowledgePurchaseResponseHandler = r => tcs.TrySetResult(r) }; AcknowledgePurchase(acknowledgePurchaseParams, listener); return(tcs.Task); }
/// <summary> /// If you use the Google Play Billing Library version 2.0 or newer, you must acknowledge all purchases within three days. /// </summary> /// <param name="purchase"></param> /// <returns></returns> private async Task <bool> NotifyFullFillmentAsync(Purchase purchase) { if (!purchase.IsAcknowledged) { if (BillingClient == null || !BillingClient.IsReady) { await ConnectAsync(); } _tcsAcknowledge = new TaskCompletionSource <bool>(); AcknowledgePurchaseParams acknowledgePurchaseParams = AcknowledgePurchaseParams.NewBuilder() .SetPurchaseToken(purchase.PurchaseToken) .Build(); BillingClient.AcknowledgePurchase(acknowledgePurchaseParams, this); return(await _tcsAcknowledge?.Task); } return(true); }