特定用户的UWP StoreContext

时间:2017-04-24 17:51:22

标签: uwp in-app-purchase store

我想在我的通用Windows平台(UWP)应用程序中进行一些购买,但是当我这样做时:

auto storeContext = StoreContext::GetDefault();
auto result = co_await storeContext.RequestPurchaseAsync(PRODUCT_STORE_ID);

在调用RequestPurchaseAsync方法之前,使用当前登录设备的Microsoft帐户完成购买。我想要的是使用特定的微软帐户购买,例如user1@gmail.com,实际上我想要的是拥有与该微软帐户相关的storeContext对象,以便我从{{1}调用的每个方法为该微软帐户完成该对象的类。因此,如果在购买后我执行以下操作:

StoreContext

我将获得帐户user1@gmail.com的剩余余额。实际上我不知道怎么做,因为如果在购买之后和余额请求之前我从Store应用程序注销,这是一个安装在每台Windows 10个人计算机上的应用程序,并且是一个外部应用程序,即不是我的应用程序,然后余额请求将在我的应用程序中返回错误,因为该操作未与任何帐户关联。如果我不是从商店应用程序注销而是使用不同的微软帐户登录,例如user2 @gmail.com,余额请求将在我的应用程序中返回user2@gmail.com的余额,而不是user1的余额@ gmail.com这就是我想要的。因此,我不希望这些外部签名更改影响我的应用行为。

我看到auto result = co_await storeContext.GetConsumableBalanceRemainingAsync(PRODUCT_STORE_ID); 类有一个StoreContext方法,但我找不到像“user1@gmail.com”这样的参数传递方法。我找到了一种通过非roamable-id创建用户的方法,我不知道如何从用户名中获取用户。事实上,我不确定GetForUser方法是否可以用于此目的。除了以下代码使我的应用程序崩溃:

GetForUser

所以,如果你们中的任何人有任何想法,我们将非常感激。

PD:上面的代码使用带有C ++的Visual Studio 2017和来自https://github.com/Microsoft/cppwinrt的cppwinrt项目

2 个答案:

答案 0 :(得分:0)

  

。如果我不是从商店应用程序注销而是使用不同的微软帐户登录,例如user2 @gmail.com,余额请求将在我的应用程序中返回user2@gmail.com的余额,而不是user1的余额@ gmail.com这就是我想要的。

如您所知,storeContext.GetConsumableBalanceRemainingAsync(PRODUCT_STORE_ID)方法用于获取当前帐户余额。如果在收到方法的响应之前更改为其他帐户。它会返回错误。因为剩余的余额不属于当前帐户。所以这个api设计是合理的。

  

我已经看到StoreContext类有一个GetForUser方法,但我还没有找到一种方法来传递类似" user1@gmail.com"作为参数。我找到了一种通过非roamable-id创建用户的方法,我不知道如何从用户名中获取用户。

目前,没有用于获取特定用户的剩余余额的API。对于您的方案,我建议您可以在数据库或服务器或azure存储中存储用户名信息,消耗余额,剩余余额,这样您或您的客户就可以根据用户名搜索所有信息,例如查询剩余的信息。 - 剩余部分。

答案 1 :(得分:0)

感谢@nicozhu的评论,但关于此:

  

对于您的方案,我建议您可以在数据库或服务器或azure存储中存储用户名信息,消费余额,剩余余额,这样您或您的客户就可以根据用户名搜索所有信息,例如查询剩余余额。

我不知道在询问这些信息时,他们绑定了哪个微软帐户,我所能做的就是向storeContext对象请求该信息,这将告诉我当前记录的信息在用户中,我也不知道是谁。我的意思是,如果我的应用程序启动后,我会要求剩余余额,例如返回值5,10分钟后我进行购买并再次请求剩余余额,但这次我返回了一个值6,它并不意味着同一个用户进行了购买,也许是在购买之前进行了签名更改,因此该值(6)对应于在购买之前还有5作为剩余余额的新用户,但第一个用户仍有5个剩余余额。我无法控制那些签名更改,但这会影响我的应用程序的行为。我甚至没有收到有关签名更改的通知,所以如果我多次询问信息,我就不知道这些信息是对应同一个用户还是不同用户。关于这个:

  

这种api设计是合理的。

我对此不太确定,但不管怎样,谢谢。

相关问题