In View Controller
using Xamarin.InAppPurchase;
public override void ViewDidLoad ()
{base.ViewDidLoad ();
AppDelegate.PurchaseManager.InAppProductPurchased -= InAppProductPurchased;
AppDelegate.PurchaseManager.ReceivedInvalidProducts -= ReceivedInvalidProducts;
AppDelegate.PurchaseManager.ReceivedValidProducts -= ReceivedValidProducts;
AppDelegate.PurchaseManager.InAppPurchasesRestored -= InAppPurchasesRestored;
AppDelegate.PurchaseManager.InAppProductPurchaseFailed -= InAppProductPurchaseFailed;
AppDelegate.PurchaseManager.InAppProductPurchased += InAppProductPurchased;
AppDelegate.PurchaseManager.InAppProductPurchaseFailed += InAppProductPurchaseFailed;
AppDelegate.PurchaseManager.ReceivedInvalidProducts += ReceivedInvalidProducts;
AppDelegate.PurchaseManager.ReceivedValidProducts += ReceivedValidProducts;
AppDelegate.PurchaseManager.InAppPurchasesRestored += InAppPurchasesRestored;
AppDelegate.PurchaseManager.QueryInventory ("ProductId");
btnSubmit.TouchUpInside += (send, e) =>
{
Submit();
};
private void InAppPurchasesRestored(int count)
{
if (count > 0)
{
var alert = new UIAlertView ();
alert.Message = "Restore Successful";
alert.AddButton ("OK");
alert.Clicked += (sender, e) => {
if (this.NavigationController != null) {
AppDelegate.PurchaseManager.InAppProductPurchased -= InAppProductPurchased;
AppDelegate.PurchaseManager.ReceivedInvalidProducts -= ReceivedInvalidProducts;
AppDelegate.PurchaseManager.ReceivedValidProducts -= ReceivedValidProducts;
AppDelegate.PurchaseManager.InAppPurchasesRestored -= InAppPurchasesRestored;
AppDelegate.PurchaseManager.InAppProductPurchaseFailed -= InAppProductPurchaseFailed;
}
};
alert.Show ();
}
else
{
var alert = new UIAlertView ();
alert.Message = "Restore Failed";
alert.AddButton ("OK");
alert.Show ();
}
}
private void ReceivedValidProducts(List<InAppProduct> products)
{
Console.WriteLine("_purchaseManager.ReceivedValidProducts " + products);
foreach (var p in products){
Console.WriteLine("--- " + p.ProductIdentifier + " " + p.Price);
}
}
private void ReceivedInvalidProducts(string[] id)
{
var alert=new UIAlertView();
alert.Message="product error";
alert.AddButton("OK");
alert.Show();
}
private void InAppProductPurchased(SKPaymentTransaction transaction, InAppProduct product)
{
var alert = new UIAlertView ();
alert.Message = "Successful";
alert.AddButton ("OK");
alert.Clicked += (sender, e) => {
// this.NavigationController.PopViewControllerAnimated (true);
AppDelegate.PurchaseManager.InAppProductPurchased -= InAppProductPurchased;
AppDelegate.PurchaseManager.ReceivedInvalidProducts -= ReceivedInvalidProducts;
AppDelegate.PurchaseManager.ReceivedValidProducts -= ReceivedValidProducts;
AppDelegate.PurchaseManager.InAppPurchasesRestored -= InAppPurchasesRestored;
AppDelegate.PurchaseManager.InAppProductPurchaseFailed -= InAppProductPurchaseFailed;
};
// alert.Show ();
}
private void InAppProductPurchaseFailed(SKPaymentTransaction transaction, InAppProduct product)
{
ShowAlert ("Failed");
}
public void Submit()
{
UIAlertView alert = new UIAlertView ("Payout", "You need to pay for the next operation", null, "Cancel", "Continue");
alert.Clicked += (call, buttobnArgs) => {
if (AppDelegate.PurchaseManager.CanMakePayments)
{
AppDelegate.PurchaseManager.BuyProduct ("com.highviewsoft.Sonicboxx", Int32.Parse (_payoutsNumber));
} else {
ShowAlert ("Apple ID is missing payment information");
}
};
alert.Show ();
}
public void ShowAlert(string message)
{
UIAlertView alert = new UIAlertView ();
alert.Message = message;
alert.AddButton ("Ok");
alert.Show();
}
In AppDelegate.cs
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
PurchaseManager.SimulateiTunesAppStore = false;
PurchaseManager.PublicKey = "ASDFASDFASDF";
PurchaseManager.ApplicationUserName = "Sonicboxx Test";
PurchaseManager.AutomaticPersistenceType = InAppPurchasePersistenceType.LocalFile;
PurchaseManager.PersistenceFilename = "AtomicData";
PurchaseManager.ShuffleProductsOnPersistence = false;
PurchaseManager.RestoreProducts ();
AppDelegate.PurchaseManager.CheckInternetConnection = true;
AppDelegate.PurchaseManager.NoInternetConnectionAvailable += NoInternetConnectionAvailable;
}
private void NoInternetConnectionAvailable(){
var alert=new UIAlertView();
alert.Message="Please check your internet connection";
alert.AddButton("OK");
alert.Show();
}