当用户尝试购买东西时,Windows Phone 8应用程序会抛出异常

时间:2013-06-19 19:17:15

标签: c# in-app-purchase windows-phone

我有一个允许进行应用内购买的Windows Phone 8应用。当用户点击“购买”按钮时,我有以下代码:

try {
  ProductListing product = GetProductToBuy();
  MessageBox.Show("Product retrieved.");
  var boughtProduct = await CurrentApp.RequestProductPurchaseAsync(product.ProductId, true);
  MessageBox.Show(product.ProductId + " was purchased.");
} catch (Exception ex)
{
  MessageBox.Show(ex.GetType().FullName + "\n" + ex.Message + "\n" + ex.HResult);
}

执行此代码时,会抛出InvalidOperationException。与异常相关的消息只是说:

  

找不到与此错误代码关联的文字。

HResult值为-2146233079

为什么我在没有任何其他信息的情况下获得InvalidOperationException?我在实际设备而不是模拟器上运行应用程序。我真的很困惑。

谢谢

3 个答案:

答案 0 :(得分:0)

在模拟器中运行应用程序 - 我最好的猜测是,由于您的应用程序不在商店中,因此无法识别您要购买的商品,因为您的设备已绑定到实际的Microsoft帐户。

有关测试应用内购买的更多详细信息,请访问: http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681689(v=vs.105).aspx

答案 1 :(得分:0)

当我在测试版应用程序的设备上运行应用程序时,我也遇到了同样的问题和错误消息。

我所做的是重新提交新的测试版应用程序以获取新的应用程序ID,重新创建应用内购买,一切正常,无需更改代码。不知道为什么会这样。

答案 2 :(得分:0)

您是否致电所有先前购买的ReportProductFulfillment?

仅限Windows Phone。通知市场应用程序已将付费商品交付给用户。在使用此方法确认交付之前,您无法重新购买产品

http://msdn.microsoft.com/en-US/library/windows/apps/windows.applicationmodel.store.currentapp.reportproductfulfillment.aspx

试试这个:

foreach (var i in CurrentApp.LicenseInformation.ProductLicenses) { 
    CurrentApp.ReportProductFulfillment(i.Value.ProductId);
}