我正在尝试使用C#将IaP实现到我的应用程序(WinRT平台)中,我找不到任何好的教程甚至文档(只有docum。我发现是针对Silverlight的......)。
我已经为它创建了一个测试版应用程序和一个免费的IaP。我已在本地测试它(使用CurrentAppSimulator)并且一切正常,但现在在测试版中(我发现创建beta只是如何使用真实的CurrentApp实例测试它)我甚至无法获得我的ListingInformation(它似乎是空洞的,甚至是空的 - 不能说,因为我无法调试它。)
我有这个ini方法:
private async void ini()
{
#if DEBUG
StorageFolder proxyDataFolder = await Package.Current.InstalledLocation.GetFolderAsync("Data");
StorageFile proxyFile = await proxyDataFolder.GetFileAsync("WindowsStoreProxy.xml");
await CurrentAppSimulator.ReloadSimulatorAsync(proxyFile);
listing = await CurrentAppSimulator.LoadListingInformationAsync();
#else
listing = await CurrentApp.LoadListingInformationAsync();
#endif
}
列表被声明为全局。 但后来我称之为没有任何东西出现(emply sb,emplty dialog)。
private async void btnListAllProducts_Click_1(object sender, RoutedEventArgs e)
{
StringBuilder sb = new StringBuilder();
foreach (var product in listing.ProductListings)
{
sb.AppendLine(string.Format("{0}, {1}, {2}",
product.Key,
product.Value.Name,
product.Value.FormattedPrice));
}
var messageDialog = new MessageDialog(sb.ToString());
await messageDialog.ShowAsync();
}
在一些较旧的Silverlight教程中,我发现有一些appmanifest连接(复制一些ID),但我无法找到它,所以我跳过这一步(可能是我的原因" bug&# 34。??)
无论如何,我还有其他一些问题。当我在CurrentAppSimulator中测试时,它从未储存起来,因此在重新启动我的应用程序后,我又能够再次购买该项目。我是否必须在某处保存一些许可信息?
我的购买方式如下:
async private void btnBuySuperMap_Click_1(object sender, RoutedEventArgs e)
{
var newMapItem =
listing.ProductListings.FirstOrDefault(p => p.Value.ProductId == "11111" && p.Value.ProductType == ProductType.Durable);
string receipt;
bool licInfo;
#if DEBUG
licInfo = CurrentAppSimulator.LicenseInformation.ProductLicenses[newMapItem.Value.ProductId].IsActive;
#else
licInfo = CurrentApp.LicenseInformation.ProductLicenses[newMapItem.Value.ProductId].IsActive;
#endif
try
{
if (licInfo)
{
var messageDialog = new MessageDialog("You already own this Map!");
await messageDialog.ShowAsync();
}
else
{
#if DEBUG
receipt = await CurrentAppSimulator.RequestProductPurchaseAsync(newMapItem.Value.ProductId, true);
#else
receipt = await CurrentApp.RequestProductPurchaseAsync(newMapItem.Value.ProductId, true);
#endif
txtBoughtSW.Visibility = Visibility.Visible;
txtBoughtSW.Text = "You own the Super Map Now!";
}
}
catch (Exception ex)
{
var messageDialog = new MessageDialog(ex.ToString());
messageDialog.ShowAsync();
}
}
最后我想说的是,它是第一个,简单的测试外观。在这项工作之后,当然,我会更好地实施它。 :)
提前感谢任何建议!
PS:有人知道一些很好的教程吗?如果没有,我可能会为其他人创建自己的(有一些帮助)。编辑:目前它的Windows(平板电脑)版本(WinRT,Universal)。接下来是WindowsPhone实现(成功实现之后)(也许是共享类?不知道)。
答案 0 :(得分:1)
已经完成了。我在开发中心编辑了该IaP项目的一些信息,现在它正在运行。提示:如果您不填写描述等所有(甚至是可选的)信息,有时它不会起作用,语言描述必须(可能)适用于您的应用支持的所有语言(即使MS说它&#39 ; s也可以选择)..