概要
Digital Distribution Hub - ゲーム開発者と、ゲーム、仮想アイテム及び仮想通貨配信のための独自のプラットフォームやエコシステムを持つ複数の配信パートナーとをつなぐソリューションです。
配信者パートナー — ゲームとゲーム内アイテムを配信し、独自のストアフロントと請求を行うことができるデジタルプラットフォームまたはエコシステム。エクソラの販売パートナーの例:
- 複数のサービスをバンドルするスーパーアプリ
- バンキングアプリケーション
- 通信&インターネットサービスプロバイダー
- キャッシュキオスク
- キャッシュバックおよびリワードプログラムプロバイダー
- ECマーケットプレイス
ゲーム開発者側のメリット:
- 急成長している配信パートナーと直結し、ゲームの視聴者を拡大します。
- ユニークなユーザー層を持つ新たな流通チャネルにゲームを追加することで、収益を拡大します。
- 広告やバナーを通じて、第三者のプラットフォームにおけるオーガニックな発見力を高めます。
配信パートナー側のメリット:
- ゲームコンテンツへのアクセス拡大によるユーザーのロイヤリティ向上します。ユーザーは、アプリやサービスから直接ゲームキー、仮想アイテム、仮想通貨及びバンドルを購入することができるようになります。
- ゲーム業界の人気の高まりを通じて、現在のユーザーを維持し、新しいユーザーを引き付けています。
- ゲーム産業市場の最大手企業のゲームキー、仮想アイテム、仮想通貨の販売手数料による収入を増加します。
どのように動作するか
ゲームキー購入時のユーザーフロー
仮想アイテムや仮想通貨を購入する際のユーザーフロー
統合フロー
- ゲーム開発者はパブリッシャーアカウントでプロジェクトを作成し、ゲームキー、仮想アイテム、仮想通貨、バンドルなどをアップロードします。
- 配信パートナーが以下のユーザーデータをリクエストします:
- キーの送信先となるユーザーのメールアドレス;
- アイテムが追加されるユーザーのゲーム内ID。
- 配信パートナーのインターフェースのユーザーは、キーを受け取るためのメールアドレスまたはアイテムを受け取るためのユーザーIDを入力します。
- 配信パートナーがユーザートークンを作成するを呼び出し、パラメータとしてメールアドレスまたはユーザーIDを渡します。
- エクソラは、ユーザーがゲームに存在するかどうか、ゲーム開発者がウェブフックを有効にしているかどうかを確認します。ゲームキー販売用のウェブフックの搭載は任意です。ただし、仮想アイテムや仮想通貨を販売する場合は必要です。
- エクソラはユーザーデータでトークンを作成し、配信パートナーにトークンを送信します。
- 配信パートナーは、ゲームカタログまたはゲーム内アイテムカタログを要求します。
- エクソラは、リクエストされたカタログを応答で返します。
- 配信パートナーはカタログを受け取り、ユーザーに表示します。
- ユーザーがゲームを購入します。ディストリビューターパートナーがカートを作成します。
- 配信パートナーは、注文を作成するためにユーザーのカートを送信します。
- エクソラは、注文IDと、割引や税金を含むカートの価格を返します。
- 配信パートナーは、カート内のゲームの総コストをユーザーに表示します。
- ユーザーが支払いを続ける場合、配信パートナーはユーザーの資金を引き落とし、決済状態ページを表示します。
- 配信パートナーは、注文の支払いが完了したことをエクソラに通知し、支払い情報を送信します。
- エクソラはゲーム開発者に購入を通知します。
- ゲームを購入したユーザーは、購入の詳細が記載されたメールを受け取り、ゲームキーをアクティブ化できます。ユーザーが仮想アイテムまたは仮想通貨を購入した場合、インベントリに追加されます。
ゲーム開発者側での統合
Digital Distribution Hubの接続方法
配信チャネルを通じてゲームを宣伝するには:
- パブリッシャーアカウントでストアを接続して以下のことをダウンロードします:
- ウェブフックをセットアップします。
- プロジェクトのDigital Distribution Hubをアクティブ化するには、アカウントマネージャーに連絡するか、am@xsolla.comにメールを送信てください。
ウェブフックをセットアップする方法
ウェブフックのセットアップは必須です:
- ユーザーを検証し、ゲーム内のユーザーIDによってカタログをパーソナライズするため。
- ユーザーを検証し、購入した仮想アイテムや仮想通貨をインベントリに追加するため;
- エクソラ側のトランザクションIDとゲーム開発者側のシステムのトランザクションIDを連携するため;
- 購入通知を受信するため。
ウェブフックを有効にするには:
- パブリッシャーアカウントであなたのプロジェクトを開きます。
- サイドメニューでプロジェクト設定をクリックしてウェブフックに移動します。
- ウェブフックトグルをオンにします。
- ウェブフックURLを指定します。
- プロジェクトのウェブフックに署名するための秘密鍵は、デフォルトで生成されます。新しい秘密鍵を生成する場合は、更新アイコンをクリックします。
- 設定を保存するをクリックします。
ユーザー検証
エクソラはユーザー検証ウェブフックを送信し、ユーザーがゲーム内に存在することを検証します。ユーザー検証では、以下のことが可能です:
- 応答にユーザー属性を渡すと、そのユーザー用にパーソナライズされたカタログを表示する;
- 購入後、ユーザーのインベントリにアイテムを追加する。
ウェブフックの受信を確認するには、サーバーは以下の情報を返す必要があります:
- ゲーム内にユーザーが存在する場合、メッセージボディのないHTTPコード204が表示されます;
- 指定されたユーザーが見つからないか、無効な署名が渡された場合、問題を説明するHTTPコード400が表示されます。
ウェブフックの全リストと仕組みは、例を含めてAPIリファレンスで詳しく説明されています。
応答として、custom_parameters
オブジェクトで追加の取引パラメータを渡すことができます。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"additionalProperties": false,
"properties": {
"user_attributes": {
"type": "object",
"required": false,
"minProperties": 1,
"maxProperties": 100,
"patternProperties": {
"^[\\w-_.]{1,255}$": {
"oneOf": [
{
"type": "integer"
},
{
"type": "string",
"minLength": 1,
"maxLength": 255
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 255
},
"minItems": 1,
"maxItems": 1000
}
]
}
},
"additionalProperties": false
}
}
}
応答の例:
- http
{
"user_attributes": {
"age": 18,
"level": 1,
"game": "WoW",
"is_baned": false,
"registration_date": "2022-01-01"
}
}
トランザクションのID連携
external ID(システムのトランザクションID)を使用していて、それをエクソラ側のトランザクションIDに関連付けたい場合は、以下のウェブフック処理を実装します:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"additionalProperties": false,
"properties": {
"notification_type": {
"type": "string"
},
"order_id": {
"type": "integer"
},
"project_id": {
"type": "integer"
},
"user": {
"type": "object",
"properties": {
"external_id": {
"type": "string"
},
"email": {
"type": ["string", "null"]
}
}
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"item_id": {
"type": "integer"
},
"sku": {
"type": "string"
},
"quantity": {
"type": "integer"
},
"type": {
"type": "string"
}
}
}
}
}
}
リクエストの例:
- http
{
"notification_type": "create_external_transaction",
"order_id": 1,
"project_id": 51336,
"user": {
"external_id": "user_id",
"email": null
},
"items": [
{
"item_id": 101,
"sku": "mithril_dagger",
"quantity": 2,
"type": "virtual_good"
}
]
}
応答として、custom_parameters
オブジェクトで追加の取引パラメータを渡すことができます。
予期された応答:
{
"id": "validation_transaction_info_response.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "DDH Project Transaction Info Response",
"type": "object",
"additionalProperties": true,
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"custom_parameters": {
"type": "object",
"additionalProperties": true,
"minProperties": 1,
"maxProperties": 200
}
}
}
応答の例:
- http
{
"id":"123"
}
トランザクションIDを連携するためのウェブフックパラメータのリスト:
パラメータ | 種類 | 説明文 |
---|---|---|
notification_type | string | 通知の種類。 |
order_id | integer | 注文ID。 |
project_id | integer | ゲームキー、ゲームキーバンドル、ゲーム内アイテム、ゲーム内アイテムバンドルがロードされるプロジェクトのID。 |
user.external_id | string | ゲーム開発者側のユーザーID。 |
items | string | ユーザーが購入したアイテムのリスト。 |
items.sku | array | アイテムの一意のID。game_key タイプのアイテムは、sku_drm フォーマットの値を使用します。 |
items.type | array | アイテムの種類。以下の値を持つことができます:virtual_good 、virtual_currency 、game_key 、physical_good 。 |
items.quantity | integer | アイテムの数量。 |
購入通知
ユーザーが購入代金を支払った後、以下のことを取得します:
- 決済情報を含む決済ウェブフック。
- インベントリに追加されるアイテムに関する情報が含まれているカートのコンテンツウェブフック。
配信パートナー側での統合
統合マネージャー(psbusiness@xsolla.com)までメールでお問い合わせいただき、Digital Distribution Hub APIと連携するために必要なパラメータを取得します:
アプリやサービスでゲームやゲーム内アイテムを配信する場合は、以下のゲーム購入ロジックを実装します:
- ゲーム内でユーザーのメールアドレスやユーザーIDを入力するためのフォームを表示します。
このメールアドレスは、ゲームキーやゲームキーバンドルなどを販売するプロジェクトで使用されます。この場合、ユーザーがDRMを選択できるようにする機能もインターフェースに実装する必要があります。
ユーザーIDは、仮想アイテム、仮想通貨、アイテムや通貨とのバンドル販売を行うプロジェクトで使用されます。この場合、ゲーム登録時に受け取ったIDを入力するためのヒントも表示する必要があります。例:

