インゲームストア / ストアをゲームに統合する
  ドキュメントに戻る

インゲームストア

ストアをゲームに統合する

アドミンページでグッズ (仮想アイテム、仮想通貨、バンドル、キー)を作成して構成したら、インゲームストアをゲームに追加します:

  1. アイテムカタログの表示を実装します。
  2. アイテムを販売するためのロジックを実装します。

商品カタログの表示

お知らせ
エクソーラAPIを呼び出すには、ゲームエンジンやプラットフォームに対応したSDKの既成のメソッドを利用することができます。

In-Game Store APIコールでアイテムカタログの表示を実装します:

タスクAPI
ストアに追加された仮想アイテムの完全なリストを表示するには仮想アイテムリストを取得
クライアント側で販売可能な仮想アイテムのグループの一覧を表示するにはアイテムグループリストを取得する
クライアント側のストアで販売可能な仮想通貨のリストを取得するには仮想通貨リストを取得する
ストアに追加された仮想通貨パッケージの一覧をクライアント側で表示するには仮想通貨パッケージリストを取得
ストアに追加されたバンドルの完全なリストを表示するにはバンドルのリストを取得
お知らせ
カタログ取得メソッドは、リクエスト時にストアに表示されているアイテムを返します。表示期間がまだ開始されていないまたは既に終了しているアイテムの情報を取得するには、カタログをリクエストする際に、「show_inactive_time_limited_items」パラメータを値「1」で渡します。

アイテムの販売

以下の方法でアイテムを販売することができます:

  1. 1つの商品を迅速で購入することができます。この場合、1つのSKUを任意の数量で販売することができます(例えば、100個の同じポーションや、カスタム量の仮想通貨など)。
  2. カート購入。この場合、プレイヤーはあらかじめカートに商品を入れておき、その後、商品の追加や削除、数量の変更を行うことができます。

迅速な購入

  1. 指定したアイテムで注文を作成する API を呼び出します。決済UIを開くためのトークンがレスポンスに渡されます。
  2. 受信した決済トークンを使って、決済UIを開きます。
お知らせ
割引に関する情報(パーソナライズされたもの、または購入に関連するもの)は、決済UIでのみユーザーに提供されます。プロモーションコードの使用は提供されません。
お知らせ
エクソーラAPIを呼び出すには、ゲームエンジンやプラットフォームに対応したSDKの既成のメソッドを利用することができます。

カート購入

ロジックを実装します:
  1. カートをセットアップしてトークンを取得するには:
  2. 決済UIを開くには

クライアントでカートをセットアップして購入する

アイテムの追加と削除のロジックを自分で実装します。また、カートを設定するためのAPIを呼び出す前には、どのプロモーションが購入に適用されるかの情報がないことを考慮する必要があります。つまり、追加されたボーナスアイテムの合計金額と詳細は不明です。

  1. プレイヤーがカートを満たした後、カートにアイテムを入れる APIを呼び出します。選択されたアイテムの現在の情報(割引前、割引後の価格、ボーナスアイテム)がレスポンスに渡されます。
  2. 現在のカートの全アイテムを対象とした注文を作成する API を呼び出します。注文 ID と決済トークンがレスポンスに渡されます。作成された注文は新規注文ステータスを受け取ります。
  3. 決済UIを開きます。
お知らせ
エクソーラAPIを呼び出すには、ゲームエンジンやプラットフォームに対応したSDKの既成のメソッドを利用することができます。

サーバーでカートをセットアップして購入する

カートを変更するたびに API 呼び出しを伴う必要があるため、このバリアントはカートのセットアップに時間がかかる場合があります。

次の手順を完了します:

  1. カートを変更します:

お知らせ
カートの現在のステータスを取得するには、現在のユーザーのカートを取得 API を呼び出します。
  1. 現在のカートの全アイテムを対象とした注文を作成する API を呼び出します。注文 IDと決済トークンがレスポンスに渡されます。作成された注文は新規注文ステータスを受け取ります。
  2. 決済UIを開きます

決済インターフェースを開く

アイテムを支払う場合は、決済UIを開きます。決済UIを開くためのトークンは、現在のカートの全アイテムを対象とした注文を作成する APIレスポンスに渡されます。

以下のいずれかの方法で支払い UI を開くように実装します:

支払いプロセスのテスト

支払いフローはサンドボックスモードでテストできます。テスト銀行カードと任意の口座を使用できます。

お知らせ

最初の実際の支払いが行われた後、厳格なサンドボックス支払いポリシーが有効になります。サンドボックスモードでの支払いは、アドミンページ > 会社設定 > ユーザーで指定されたユーザーのみが利用できます。

