GS2-Showcase SDK for Game Engine API リファレンス
モデル
EzSalesItem
陳列棚
商品を購入するために必要となる対価と商品を購入したときに得られる報酬を設定します。
EzSalesItemGroup
商品グループ
商品グループは陳列棚に陳列するためのエンティティです。
商品グループには複数の商品を所属させることができ、所属している商品の先頭から順番に購入可能かを判定し、一番最初に購入可能だと判定された商品が実際に陳列されます。
初回のみ割引する商品や、ステップアップガチャのように購入回数によって商品の内容が変化する仕組みに使用できます。
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
name | string | ✓ | | ~ 128文字 | 商品グループ名 |
metadata | string | | | ~ 2048文字 | メタデータ |
salesItems | List<EzSalesItem> | ✓ | | | 商品グループに含める商品 |
EzShowcase
陳列棚
陳列棚には販売期間を設定できます。
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
name | string | ✓ | | ~ 128文字 | 商品名 |
metadata | string | | | ~ 2048文字 | メタデータ |
displayItems | List<EzDisplayItem> | ✓ | | | 陳列された商品リスト |
EzDisplayItem
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
displayItemId | string | ✓ | UUID | ~ 36文字 | 陳列商品ID |
type | enum [‘salesItem’, ‘salesItemGroup’] | ✓ | | ~ 128文字 | 種類 |
salesItem | EzSalesItem | {type} == “salesItem” | | | 陳列する商品 |
salesItemGroup | EzSalesItemGroup | {type} == “salesItemGroup” | | | 陳列する商品グループ |
EzConfig
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
key | string | | | ~ 64文字 | 名前 |
value | string | | | ~ 51200文字 | 値 |
EzConsumeAction
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
action | enum [] | ✓ | | ~ 128文字 | スタンプタスクで実行するアクションの種類 |
request | string | ✓ | | ~ 1048576文字 | 入手リクエストのJSON |
EzAcquireAction
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
action | enum [] | ✓ | | ~ 128文字 | スタンプシートを使用して実行するアクションの種類 |
request | string | ✓ | | ~ 1048576文字 | リクエストのJSON |
メソッド
buy
商品を購入します
Request
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
namespaceName | string | ✓ | | ~ 32文字 | ネームスペース名 |
showcaseName | string | ✓ | | ~ 128文字 | 商品名 |
accessToken | string | ✓ | | ~ 128文字 | ユーザーID |
displayItemId | string | ✓ | UUID | ~ 36文字 | 陳列商品ID |
quantity | int | ✓ | 1 | 1 ~ 1000 | 購入数量 |
config | List<EzConfig> | | [] | | スタンプシートの変数に適用する設定値 |
Result
| 型 | 説明 |
---|
item | EzSalesItem | 商品 |
transactionId | string | 発行されたスタンプシートのトランザクションID |
stampSheet | string | 購入処理の実行に使用するスタンプシート |
stampSheetEncryptionKeyId | string | スタンプシートの署名計算に使用した暗号鍵GRN |
autoRunStampSheet | bool | スタンプシートの自動実行が有効か |
実装例
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Showcase(
showcaseName: "showcase-0001"
);
var result = await domain.BuyAsync(
displayItemId: "display-item-0001",
quantity: null,
config: null
);
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Showcase(
showcaseName: "showcase-0001"
);
var future = domain.Buy(
displayItemId: "display-item-0001",
quantity: null,
config: null
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
const auto Domain = Gs2->Showcase->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Showcase(
"showcase-0001" // showcaseName
);
const auto Future = Domain->Buy(
"display-item-0001", // displayItemId
nullptr, // quantity
nullptr // config
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
getShowcase
商品棚を取得
Request
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
namespaceName | string | ✓ | | ~ 32文字 | ネームスペース名 |
accessToken | string | ✓ | | ~ 128文字 | ユーザーID |
showcaseName | string | ✓ | | ~ 128文字 | 商品名 |
Result
実装例
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Showcase(
showcaseName: "showcase-0001"
);
var item = await domain.ModelAsync();
var domain = gs2.Showcase.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Showcase(
showcaseName: "showcase-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Showcase->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Showcase(
"showcase-0001" // showcaseName
);
const auto item = Domain.Model();