none
win32程序使用商店内购API:ReportConsumableFulfillmentAsync的问题 RRS feed

  • 问题

  • 目前我正在处理我们的一个win32的程序。在之前的工作中已经成功使用桌面桥将其转化为appx包并提交windows store。

    目前我们准备向app里加入应用内购买功能。通过查看相关文档,如https://docs.microsoft.com/zh-cn/windows/uwp/monetize/in-app-purchases-and-trials,以及其他资料,目前已经能够混合使用c++/cx,并调用Windows::Services::Store命名空间下的相关API。

    之后我们在开发者仪表板上添加了加载项并提交成功,开始准备测试加载项购买。并且通过StoreContext::RequestPurchaseAsync方法并传入加载项StoreID,能够成功在第一次完成购买。

    目前问题是由于消耗品类型的加载项在app需要向store报告消耗完成后,才可以允许用户新的购买。这一过程需要调用StoreContext::ReportConsumableFulfillmentAsync方法来完成。但是无论怎样设置参数,该方法总是失败,ExtendedError值是0x803f6107,造成目前无法开启新的购买。目前就卡在这块了,不知道如何处理。

    用到的代码示例如下:

    GUID guid;
    CoCreateGuid(&guid);
    Guid trackId = guid;
    auto sync = context->ReportConsumableFulfillmentAsync(L"...", 1, trackId); //第一个参数为加载项StoreID
    auto task = create_task(sync);
    task.then([](StoreConsumableResult^ result)
    {
        int code = result->ExtendedError.Value; //code 永远是0x803f6107
        auto status = result->Status; //status永远是ServerError(3)
    }


    同时在执行如下代码时控制台会同时输出如下内容:

    ERROR:ChkBool(_productStoreId.IsValid(), ((HRESULT)0x803F6107L)) (0x803f6107) [Windows::Services::Store::Internal::StoreContextServer::ConsumeConsumable]
    ERROR:_spStoreContextServer->ConsumeConsumable( _productId.Get(), _quantity, _trackingId, HStringReference((const WCHAR*)wszCV).Get(), jsonString.GetAddressOf()) (0x803f6107) [Windows::Services::Store::ReportConsumableOperation::DoWork]
    ERROR:ChkHr(hr) (0x803f6107) [Windows::Services::Store::ReportConsumableOperation::DoWork]

    似乎是_productStoreId.IsValid()返回false导致的。希望有人能帮我解决下这个问题。目前不清楚是否是WIn32调用Store Api的问题,不过既然第一次能成功购买,我认为应该是可以的,不知道是否有其他原因。

    2018年6月15日 15:47

全部回复

  • 你好,

    这个错误的意思是 IAP_E_UNEXPECTED,如果你是直接本地sideload没有从商店下载安装的话,会丢失商店的许可证,所以商店的IAP 测试会不通过。

    开发人员应执行以下步骤:             

    1. 卸载应用程序的本地副本    
    2. 从商店下载已发布的副本  
    3. sideload 从商店下载下来的版本

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年6月19日 2:54