I'm not sure what is exactly wrong with your situation. But we have a MonoGame project that is already in the store and in-apps work great. We had crashes while interacting with Store as well but eventually got it working. This is our current approach:
In GamePage.xaml.cs we have:
...
using StoreExitAction = System.Action<string, string, bool>;
...
private static StoreExitAction StoreExitCallback;
....
public void LaunchStoreForProductPurchase(string productID, bool requestReceipt, StoreExitAction storeExitCallback)
{
StoreExitCallback = storeExitCallback;
Dispatcher.BeginInvoke(() => LaunchStoreForProductPurchaseASync(productID, requestReceipt));
}
private static async void LaunchStoreForProductPurchaseASync(string productID, bool requestReceipt)
{
bool productPurchaseError = false;
string receipt = "";
try {
receipt = await Store.CurrentApp.RequestProductPurchaseAsync(productID, requestReceipt);
}
catch (Exception ex)
{
productPurchaseError = true;
}
try
{
if (StoreExitCallback != null) StoreExitCallback(productID, receipt, productPurchaseError);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
To start in-app purchase you do:
GamePage.Instance.LaunchStoreForProductPurchase(productID, true, ReturnFromStoreCallback);