ユーザーの注文状況を取得
ユーザーの注文状況を取得
ユーザーの注文状況を取得するには、以下の方法を使用します:
ウェブフックを利用してサーバーサイドでユーザーの注文状況を取得する
サーバーにウェブフックを構成した後、それを使って注文の詳細やステータスを取得することができます。WebSocket APIまたはIGS APIを経由して、クライアント側でユーザーの注文状況を取得する
サーバーがない場合、またはクライアント側で購入処理のロジックを実装している場合は、次のメソッドを使用できます:WebSocket APIを使用してクライアント側で注文状況の取得
このソリューションでは、websocketを使用して、注文の詳細情報を取得せずに注文状況を取得します。このメソッドが推奨されます:クライアント(例えば、ウェブサイトやモバイルアプリケーション)とエクソーラサーバー間には1つの接続しか作成されないため、クライアントやサーバーへの追加の負荷は発生しません。
お知らせ
ウェブフックを処理する独自のサーバーがない場合や、クライアントサイドの購入処理ロジックを使用する場合は、Centrifuge SDKを使用してWebSocket APIを使用することができます。
以下の手順を完了してください:
- エクソーラのwebsocketサーバーとクライアントが注文状況メッセージを識別できるようにするために、接続を作成します:
Copy
- 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
関数を使用してイベントを登録します:
Copy
- javascript
client.on('publication', (ctx) => {
//handle the status
});
- 実際の接続確立をトリガーします:
Copy
- javascript
client.connect()
- 注文状況の変更履歴を受信するには、API履歴メソッドに接続してください。
Copy
- 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
});
});
メッセージ本文の例:
Copy
- javascript
{
order_id: 59614241,
status: 'new'
}
以下の注文状況があります:
New
— オーダーは作成されたが未払いであるPaid
— 注文は支払われるDone
— 注文が配信されたこと(すべての領収書の送付、エクソーラ側での配信、外部プラットフォームでの配信、など)Canceled
— 注文がキャンセルされ、代金がユーザーに返金される
ウェブソケット経由の応答に必要な時間は5分です。その後、またはウェブソケットに問題がある場合は、ショートポーリングを使用することが推奨されます。
ショートポーリング
ステータスを切り替えた後のオーダーのアイテムの詳細情報を取得するには、注文を取得するAPIを呼び出します。
お知らせ
定期的な注文状況のポーリングが使用されます。これは、注文状況と注文に関する情報を受信する単純なHTTPリクエストです。リクエスト間の推奨遅延時間は3秒です。
この記事は役に立ちましたか?
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。