Ejemplo n.º 1
0
        //--------------------------------------------------------Set-, Get- Methods:---------------------------------------------------------\\
        #region --Set-, Get- Methods--


        #endregion
        //--------------------------------------------------------Misc Methods:---------------------------------------------------------------\\
        #region --Misc Methods (Public)--


        #endregion

        #region --Misc Methods (Private)--
        private void requestPurchase(string featureName)
        {
            Task.Run(async() =>
            {
                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() =>
                {
                    ProductPurchaseStatus resultsStatus = await BuyContentHelper.requestPuracheAsync(featureName);

                    TextDialog dialog;
                    switch (resultsStatus)
                    {
                    case ProductPurchaseStatus.Succeeded:
                        dialog = new TextDialog("Thanks for supporting the development!", "Success!");
                        break;

                    default:
                        dialog = new TextDialog("Failed to place order:\n" + resultsStatus, "An error occurred!");
                        break;
                    }

                    await UiUtils.showDialogAsyncQueue(dialog);
                    donate_prgr.Visibility = Visibility.Collapsed;
                    donate_btn.IsEnabled   = true;
                });
            });
        }
Ejemplo n.º 2
0
        private static WSAPurchaseResultStatus MapPurchaseResult(ProductPurchaseStatus result)
        {
            switch (result)
            {
            case ProductPurchaseStatus.AlreadyPurchased:
                return(WSAPurchaseResultStatus.AlreadyPurchased);

            case ProductPurchaseStatus.NotFulfilled:
                return(WSAPurchaseResultStatus.NotFulfilled);

            case ProductPurchaseStatus.NotPurchased:
                return(WSAPurchaseResultStatus.NotPurchased);

            case ProductPurchaseStatus.Succeeded:
                return(WSAPurchaseResultStatus.Succeeded);
            }

            return(WSAPurchaseResultStatus.NotPurchased);
        }
Ejemplo n.º 3
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            MessageDialog dialog = new MessageDialog("Grazie per aver supportato l'applicazione!");

            dialog.Title = "Pubblicità rimosse";
            //try
            //{
            ProductPurchaseStatus status = await Shop.buyNoAds();

            switch (status)
            {
            case ProductPurchaseStatus.Succeeded:
            {
                AdRemove.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                Settings.Spot       = false;
                break;
            }

            case ProductPurchaseStatus.AlreadyPurchased:
            {
                AdRemove.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                Settings.Spot       = false;
                break;
            }

            case ProductPurchaseStatus.NotPurchased:
            {
                dialog.Content = "Se vuoi cambiare idea, il pulsante è sempre qui :)";
                dialog.Title   = "Azione annullata";
                break;
            }
            }
            //}
            //catch (Exception ex)
            //{
            //    dialog.Title = "Errore acquisto";
            //    dialog.Content = "C'è stato un errore nell'acquisto del prodotto :( Forse non c'è connessione?";
            //    System.Diagnostics.Debug.WriteLine(ex.Message);
            //}

            await dialog.ShowAsync();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Read purchase data out of the UWP Receipt XML
        /// </summary>
        /// <param name="xml">Receipt XML</param>
        /// <param name="status">Status of the purchase</param>
        /// <returns>A list of purchases, the user has done</returns>
        public static IEnumerable <InAppBillingPurchase> ToInAppBillingPurchase(this string xml, ProductPurchaseStatus status)
        {
            var purchases = new List <InAppBillingPurchase>();

            var xmlDoc = new XmlDocument();

            try
            {
                xmlDoc.LoadXml(xml);
            }
            catch
            {
                //Invalid XML, we haven't finished this transaction yet.
            }

            // Iterate through all ProductReceipt elements
            var xmlProductReceipts = xmlDoc.GetElementsByTagName("ProductReceipt");

            for (var i = 0; i < xmlProductReceipts.Count; i++)
            {
                var xmlProductReceipt = xmlProductReceipts[i];

                // Create new InAppBillingPurchase with values from the xml element
                var purchase = new InAppBillingPurchase()
                {
                    Id = xmlProductReceipt.Attributes["Id"].Value,
                    TransactionDateUtc = Convert.ToDateTime(xmlProductReceipt.Attributes["PurchaseDate"].Value),
                    ProductId          = xmlProductReceipt.Attributes["ProductId"].Value,
                    AutoRenewing       = false // Not supported by UWP yet
                };
                purchase.PurchaseToken = purchase.Id;
                // Map native UWP status to PurchaseState
                switch (status)
                {
                case ProductPurchaseStatus.AlreadyPurchased:
                case ProductPurchaseStatus.Succeeded:
                    purchase.State = PurchaseState.Purchased;
                    break;

                case ProductPurchaseStatus.NotFulfilled:
                    purchase.State = PurchaseState.Deferred;
                    break;

                case ProductPurchaseStatus.NotPurchased:
                    purchase.State = PurchaseState.Canceled;
                    break;

                default:
                    purchase.State = PurchaseState.Unknown;
                    break;
                }

                // Add to list of purchases
                purchases.Add(purchase);
            }

            return(purchases);
        }
