サードパーティストアでアイテムの取り消しを管理する
注釈:本資料はAI技術を用いて翻訳されています。
概要
AccelByte Gaming Services(AGS)の取り消しサービスは、サードパーティストアと統合し、サービスのロジックを使用してプレイヤーのインベントリからアイテムを同期および取り消すことができます。統合の一環として、ストアの注文データを AGS の取り消しエンドポイントにマッピングするミドルウェアとして機能するサーバーをセットアップする必要があります。
統合されたサードパーティストアを通じてプレイヤーにアイテムを付与する方法については、サードパーティストアでアイテムのフルフィルメントを管理するも参照してください。
この記事では、サードパーティストアでアイテムの取り消しを管理する方法について説明します。
前提条件
- ユーザー認証:ユーザー認証を実装し、プレイヤーの有効なユーザー ID を持っていることを確認してください。
- API エンドポイントのアクセストークン:フルフィルメントおよび取り消しエンドポイントにアクセスするために必要なアクセストークンと権限があることを確認してください。
- ミドルウェアのセットアップ:サードパーティストアの注文データを AGS API リクエスト形式にマッピングおよび変換するためのミドルウェアサーバーをセットアップします。
- アイテムの設定:付与されるアイテムを AGS で設定し、サードパーティストアで販売されているアイテムと一致することを確認します。
- インベントリ統合:予期しないエンタイトルメント更新を防ぐため、Inventory サービスと Commerce サービスの統合が有効になっていないことを確認してください。
- 取り消し設定:仮想通貨およびその他の消費可能アイテムの取り消しの処理など、特定の取り消しシナリオを処理する方法に基づいて取り消しルールを設定します。
サポートされているアイテムタイプ
サードパーティの取り消し方法は、次のアイテムタイプをサポートしています。
- 永続および消費可能なゲーム内アイテム
- バンドル
- コイン
- メディア
- オプションボックス
- ルートボックス
- 個別のアイテムとして、またはバンドルの一部として、サポートされているアイテムタイプは、AGS ストアと統合されたサードパーティストアの両方でアクティブである限り、正常に取り消すことができます。無効化されたアイテムでも、両方のストアプラットフォームに存在する限り、取り消すことができます。ただし、削除されたアイテム、または両方のストアプラットフォームに存在しなくなったアイテムは取り消すことができません。
- ルートボックスとオプションボックスが開かれ、内容が明らかになった場合、エンタイトルメントは消費されたと見なされ、取り消しは失敗します。
仮想通貨およびその他の消費可能アイテムの取り消しの処理
仮想通貨およびその他の消費可能アイテムの取り消しは複雑で、プレイヤーによる悪用の可能性があります。次のように取り消し戦略を設定することをお勧めします。
-
仮想通貨:取り消されるアイテムが仮想通貨またはその他の消費可能アイテムである場合は、マイナスのウォレット残高を許可するように取り消し戦略を変更することを検討してください。これは、仮想通貨がプレイヤーによってすでに使用されている場合に特に重要です。たとえば、プレイヤーがすべての通貨を使用した後に取り消しが実行された場合、ゲームの経済の整合性を維持するために、残高がマイナスになる必要がある場合があります。
-
その他の消費可能アイテム:消費可能なゲーム内アイテムがすでに使用または消費されている場合、取り消しは困難になる可能性があります。不整合や潜在的な詐欺を回避するために、取り消し戦略にそのようなシナリオを処理するための明確なルールが含まれていることを確認してください。
取り消し戦略を管理するには、取り消しルールを設定するを参照してください。
API エンドポイント
サードパーティストアを通じたアイテムのフルフィルメントは、Revoke Fulfillment V2 エンドポイントを通じて管理されます。
Revoke Fulfillment V2
PUT /v2/admin/namespaces/{namespace}/users/{userId}/fulfillments/{transactionId}/revoke エンドポイントは、提供されたトランザクション ID に基づいてアイテムを取り消し、取り消しステータスを記録します。
リクエストが失敗した場合は、問題を修正し、同じ transactionId を使用して取り消しを再試行してください。レスポンスのエラーメッセージは、問題を特定するのに役立ちます。
サンプルレスポンス
{
"id": "string",
"namespace": "string",
"userId": "UUID",
"transactionId": "string",
"state": "REVOKED",
"items": [
{
"itemId": "UUID",
"itemSku": "string",
"itemType": "enum",
"quantity": 1
}
],
"stateInfo": {
"successList": [
{
"itemId": "item-id-1",
"itemSku": "item-sku-1"
},
{
"itemId": "bundle-item-id-2",
"itemSku": "bundle-item-sku-2",
"Items": {
"itemId: "item-id-3",
"quantity": 3
}
}
],
"failedList": [
{
"itemId": "item-id-4",
"itemSku": "item-sku-4",
"error": "failure reason"
},
{
"itemId": "bundle-item-id-5",
"itemSku": "bundle-item-sku-5",
"Items": {
"itemId: "item-id-6",
"quantity": 6,
"error": "failure reason"
}
}
]
},
"entitlementSummaries": [],
"creditSummaries": [],
"subscriptionSummaries": []
}