我想在我的通用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项目
答案 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设计是合理的。
我对此不太确定,但不管怎样,谢谢。