次の方法で共有


XStoreGetUserPurchaseIdAsync

顧客購入 ID を取得します。 この ID は、現在のユーザーの代わりに無料製品の資格を付与するために使用できる Microsoft Store ID キーを取得します。 この API は、「サービスから製品を管理する」で説明されているフローで使用されます

構文

HRESULT XStoreGetUserPurchaseIdAsync(  
         const XStoreContextHandle storeContextHandle,  
         const char* serviceTicket,  
         const char* publisherUserId,  
         XAsyncBlock* async  
)  

パラメーター

storeContextHandle _In_
型: XStoreContextHandle

XStoreCreateContext によって返されるユーザーの Microsoft Store コンテキスト ハンドル。

serviceTicket _In_z_
型: char*

購入に関連付けられているサービス チケット。

publisherUserId _In_z_
型: char*

パブリッシャー ユーザー ID が含まれる文字列。

async _Inout_
型: XAsyncBlock*

行われている非同期処理が定義されている XAsyncBlockXAsyncBlock を使用して、呼び出しのステータスをポーリングし、呼び出しの結果を取得できます。 詳細については、「XAsyncBlock」を参照してください。

戻り値

型: HRESULT

HRESULT 成功またはエラー コード。

解説

この関数の実行結果と顧客の購入 ID を取得するには、この関数を呼び出した後で、XStoreGetUserPurchaseIdResult を呼び出します。 顧客の購入 ID のサイズを取得するには、この関数を呼び出した後で、XStoreGetUSerPurchaseIdResultSize を呼び出します。 結果のサイズを把握することで、結果をより効率的に読むことができます。

次のコード スニペットでは、顧客購入 ID を取得する例を示します。

void CALLBACK GetUserPurchaseIdCallback(XAsyncBlock* asyncBlock)
{
    size_t size;
    HRESULT hr = XStoreGetUserPurchaseIdResultSize(
        asyncBlock,
        &size);

    if (FAILED(hr))
    {
        printf("Failed retrieve the user purchase ID size: 0x%x\r\n", hr);
        return;
    }

    char* result = new char[size];
    hr = XStoreGetUserPurchaseIdResult(
        asyncBlock,
        size,
        result);

    if (FAILED(hr))
    {
        printf("Failed retrieve the user purchase ID result: 0x%x\r\n", hr);
        delete[] result;
        return;
    }

    printf("result: %s\r\n", result);

    delete[] result;
}

void GetUserPurchaseId(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle, const char* serviceTicket, const char* publisherUserId)
{
    auto asyncBlock = std::make_unique<XAsyncBlock>();
    ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
    asyncBlock->queue = taskQueueHandle;

    asyncBlock->callback = GetUserPurchaseIdCallback;

    HRESULT hr = XStoreGetUserPurchaseIdAsync(
        storeContextHandle,
        serviceTicket,
        publisherUserId,
        asyncBlock.get());

    if (FAILED(hr))
    {
        printf("Failed to get user purchase ID: 0x%x\r\n", hr);
        return;
    }
}

要件

ヘッダー: XStore.h (XGameRuntime.h に含まれます)

ライブラリ: xgameruntime.lib

サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体

関連項目

XStore
XStoreGetUserPurchaseIdResult
XStoreGetUSerPurchaseIdResultSize
サービスから製品を管理する