- 受信したメールアドレスまたはユーザーIDを渡して、ユーザーがゲーム内に存在するかどうかを確認し、認証トークンを受信します。ユーザートークンを作成するメソッドを使用します。リクエストにパラメータを渡します:
パラメータ | 種類 | 説明文 |
---|---|---|
project_id | integer | ゲームキー、ゲームキーバンドル、ゲーム内アイテム、ゲーム内アイテムバンドルがロードされるプロジェクトのID。 |
user.email | string | ユーザーのメールアドレス。 |
user.id | string or null | ゲーム内で一意のユーザー識別子。 |
- 応答でユーザーデータを含む認証トークンが返されます。
- インポート:
- ゲームカタログ。ゲームリストを取得するメソッドを使用します;
- 仮想アイテムカタログ、仮想アイテムを取得するリストメソッドを使用する;
- 仮想通貨カタログ。仮想通貨リストを取得するメソッドを使用します;
- ゲームまたはゲーム内アイテムカタログのバンドル。バンドルリストを取得するメソッドを使用します。
- リクエストには、手順2で受け取ったトークンと、以下のパラメータを渡します:
パラメータ | 種類 | 説明文 |
---|---|---|
project_id | integer | ゲームキー、ゲームキーバンドル、ゲーム内アイテム、ゲーム内アイテムバンドルがロードされるプロジェクトのID。 |
- ゲームとゲーム内アイテムのカタログをストアフロントに表示します。インターフェースでは、選択する機能を実装しています:
- ゲームキーの数量;
- ゲーム内アイテムの数量;
- 固定金額の仮想通貨または仮想通貨パッケージの数量;
- バンドルの数量。
- カートを使用する場合は、ユーザーのカートでアイテムの数量を指定することができます。カートを使用しない場合、アイテムの数量の選択はカタログに実装することができます。
- カート内のアイテム数量を指定する例:

- カタログ内のアイテム数量を指定する例:

- カートを使用しない場合は、ステップ6に進み、指定されたアイテムで注文を作成するメソッドを使用します。
- カートにアイテムを入れるには、カートにアイテムを入れるメソッドを使用します。
- ユーザーは、1つの注文でアイテムを追加および削除したり、数量を変更したりできます。以下のメソッドを使ってカートを更新することができます:
- ユーザーがカートの中身を変更するたびにはカートにアイテムを入れるメソッド
- カートを更新する、商品を削除するメソッド:
- この場合、カートを更新した後に現在のユーザーのカートを取得するを使用します。
- カートの入力および更新方法のリクエストで、次のパラメータを渡します:
パラメータ | 種類 | 説明文 |
---|---|---|
project_id | integer | ゲームキー、ゲームキーバンドル、ゲーム内アイテム、ゲーム内アイテムバンドルがロードされるプロジェクトのID。 |
items.sku | string | アイテムの一意のID。game_key タイプのアイテムは、sku_drm フォーマットの値を使用します。 |
items.quantity | integer | アイテムの数量。 |
- カートにアイテムを入れるまたは現在のユーザーのカートを取得するを呼び出した後、レスポンスは選択された商品に関する最新の情報(割引前と割引後の価格、ボーナス商品)を返します。
- 注文を作成し、カート内のアイテムの代金を支払うには、現在のカートの全アイテムを含む注文を作成するメソッドを使用します。リクエストには、以下のパラメータを渡します:
パラメータ | 種類 | 説明文 |
---|---|---|
project_id | integer | ゲームキー、ゲームキーバンドル、ゲーム内アイテム、ゲーム内アイテムバンドルがロードされるプロジェクトのID。 |
| number | エクソラ側の配信者パートナーID。 |
| string | 注文の通貨。仮想通貨はSKU、現実の通貨は3文字のISO 4217コードを使用します。 |
- 応答には、注文IDと税込みカート価格が返されます。
- ユーザーにカートの合計金額を表示します。
- プラットフォームからユーザーの資金を引き落とします。ユーザーに決済状態を表示します。
- 支払い通知を送信し、リクエストに以下のパラメータを渡します:
パラメータ | 種類 | 説明文 |
---|---|---|
project_id | integer | ゲームキー、ゲームキーバンドル、ゲーム内アイテム、ゲーム内アイテムバンドルがロードされるプロジェクトのID。 |
payment.amount | integer | 支払額。 |
order_id | integer | 注文ID。 |
ps_transaction_id | string | 配信パートナー側のトランザクションID。 |
この記事は役に立ちましたか?
このページを評価する
答えたくない
ご意見ありがとうございました!
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。