Ejemplo n.º 5
0
        private async void donateButton_Click(object sender, RoutedEventArgs e)
        {
            donateButton.IsEnabled = false;

            if (ApplicationInfo.Current.HasInternetConnection)
            {
                try
                {
                    ApplicationData.Current.RoamingSettings.Values["DonatePrompt"] = true;

                    var iapList = await PurchaseHelper.GetDonationsIAP();

                    ComboBox box = new ComboBox()
                    {
                        Margin = new Thickness(10, 10, 10, 0),
                        HorizontalAlignment = HorizontalAlignment.Stretch,
                    };


                    Button setButton = new Button()
                    {
                        IsEnabled           = false,
                        Content             = ApplicationInfo.Current.Resources.GetString("Proceed"),
                        Margin              = new Thickness(10, 10, 10, 0),
                        HorizontalAlignment = HorizontalAlignment.Stretch,
                    };



                    box.SelectionChanged += (snd, args) =>
                    {
                        if (box.SelectedItem != null)
                        {
                            setButton.IsEnabled = true;
                        }
                    };

                    setButton.Click += async(s, a) =>
                    {
                        ProductListing product = ((ComboBoxItem)box.SelectedItem).Tag as ProductListing;

                        ProductPurchaseStatus result = await PurchaseHelper.PurchaseAsync(product);

                        if (result == ProductPurchaseStatus.Succeeded)
                        {
                            PurchaseHelper.ShowDonationThanksMessage();
                        }
                        else
                        {
                            PurchaseHelper.ShowDonationErrorMessage();
                        }
                    };

                    foreach (ProductListing product in iapList)
                    {
                        ComboBoxItem cbi = new ComboBoxItem()
                        {
                            Tag     = product,
                            Content = product.FormattedPrice,
                        };
                        box.Items.Add(cbi);
                    }

                    Grid.SetColumn(box, 0);
                    Grid.SetColumn(setButton, 1);

                    PageHelper.MainPage.Notification.SetContent(ApplicationInfo.Current.Resources.GetString("AskForDonationTitle"),
                                                                ApplicationInfo.Current.Resources.GetString("AskForDonationMessage"),
                                                                "", new System.Collections.Generic.List <UIElement>()
                    {
                        box, setButton
                    });

                    PageHelper.MainPage.Notification.Show();
                }
                catch
                {
                    //await nf1.Show(res.GetString("AskForDonationErrorMessage"), res.GetString("AskForDonationErrorTitle"), btn1, btn2);
                }
            }
            else
            {
            }

            donateButton.IsEnabled = true;
        }
Ejemplo n.º 6
0
        public static async Task <ProductPurchaseStatus> PurchaseAsync(ProductListing product)
        {
            ProductPurchaseStatus status = ProductPurchaseStatus.NotPurchased;

            try
            {
                Guid            productTransactionId;
                List <Guid>     grantedConsumableTransactionIds = new List <Guid>();
                PurchaseResults purchaseResults = await CurrentApp.RequestProductPurchaseAsync(product.ProductId);

                status = purchaseResults.Status;

                switch (status)
                {
                case ProductPurchaseStatus.Succeeded:
                    productTransactionId = purchaseResults.TransactionId;

                    FulfillmentResult fulfillmentResult = await FulfillAsync(product.ProductId, productTransactionId);

                    break;

                case ProductPurchaseStatus.NotFulfilled:

                    if (ApplicationInfo.Current.HasInternetConnection)
                    {
                        var unfulfilledPurchases = await CurrentApp.GetUnfulfilledConsumablesAsync();

                        foreach (UnfulfilledConsumable unfulfilledConsumable in unfulfilledPurchases)
                        {
                            await FulfillAsync(unfulfilledConsumable.ProductId, unfulfilledConsumable.TransactionId);
                        }
                    }

                    break;

                case ProductPurchaseStatus.NotPurchased:

                    break;
                }

                //switch (purchaseResults.Status)
                //{
                //    case ProductPurchaseStatus.Succeeded:
                //        product1TempTransactionId = purchaseResults.TransactionId;
                //        // Grant the user their purchase here, and then pass the product ID and transaction ID to CurrentAppSimulator.reportConsumableFulfillment
                //        // To indicate local fulfillment to the Windows Store.
                //        break;

                //    case ProductPurchaseStatus.NotPurchased:

                //        break;

                //    case ProductPurchaseStatus.NotFulfilled:
                //        product1TempTransactionId = purchaseResults.TransactionId;

                //        // First check for unfulfilled purchases and grant any unfulfilled purchases from an earlier transaction.
                //        // Once products are fulfilled pass the product ID and transaction ID to CurrentAppSimulator.reportConsumableFulfillment
                //        // To indicate local fulfillment to the Windows Store.
                //        break;
                //}
            }
            catch
            {
            }

            return(status);
        }