Симуляция покупки в приложении для приложения Win 8 C#

Я пытался реализовать тест на покупку приложения в симуляторе, но все тщетно. Пример магазина работает, но когда я пытаюсь реализовать подобное поведение в своем приложении, он как-то не имитирует, как я хочу. У меня есть страница настроек и страница всех заметок, которые мне нужно сделать в качестве премиальной функции. Приложение по умолчанию бесплатно.

Это мой XML-файл. Я создал как тот, который находится в примере приложения. Нужно ли мне, так как мое приложение бесплатно по умолчанию?

<?xml version="1.0" encoding="utf-8" ?>
<CurrentApp>
  <LicenseInformation>
    <App>
      <IsActive>true</IsActive>
      <IsTrial>false</IsTrial>
    </App>
  <Product ProductId="Settings">
    <IsActive>true</IsActive>
  </Product>
  <Product ProductId="AllNotes">
   <IsActive>false</IsActive>
  </Product>
</LicenseInformation>
</CurrentApp>

Остальная часть кода написана в функции OnNavigatedTo на странице настроек.

protected override async void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    StorageFolder proxyDataFolder = await Package.Current.InstalledLocation.GetFolderAsync("Data");
    StorageFile proxyFile = await proxyDataFolder.GetFileAsync("in-app-purchase.xml");
    LicenseInformation licenseInformation = CurrentAppSimulator.LicenseInformation;
    var productLicense = licenseInformation.ProductLicenses["Settings"];


    if (!productLicense.IsActive)
    {
        var messageDialog = new MessageDialog("You need to buy the Settings option", "Buy");
        messageDialog.Commands.Add(new UICommand("Buy", null, 0));

        var commandChosen = await messageDialog.ShowAsync();

        if ((int)commandChosen.Id == 0)
        {
            await CurrentAppSimulator.RequestProductPurchaseAsync("Settings", true);
            if (licenseInformation.ProductLicenses["Settings"].IsActive)
            {
                InitializeUI();
            }
        }
    }
}

Так что даже когда я пытаюсь купить товар, жду

CurrentAppSimulator.RequestProductPurchaseAsync("Settings", true); 

значение все еще ложно. Что-то, чего мне не хватает?

2 ответа

Вы забыли загрузить proxyFile в CurrentAppSimulator.

await CurrentAppSimulator.ReloadSimulatorAsync(proxyFile);

Я не уверен, если это имеет значение, но я положил IsTrial == True в моем XML. Но то, что я нашел, и что более важно, чтобы иметь возможность успешно покупать что-либо, вы должны сначала купить само приложение, позвонив

Windows.ApplicationModel.Store.CurrentAppSimulator.RequestAppPurchaseAsync()

Вам нужно сделать это только один раз во время сеанса, после покупки приложения вы можете купить любой продукт. Надеюсь это поможет.

Другие вопросы по тегам