Game Sales / ユーザーの注文状況を取得

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

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

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

  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年11月8日

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

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