メインコンテンツまでスキップ

ウォレット更新通知

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

備考
  • ウォレット更新通知APIは、AGSプライベートクラウド環境でのみ利用可能で、デフォルトで有効になっています。
  • 現在、通知はグローバルにオンまたはオフになっており、ゲームネームスペースごとに設定できません。ウォレット更新通知APIの設定についてサポートをリクエストするには、AccelByteテクニカルプロデューサーに連絡するか、AccelByteカスタマーサポートポータルからリクエストを送信してください。

はじめに

AccelByte Gaming Services (AGS) ウォレット更新通知APIは、プレイヤーのウォレットに関するリアルタイム更新を提供し、ゲームクライアント外で発生する変更を含め、プレイヤーが迅速に通知されることを保証します。

サポートされている通知タイプとサンプルペイロード

このセクションでは、AGSウォレットサービスでサポートされているウォレット更新通知のタイプをリストします。

ウォレットステータス変更通知

以下はwalletStatusChanged通知のサンプルペイロードです。

{
"type": "walletStatusChanged",
"payload": {
"action": "enable",
"data": {
"walletId": "3d9bc4562aae41ccb3d9fd49f6a588d5",
"userId": "f9b5c9c0f74c4987b5d091c9a4429e16",
"status": "ACTIVE",
"previousStatus": "INACTIVE"
}
}
}

以下の表は、ペイロード内の各フィールドの機能とサポートされている値を説明しています。

フィールドタイプ説明
actionStringウォレットに対して実行されたアクション有効化: enableUserWallet
無効化: disableUserWallet
dataObjectウォレットステータス変更の詳細を含む
data.walletIdStringウォレットの識別子
data.userIdStringウォレットに関連付けられたユーザーの識別子
data.statusStringウォレットの現在のステータスACTIVE または INACTIVE
data.previousStatusStringウォレットの以前のステータスACTIVE または INACTIVE

ウォレット残高変更通知

以下はwalletBalanceChanged通知のサンプルペイロードです。

{
"type": "walletBalanceChanged",
"payload": {
"action": "credit",
"data": {
"namespace": "namespace123",
"userId": "user123",
"currencyCode": "USD",
"amount": 500,
"reason": "Purchase",
"origin": "System"
}
}
}

以下の表は、ペイロード内の各フィールドの機能とサポートされている値を説明しています。

フィールドタイプ説明
actionStringウォレットに対して実行されたアクション支払い(減少): payWithUserWallet
出金(減少): bulkDebitdebitByWalletPlatformdebitUserWalletByCurrencyCode、または debitUserWallet
期限切れ(減少): これはウォレット期限切れジョブによってトリガーされます。
入金(増加): bulkCredit または creditUserWallet
dataObjectウォレットステータス変更の詳細を含む
data.namespaceStringウォレットが存在するネームスペース
data.userIdStringウォレットに関連付けられたユーザーの識別子
data.currencyCodeString残高に関連付けられた通貨コード
data.amountLongウォレット内の新規または更新された金額
data.reasonString残高変更の理由
data.originString残高変更の起源

ゲームクライアントとの統合

FOnlineSubsystemAccelByte* AccelByteOSS = static_cast<FOnlineSubsystemAccelByte*>(IOnlineSubsystem::Get(ACCELBYTE_SUBSYSTEM));
if(AccelByteOSS == nullptr)
{
// Bail out if AccelByteOSS is not found
return;
}
FOnlineIdentityAccelBytePtr IdentityInterface = StaticCastSharedPtr<FOnlineIdentityAccelByte>(OnlineSubsystem->GetIdentityInterface());
FOnlineWalletAccelBytePtr WalletInterface = StaticCastSharedPtr<FOnlineWalletAccelByte>(OnlineSubsystem->GetWalletInterface());

const int32 LocalUserNum = 0;
// Make sure to connect to lobby first
IdentityInterface->ConnectAccelByteLobby(LocalUserNum);

// To Add a delegate
// walletStatusChanged
FDelegateHandle OnWalletStatusUpdatedHandle = WalletInterface->AddOnWalletStatusChangedNotificationDelegate_Handle(LocalUserNum, FOnWalletStatusChangedNotificationDelegate::CreateLambda([](int32 inLocalUserNum, const FUniqueNetId& UserId, const FAccelByteModelsWalletStatusChangedNotification& Response)
{
// Do Something
}));

// walletBalanceChanged
FDelegateHandle OnBalanceUpdatedHandle = WalletInterface->AddOnWalletBalanceChangedNotificationDelegate_Handle(LocalUserNum, FOnWalletBalanceChangedNotificationDelegate::CreateLambda([](int32 InLocalUserNum, const FUniqueNetId& UserId, const FAccelByteModelsWalletBalanceChangedNotification& WalletBalance)
{
// Do Something
}));

// To remove the delegate
// walletStatusChanged
WalletInterface->ClearOnWalletStatusChangedNotificationDelegate_Handle(LocalUserNum, OnWalletStatusUpdatedHandle);

// walletBalanceChanged
WalletInterface->ClearOnWalletBalanceChangedNotificationDelegate_Handle(LocalUserNum, OnBalanceUpdatedHandle);