XStoreGetUserPurchaseIdAsync
获取客户购买 ID。 该 ID 检索一个 Microsoft Store ID 密钥,该密钥可用于代表当前用户授予免费产品的权利。 此 API 用于管理来自服务的产品中概述的流程
语法
HRESULT XStoreGetUserPurchaseIdAsync(
const XStoreContextHandle storeContextHandle,
const char* serviceTicket,
const char* publisherUserId,
XAsyncBlock* async
)
参数
storeContextHandle _In_
类型:XStoreContextHandle
XStoreCreateContext 返回的用户的应用商店上下文句柄。
serviceTicket _In_z_
类型:char*
与购买相关的服务票证。
publisherUserId _In_z_
类型:char*
包含发布商用户 ID 的字符串。
async _Inout_
类型:XAsyncBlock*
用于定义正在进行的异步工作的 XAsyncBlock。 XAsyncBlock 可用于轮询调用的状态和检索调用结果。 有关详细信息,请参阅 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
管理来自服务的产品