コード例 #1
0
        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.
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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);
        }