示例#1
0
        public static void Purchase(string productId)
        {
            Init();
            m_buyingProductId = new NSString(productId);

            m_priceObserver = NSNotificationCenter.DefaultCenter.AddObserver(
                PurchaseManager.InAppPurchaseManagerTransactionSucceededNotification,
                (notification) => {
                string prodDescr = IAP.GetDescription(productId);
                Console.WriteLine("Success Purchasing " + productId + ": " + prodDescr);
                MarkPurchased(productId);
                IAPOK?.Invoke(productId);
            });

            m_requestObserver = NSNotificationCenter.DefaultCenter.AddObserver(
                PurchaseManager.InAppPurchaseManagerRequestFailedNotification,
                (notification) => {
                string errorStr = IAP.GetStringFromNotification(notification);
                IAPError?.Invoke(errorStr);
            });

            SKPaymentQueue.DefaultQueue.AddTransactionObserver(m_observer);
            if (!m_pricesLoaded)
            {
                m_iap.RequestProductData(m_products);
            }
            else
            {
                m_iap.PurchaseProduct(m_buyingProductId);
            }
        }
示例#2
0
 public virtual void RestoreTransaction(SKPaymentTransaction transaction)
 {
     // Restored Transactions always have an 'original transaction' attached
     Console.WriteLine("RestoreTransaction {0}; OriginalTransaction {1}", transaction.TransactionIdentifier, transaction.OriginalTransaction.TransactionIdentifier);
     //string productId = transaction.OriginalTransaction.Payment.ProductIdentifier;
     IAP.ProcessRestoredItem(transaction);
     //UtilsIOS.ShowToast("Restored", UIColor.Green, 5.0f);
     //AppDelegate.Restore(productId);
     FinishTransaction(transaction, true);
 }
示例#3
0
        // received response to RequestProductData - with price,title,description info
        public override void ReceivedResponse(SKProductsRequest request, SKProductsResponse response)
        {
            SKProduct[] products = response.Products;

            NSMutableDictionary userInfo = new NSMutableDictionary();

            //NSDictionary userInfo = new NSDictionary();
            for (int i = 0; i < products.Length; i++)
            {
                userInfo.Add((NSString)products[i].ProductIdentifier, products[i]);
            }
            NSNotificationCenter.DefaultCenter.PostNotificationName(InAppPurchaseManagerProductsFetchedNotification, this, userInfo);

            Console.WriteLine(" ** ReceivedResponse ** ");
            IAP.ContinuePurchaseOrRestore(userInfo);

            foreach (string invalidProductId in response.InvalidProducts)
            {
                Console.WriteLine("Invalid product id: {0}", invalidProductId);
            }
        }
示例#4
0
 public override void RestoreCompletedTransactionsFinished(SKPaymentQueue queue)
 {
     // Restore succeeded
     Console.WriteLine(" ** RESTORE RestoreCompletedTransactionsFinished ");
     IAP.RestoreTransaction(queue);
 }