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

インゲームストア

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

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

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

商品カタログの表示

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

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

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

アイテムの販売

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

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

迅速な購入

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

カート購入

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

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

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

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

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

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

次の手順を完了します:

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

お知らせ
カートの現在のステータスを取得するには、Get current user’s cart API を呼び出します。
  1. Create order with all items from the current cart API を呼び出します。注文 IDと決済トークンがレスポンスに渡されます。作成された注文は新規注文ステータスを受け取ります。
  2. 決済UIを開きます

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

アイテムを支払う場合は、決済UIを開きます。決済UIを開くためのトークンは、Create order with all items from current cart 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 — 注文がキャンセルされ、代金がユーザーに返金される

ウェブソケット経由の応答に必要な時間は5分です。その後、またはウェブソケットに問題がある場合は、ショートポーリングを使用することが推奨されます。

ショートポーリング

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

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

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

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