Example #1
0
 private void OnPurchaseSuccess(SKPayment id)
 {
     if (_actionSource != null)
         _actionSource.TrySetResult(true);
 }
 public override bool ShouldAddStorePayment(SKPaymentQueue queue, SKPayment payment, SKProduct product)
 {
     return(onShouldAddStorePayment?.Invoke(queue, payment, product) ?? false);
 }
Example #3
0
 private void OnPurchaseError(SKPayment id, Exception e)
 {
     if (_actionSource != null)
         _actionSource.TrySetException(e);
 }
Example #4
0
        public void PurchaseProduct(string appStoreProductId)
        {
            SKPayment payment = SKPayment.PaymentWithProduct(products[0]);

            SKPaymentQueue.DefaultQueue.AddPayment(payment);
        }
        Task <SKPaymentTransaction> PurchaseAsync(string productId)
        {
            var tcsTransaction = new TaskCompletionSource <SKPaymentTransaction>();

            Action <SKPaymentTransaction, bool> handler = null;

            handler = new Action <SKPaymentTransaction, bool>((tran, success) =>
            {
                if (tran?.Payment == null)
                {
                    return;
                }

                // Only handle results from this request
                if (productId != tran.Payment.ProductIdentifier)
                {
                    return;
                }

                // Unsubscribe from future events
                paymentObserver.TransactionCompleted -= handler;

                if (success)
                {
                    tcsTransaction.TrySetResult(tran);
                    return;
                }

                var errorCode   = tran?.Error?.Code ?? -1;
                var description = tran?.Error?.LocalizedDescription ?? string.Empty;
                var error       = PurchaseError.GeneralError;
                switch (errorCode)
                {
                case (int)SKError.PaymentCancelled:
                    error = PurchaseError.UserCancelled;
                    break;

                case (int)SKError.PaymentInvalid:
                    error = PurchaseError.PaymentInvalid;
                    break;

                case (int)SKError.PaymentNotAllowed:
                    error = PurchaseError.PaymentNotAllowed;
                    break;

                case (int)SKError.ProductNotAvailable:
                    error = PurchaseError.ItemUnavailable;
                    break;

                case (int)SKError.Unknown:
                    error = PurchaseError.GeneralError;
                    break;

                case (int)SKError.ClientInvalid:
                    error = PurchaseError.BillingUnavailable;
                    break;
                }

                tcsTransaction.TrySetException(new InAppBillingPurchaseException(error, description));
            });

            paymentObserver.TransactionCompleted += handler;

            var payment = SKPayment.CreateFrom(productId);

            SKPaymentQueue.DefaultQueue.AddPayment(payment);

            return(tcsTransaction.Task);
        }
            public void Purchase()
            {
                SKPayment payment = SKPayment.PaymentWithProduct(this.details);

                SingleManager.PaymentQueue.AddPayment(payment);
            }
 public override bool ShouldAddStorePayment(SKPaymentQueue queue, SKPayment payment, SKProduct product)
 {
     return(true);
 }
 bool OnShouldAddStorePayment(SKPaymentQueue queue, SKPayment payment, SKProduct product)
 {
     // true in app purchase is initiated, false cancels it.
     // you can check if it was already purchased.
     return(true);
 }
Example #9
0
 private void OnPurchaseSuccess(SKPayment id)
 {
     _actionSource?.TrySetResult(true);
 }
Example #10
0
 private void OnPurchaseError(SKPayment id, Exception e)
 {
     _actionSource?.TrySetException(e);
 }
Example #11
0
        //
        // kick off the upgrade transaction
        //
        public void PurchaseProUpgrade()
        {
            SKPayment payment = SKPayment.PaymentWithProduct(InAppPurchaseProUpgradeProductId);

            SKPaymentQueue.DefaultQueue.AddPayment(payment);
        }
Example #12
0
 bool OnShouldAddStorePayment(SKPaymentQueue queue, SKPayment payment, SKProduct product)
 {
     SettingsService.IsPro        = true;
     SettingsService.NeedsProSync = true;
     return(true);
 }