ストアをゲームに統合する
パブリッシャーアカウントでグッズ (仮想アイテム、仮想通貨、バンドル、キー)を作成して構成したら、ゲーム内ストアをゲームに追加します:
- アイテムカタログの表示を実装します。
- アイテムを販売するためのロジックを実装します。
商品カタログの表示
ゲーム内ストア&Buy Button APIコールでアイテムカタログの表示を実装します:
タスク | API |
---|---|
ストアに追加された仮想アイテムの完全なリストを表示するには | Get virtual items list |
クライアント側で販売可能な仮想アイテムのグループの一覧を表示するには | Get item groups list |
クライアント側のストアで販売可能な仮想通貨のリストを取得するには | Get virtual currency list |
ストアに追加された仮想通貨パッケージの一覧をクライアント側で表示するには | Get virtual currency package list |
ストアに追加された仮想通貨バンドルの完全なリストを表示するには | Get list of bundles |
アイテムの販売
以下の方法でアイテムを販売することができます:
- 1つの商品を迅速で購入することができます。この場合、1つのSKUを任意の数量で販売することができます。例えば、同じポーションを100個。
- カートの購入。この場合、プレイヤーはあらかじめカートに商品を入れておき、その後、商品の追加や削除、数量の変更を行うことができます。
迅速な購入
- Create order with specified item API を呼び出します。決済UIを開くためのトークンがレスポンスに渡されます。
- 受信した決済トークンを使って、決済UIを開きます。
カート購入
ロジックを実装します:
- カートをセットアップしてトークンを取得するには:
- クライアント上 — 自分でアプリケーションにカートを実装する場合。
- サーバー上 — エクソラのソリューション (ゲーム内ストア&Buy Button APIコール) を使用してカートを管理する場合。
- 決済UIを開くには。
クライアントでカートをセットアップして購入する
アイテムの追加と削除のロジックを自分で実装します。また、カートを設定するためのAPIを呼び出す前には、どのプロモーションが購入に適用されるかの情報がないことを考慮する必要があります。つまり、追加されたボーナスアイテムの合計金額と詳細は不明です。
- プレイヤーがカートを満たした後、Fill cart with items APIを呼び出します。選択されたアイテムの現在の情報(割引前、割引後の価格、ボーナスアイテム)がレスポンスに渡されます。
- Create order with all items from current cart API を呼び出します。注文 ID と決済トークンがレスポンスに渡されます。作成された注文は新規注文ステータスを受け取ります。
- 決済UIを開きます。
サーバーでカートをセットアップして購入する
カートを変更するたびに API 呼び出しを伴う必要があるため、このバリアントはカートのセットアップに時間がかかる場合があります。
次の手順を完了します:
- カートを変更します:
- 商品を追加または商品数量の変更を行うには、Update cart item by card ID API を呼び出します。
- アイテムを削除するには、Delete cart item by card ID API を呼び出します。
- Create order with all items from the current cart API を呼び出します。注文 IDと決済トークンがレスポンスに渡されます。作成された注文は新規注文ステータスを受け取ります。
- 決済UIを開きます。
決済インターフェースを開く
アイテムを支払う場合は、決済UIを開きます。決済UIを開くためのトークンは、Create order with all items from current cart APIレスポンスに渡されます。
以下のいずれかの方法で支払い UI を開くように実装します:
- 新しいウィンドウで。新しいブラウザウィンドウで決済UIを開くには、次のリンクを使用します:
https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN
でトークンACCESS_TOKEN
が注文が作成されたときに受け取る。 - ウィジェット経由。エクソラ決済ステーションウィジェットスクリプトを使用します (READMEファイルには説明が含まれています)。
支払いプロセスのテスト
支払いフローはサンドボックスモードでテストできます。テスト銀行カードと任意の口座を使用できます。
最初の実際の支払いが行われた後、厳格なサンドボックス支払いポリシーが有効になります。サンドボックスモードでの支払いは、パブリッシャーアカウント > 会社設定 > ユーザーで指定されたユーザーのみが利用できます。
エクソラとライセンス契約を締結した後にのみ、仮想通貨と仮想アイテムを実際通貨で購入することができます。これを行うには、パブリッシャーアカウントでの会計 > 利用許諾契約セクションに移動し、契約書フォームに記入し、確認を待ちます。契約書の確認には、最大で3営業日かかる場合があります。
サンドボックスモードを有効/無効にするには、迅速で購入やカート購入のリクエストに含まれるsandbox
パラメータの値を変更する必要があります。サンドボックスモードは、デフォルトではオフになっています。
ユーザーの注文状況を取得
ユーザーの注文状況を取得するには、以下の方法を使用します:
ウェブフックを利用してサーバーサイドでユーザーの注文状況を取得する
サーバーにウェブフックを構成した後、それを使って注文の詳細やステータスを取得することができます。
WebSocket APIまたはIGS&BB APIを経由して、クライアント側でユーザーの注文状況を取得する
サーバーがない場合、またはクライアント側で購入処理のロジックを実装している場合は、次のメソッドを使用できます:
WebSocket API
このメソッドでは、ウェブソケットを使用して、注文自体の詳細な情報を受け取ることなく、注文状況を取得することができます。この方法が望ましい理由は、エクソラクライアントとサーバーの間で1つの接続を確立するだけなので、クライアントやサーバーに追加の負荷がかかることはありません。
次の手順を完了します:
- WebSocketサーバーとクライアントが注文状態のメッセージを識別できるように、チャネル識別子を作成します(パラメータの順序が重要です):
Channel_id: order_id=$orderId&project_id=$projectId
。 - チャンネル登録するには、WebSocketプロトコルでURLに接続します:
wss://store-ws.xsolla.com/sub/order/status?order_id=$orderId&project_id=$projectId
。メッセージ本文には、注文IDと注文状況が記載されます:
- js
{
"order_id": int,
"status": string
}
以下の注文状況があります:
New
— オーダーは作成されたが未払いであるPaid
— 注文は支払われるDone
— 注文が配信されたこと(すべての領収書の送付、エクソラ側での配信、外部プラットフォームでの配信、など)Canceled
— 注文がキャンセルされ、代金がユーザーに返金される
ウェブソケット経由の応答に必要な時間は5分です。その後、またはウェブソケットに問題がある場合は、ショートポーリングを使用することが推奨されます。
ショートポーリング
ステータスを切り替えた後のオーダーのアイテムの詳細情報を取得するには、注文を取得するAPIを呼び出します。
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。