如何让Metro应用内购买发挥作用

本文关键字:作用 Metro 应用 | 更新日期: 2023-09-27 18:30:10

我正试图在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",那么我的应用程序就会将这个特定的产品视为已购买。我检查了文件,看起来我在那里做所有的事情。

当代码调用RequestProductPurchaseAsync时,我会收到一个对话框,要求我选择一个返回值。我选择S_OK,然后单击Continue。我得到一个空字符串作为返回值。问题是,不管我把哪个字符串作为第一个参数,我都会得到相同的结果。

我一定是错过了什么。我做错了什么?我该如何诊断这件事?

编辑:显然,让这个工作的诀窍是确保你的应用程序没有处于试用模式——这是默认的。

但是如何诊断这个问题呢?当出现问题时,我如何获得错误消息,如何获得此API来告诉我有用的错误,如"购买失败,因为应用程序处于试用模式"?

如何让Metro应用内购买发挥作用

我也和其他人在这个问题上发生了争执。我已经实现了代码,我的应用程序也在商店里,没有任何抱怨。。。我将逐步解释

1->我希望你熟悉链接中的代码应用内购买

2->默认情况下,您需要使应用程序处于活动状态。您无法在试用模式下完成相同的操作。。。从开发者机器运行。

3->一旦这部分代码

await CurrentAppSimulator.RequestProductPurchaseAsync("product1"); 

并在直播时将currentappsimulator更改为currentapp。

执行的整个过程都由windows存储处理。

4->如果应用内购买的产品不在商店中(您需要在将应用上传到商店时列出所有应用内购买产品),它会自动给出一个不在商店的产品错误。

5->如果没有信用卡信息,它会自己发出错误消息。。

所有这些都是由windows商店处理的,你只需要在应用程序内购买应用程序。现在,客户端应用程序(你的应用程序)和windows商店之间的财务协议是什么?我不能说你需要像在任何其他业务中一样,有%的资金需要谷歌搜索。

试用版不可用的原因:如果他们给我们提供了一种自己的方式来从某些帐户中扣除费用,那么通过powershell文件分发的试用版应用程序甚至会帮助应用程序内购买是不正确和合法的:)

上次我停止回答这样的问题时,没有人相信我,如果你想的话,你可以继续探索更多。