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); } }
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); }
// 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); } }
public override void RestoreCompletedTransactionsFinished(SKPaymentQueue queue) { // Restore succeeded Console.WriteLine(" ** RESTORE RestoreCompletedTransactionsFinished "); IAP.RestoreTransaction(queue); }