エクソーラとライセンス契約を締結した後にのみ、仮想通貨と仮想アイテムを実際通貨で購入することができます。これを行うには、アドミンページでの「契約&納税 > 契約」セクションに移動し、契約書フォームに記入し、確認を待ちます。契約書の確認には、最大で3営業日かかる場合があります。

サンドボックスモードを有効/無効にするには、迅速で購入カート購入のリクエストに含まれるsandboxパラメータの値を変更する必要があります。サンドボックスモードは、デフォルトではオフになっています。

ユーザーの注文状況を取得

ユーザーの注文状況を取得するには、以下の方法を使用します:

  1. サーバー側でウェブフックを利用する
  2. クライアント側でWebSocket APIまたはIGS APIを使用する

ウェブフックを利用してサーバーサイドでユーザーの注文状況を取得する

サーバーにウェブフックを構成した後、それを使って注文の詳細やステータスを取得することができます。

WebSocket APIまたはIGS APIを経由して、クライアント側でユーザーの注文状況を取得する

サーバーがない場合、またはクライアント側で購入処理のロジックを実装している場合は、次のメソッドを使用できます:
  1. WebSocket API
  2. Short-polling

WebSocket APIを使用してクライアント側で注文状況の取得

このソリューションでは、websocketを使用して、注文の詳細情報を取得せずに注文状況を取得します。このメソッドが推奨されます:クライアント(例えば、ウェブサイトやモバイルアプリケーション)とエクソーラサーバー間には1つの接続しか作成されないため、クライアントやサーバーへの追加の負荷は発生しません。

お知らせ
ウェブフックを処理する独自のサーバーがない場合や、クライアントサイドの購入処理ロジックを使用する場合は、Centrifuge SDKを使用してWebSocket APIを使用することができます。

以下の手順を完了してください:

  1. エクソーラのwebsocketサーバーとクライアントが注文状況メッセージを識別できるようにするために、接続を作成します:

Copy
Full screen
Small screen
const client = new Centrifuge(
connectionURL,
{
data: {
  user_external_id: user_external_id,
  auth: auth,
  project_id: project_id
}
}
)
connectionURL - wss://ws-store.xsolla.com/connection/websocket
auth - user JWT token
  1. 注文状況に関する新しいメッセージを受信するには、client.on関数を使用してイベントを登録します:
Copy
Full screen
Small screen
client.on('publication', (ctx) => {
   //handle the status
});
  1. 実際の接続確立をトリガーします:
Copy
Full screen
Small screen
client.connect()
  1. 注文状況の変更履歴を受信するには、API履歴メソッドに接続してください。
Copy
Full screen
Small screen
client.on('subscribed', function (ctx) {
   client.history(ctx.channel, { limit: -1, since: { offset: 0 }, reverse: false }).then(function (resp) {
resp.publications.forEach((ctx) => {
   /handle the status
});

   }, function (err) {
       //handle the status
   });
});

メッセージ本文の例

Copy
Full screen
Small screen
{
order_id: 59614241,
status: 'new'
}

以下の注文状況があります:

  • New — オーダーは作成されたが未払いである
  • Paid — 注文は支払われる
  • Done — 注文が配信されたこと(すべての領収書の送付、エクソーラ側での配信、外部プラットフォームでの配信、など)
  • Canceled — 注文がキャンセルされ、代金がユーザーに返金される

Websocketの使用に関する推奨事項:

  • Websocket経由の応答待ち時間は最大5分です。
  • 決済インターフェースを開くときに接続を確立する必要があります。
  • 最終的な注文ステータスがCanceledまたはDoneになったら、接続を中止する必要があります。
  • WebSocket の寿命が切れた場合、または接続に問題がある場合は、ショートポーリングを使用します。

    ショートポーリング

    ステータスを切り替えた後のオーダーのアイテムの詳細情報を取得するには、注文を取得するAPIを呼び出します。

    お知らせ
    定期的な注文状況のポーリングが使用されます。これは、注文状況と注文に関する情報を受信する単純なHTTPリクエストです。リクエスト間の推奨遅延時間は3秒です。
    この記事は役に立ちましたか?
    ありがとうございます!
    改善できることはありますか? メッセージ
    申し訳ありません
    この記事が参考にならなかった理由を説明してください。 メッセージ
    ご意見ありがとうございました!
    あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
    最終更新日: 2024年11月8日

    誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。

問題を報告する
当社は常にコンテンツを見直しています。お客様のご意見は改善に役立ちます。
フォローアップ用のメールをご提供してください
ご意見ありがとうございました!