ストアをゲームに統合する
アドミンページでグッズ (仮想アイテム、仮想通貨、バンドル、キー)を作成して構成したら、インゲームストアをゲームに追加します:
- アイテムカタログの表示を実装します。
- アイテムを販売するためのロジックを実装します。
商品カタログの表示
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 |
1
」で渡します。アイテムの販売
以下の方法でアイテムを販売することができます:
- 1つの商品を迅速で購入することができます。この場合、1つのSKUを任意の数量で販売することができます(例えば、100個の同じポーションや、カスタム量の仮想通貨など)。
- カート購入。この場合、プレイヤーはあらかじめカートに商品を入れておき、その後、商品の追加や削除、数量の変更を行うことができます。
迅速な購入
- Create order with specified item API を呼び出します。決済UIを開くためのトークンがレスポンスに渡されます。
- 受信した決済トークンを使って、決済UIを開きます。
カート購入
ロジックを実装します:- カートをセットアップしてトークンを取得するには:
- クライアント上 — 自分でアプリケーションにカートを実装する場合。
- サーバー上 — エクソーラのソリューション(In-Game Store 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 APIを経由して、クライアント側でユーザーの注文状況を取得する
サーバーがない場合、またはクライアント側で購入処理のロジックを実装している場合は、次のメソッドを使用できます:WebSocket APIを使用してクライアント側で注文状況の取得
このソリューションでは、websocketを使用して、注文の詳細情報を取得せずに注文状況を取得します。このメソッドが推奨されます:クライアント(例えば、ウェブサイトやモバイルアプリケーション)とエクソーラサーバー間には1つの接続しか作成されないため、クライアントやサーバーへの追加の負荷は発生しません。
以下の手順を完了してください:
- エクソーラのwebsocketサーバーとクライアントが注文状況メッセージを識別できるようにするために、接続を作成します:
- javascript
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
- 注文状況に関する新しいメッセージを受信するには、
client.on
関数を使用してイベントを登録します:
- javascript
client.on('publication', (ctx) => {
//handle the status
});
- 実際の接続確立をトリガーします:
- javascript
client.connect()
- 注文状況の変更履歴を受信するには、API履歴メソッドに接続してください。
- javascript
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
});
});
メッセージ本文の例:
- javascript
{
order_id: 59614241,
status: 'new'
}
以下の注文状況があります:
New
— オーダーは作成されたが未払いであるPaid
— 注文は支払われるDone
— 注文が配信されたこと(すべての領収書の送付、エクソーラ側での配信、外部プラットフォームでの配信、など)Canceled
— 注文がキャンセルされ、代金がユーザーに返金される
ウェブソケット経由の応答に必要な時間は5分です。その後、またはウェブソケットに問題がある場合は、ショートポーリングを使用することが推奨されます。
ショートポーリング
ステータスを切り替えた後のオーダーのアイテムの詳細情報を取得するには、注文を取得するAPIを呼び出します。
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。