RequestProductPurchaseAsync抛出Platform :: InvalidArgumentException ^

时间:2013-01-06 19:34:38

标签: windows asynchronous windows-runtime in-app-purchase windows-store-apps

我正在尝试在应用内购买API(C ++ / CX)和RequestProductPurchaseAsync引发Platform::InvalidArgumentException^

我有以下代码:

// loading store
create_task(CurrentAppSimulator::LoadListingInformationAsync()).then([](ListingInformation^ listing)
{
    auto product1 = listing->ProductListings->Lookup("product1");
    auto product2 = listing->ProductListings->Lookup("product2");
});

//after that finishes I try to purchase product2
auto licenseInformation = CurrentAppSimulator::LicenseInformation;
if (!licenseInformation->ProductLicenses->Lookup("product2")->IsActive)
{
 // this exact next line throws InvalidArgumentException
 auto op = CurrentAppSimulator::RequestProductPurchaseAsync("product2", true); // throws !!!!!
 auto purchaseTask = create_task(op);

 purchaseTask.then([](task<Platform::String^> currentTask)
    {
        ...
    });
}
else ...

如果它在Windows Store示例项目中使用,则完全相同的代码可以正常工作,但它在我自己的项目中不起作用。 (显然使用相同的假冒产品xml文件)。

任何人都可以看看吗?谢谢:))

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:必须在UI线程上调用所有WinRT存储函数,因此从UI线程获取CoreDispatcher并让它通过它调用这些函数。