我正在尝试在我的Metro应用中启用应用内购买,但它似乎根本不起作用。我没有收到错误,返回值是一个空字符串。我的代码如下所示:
await CurrentAppSimulator.RequestProductPurchaseAsync("bonus", false);
if (!licenseInformation.ProductLicenses["bonus"].IsActive) {
error="purchase didn't work?";
}
我得到了错误。我确保拥有WindowsStoreProxy.xml文件。它看起来像这样。
<Product ProductId="bonus" LicenseDuration="10">
<MarketData xml:lang="en-us">
<Name>Bonus pretend feature</Name>
<Price>1.00</Price>
<CurrencySymbol>$</CurrencySymbol>
<CurrencyCode>USD</CurrencyCode>
</MarketData>
</Product>
...
<LicenseInformation>
<App>
<IsActive>true</IsActive>
<IsTrial>true</IsTrial>
</App>
<Product ProductId="bonus">
<IsActive>false</IsActive>
</Product>
</LicenseInformation>
我认为此文件已被阅读,因为如果我将“true”置于其下,那么我的应用会将此特定产品视为已购买。我检查了documentation,看起来我正在做那里的所有事情。
当代码调用RequestProductPurchaseAsync时,我会看到一个对话框,要求我选择一个返回值。我选择S_OK,然后点击继续。我得到一个空字符串作为返回值。问题是,无论我作为第一个参数输入的字符串,我都得到相同的结果。
我一定错过了什么。我究竟做错了什么?我该如何诊断这件事?
编辑:显然,使这项工作的诀窍是确保您的应用程序不处于试用模式 - 这是默认设置。
但是如何诊断这个东西呢?当出现问题时如何收到错误消息,如何让这个API告诉我有用的错误,例如“购买失败,因为应用程序处于试用模式”?
答案 0 :(得分:1)
看到我和其他人一起争论这个问题。我已经实现了代码,我的应用程序也在商店中,并且没有任何关于它的投诉......我将逐步解释
1 - &gt;我希望你熟悉链接中的代码 In app purchase
2 - &gt;你需要默认使应用程序生效。您无法在试用模式下完成相同操作...从开发人员计算机运行。
3 - &gt;一旦这部分代码
await CurrentAppSimulator.RequestProductPurchaseAsync("product1");
并在live。时将currentappsimulator更改为currentapp。
在Windows商店处理整个过程。
4 - &gt;如果应用程序内购买的产品不在商店(您需要在将应用程序上传到商店时列出所有应用内购买产品),它会自动给出错误,而产品不在那里。
5 - &gt;如果没有信用卡信息,那么它会自行提供错误信息..
所有这些都是由Windows商店处理的,您只需要在应用程序中购买所有应用程序。现在客户端应用程序(您的应用程序)和Windows商店之间的金融交易是什么,我不能说有一些钱,就像您需要谷歌出去的任何其他业务一样。
在试用版中无法使用的原因:如果他们给我们自己的方式从某些人那里扣钱,那么通过powershell文件分发的试用版应用程序甚至会帮助购买应用程序是不对的合法也:) :)
上次我不再回答这个问题时,没有人相信我,如果你愿意,你可以继续探索更多。