2
votes

I used this wrapper for store functions to add to my Windows Phone 7 project condition to find out if user hase WP8 and enabled him in-apps and if not then just tell him.

I am using it like this:

        if (Environment.OSVersion.Version.Major >= 8)
        {
            _store = StoreLauncher.GetStoreInterface("InAppPurchaseWrapper.Store, InAppPurchaseWrapper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
        }

        if (_store != null)
        {
            var productListAsync = _store.LoadListingInformationAsync();
            productListAsync.Completed = (async, status) =>
                {
                    var listingInformation = async.GetResults();
                    var removeAdItem = listingInformation.ProductListings[Constants.RemoveAddKey];

                    PurchaseItem(removeAdItem.ProductId, Result);
                };
        }
        else
        {
            MessageBox.Show(AppResources.remove_ads_notworking);
        }

    public void PurchaseItem(string id, Action<bool> result)
    {
            var purchaseAsync = _store.RequestProductPurchaseAsync(id, false);
            purchaseAsync.Completed = (async, status) =>
            {
                try
                {
                    if (status == StoreAsyncStatus.Completed)
                    {
                        var licenseInfo = _store.LicenseInformation;
                        if (licenseInfo.ProductLicenses[id].IsActive)
                        {
                            MessageBox.Show(AppResources.remove_ad_success);
                            appSettings.IsAdVisible = false;
                        }
                        else
                        {
                            MessageBox.Show(AppResources.remove_ads_something_goes_wrong);
                        }
                    }
                    else
                    {
                        if (status == StoreAsyncStatus.Error)
                        {
                            var forceException = async.GetResults();
                        }
                        result(false);
                    }
                }
                catch (Exception)
                {

                    throw;
                }
            };
       }

The problem is when I am calling RequestProductPurchaseAsync then I get: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)). But It was working. For one time I can buy that in-app and when I downloaded licenses I get it there. But not anymore. I was trying to restart emulator, OS but so far nothing helps. Anyone knows where could be problem? Thanks

Edit: I find out that if I first run some sample application with same ProductId and that app is target for WP8. Then it's okay and I can buy in-app. If then I run original app (target for WP7) then I can buy in-apps too. So where could be problem? Is it posible to have working wrapper for Store functions for WP7 project? Should I send first WP8 app to Beta test and then use it's productId for WP7?

1

1 Answers

0
votes

WP7 is not allowed to use Windows Phone Store in-app purchases You should implement your own in-app purchases service