注文状況を追跡する

お知らせ
SDKはアプリケーションのクライアント側で注文のステータスを追跡することを可能にします。ただし、完了した購入の追加の検証を実装するために、アプリケーションのバックエンドで支払いウェブフックハンドラを設定することをお勧めします。これにより、注文情報を受け取ることができます。

ユーザーが購入した後、アプリケーションは以下のアクションを実行することができます:

  • アプリケーションUIに注文状態を表示する
  • 支払い完了後、ユーザーの残高を計上する
  • 支払い完了後、購入したアイテムを付与する

SDKを使用してこれらのアクションのロジックを実装する場合、次の方法で注文ステータスを追跡できます:

お知らせ

アプリケーションでストアライブラリと決済ライブラリの両方を使用する場合は、ストアライブラリのメソッドを使用して注文を追跡することをお勧めします。

決済ライブラリのみを使用する場合は、決済ライブラリのメソッドを使用して注文状況の変更を購読します。注文状況をリクエストするメソッドは、エクソーラシステムの負荷を避けるために、データを取得する補助的な方法としてのみ使用してください。

注文ステータスの変更をサブスクライブする

ストアライブラリメソッドを使用する

注文状況の変更をサブスクライブするには、ストアライブラリのgetOrderStatus SDKメソッドを使用し、以下のパラメータをメソッドに渡します:

  • listenerOrderStatusListenerタイプのリスナーオブジェクト。
  • orderId — ショッピングカートでの購入、ワンクリック購入、または仮想通貨での購入で受け取った注文IDをパラメータとします。
SDKの参照ドキュメント
SDKメソッドとそのパラメータの詳細については、こちらをご覧ください。

XStore.getOrderStatusメソッドの呼び出し例:

Copy
Full screen
Small screen
 1XStore.getOrderStatus(object : OrderStatusListener() {
 2
 3               override fun  onStatusUpdate(status: OrderResponse.Status) {
 4
 5                   if(status == OrderResponse.Status.DONE) {
 6
 7                       Log.d("MainActivity", "Success")
 8
 9                   }
10
11               }
12
13               override fun  onFailure() {
14
15                   Log.d("MainActivity", "Failure")
16
17               }
18
19           }, orderId)

決済UIを開く際にXStore.getOrderStatusメソッドを呼び出すことをお勧めします。

購入メソッドは、注文ステータスを追跡するためのいくつかのメソッドをカプセル化します。追跡は、以下のアルゴリズムに従って行われます:

  1. ウェブソケット接続が確立されます。
  2. ウェブソケット接続が正常に確立され、注文ステータスがdoneまたはcancelに変更された場合、トラッキングは停止します。ウェブソケット接続が失敗した場合、またはレスポンスに不正なデータが含まれている場合、注文ステータスはショートポーリングを使用して追跡されます。
  3. 注文ステータスの追跡はショートポーリングで継続されます。シンプルなHTTPオーダーステータスリクエストが3秒に1回送信されます。注文ステータスがdoneまたはcancelに変更された場合、追跡は停止します。

決済ライブラリを使用する

決済ライブラリを使用して注文ステータスの変更を追跡するには、支払いステータスコールバックを使用します。これを行うには:

  1. XPayments.IntentBuilderオブジェクトを作成する際に、setStatusReceivedCallbackメソッドを使用して、StatusReceivedCallbackコールバックを渡します。
  2. StatusReceivedCallbackコールバックにonSuccessメソッドを実装します。このコールバックは、一意のステータス変更ごとに呼び出されます。
お知らせ

注文状況の情報は、onSuccessメソッドにInvoicesDataResponseタイプのオブジェクトで渡されます。このオブジェクトは、InvoiceDataオブジェクトの配列を含みます。各InvoiceDataオブジェクトは、注文処理の特定の段階に対応し、その段階のステータスを含んでいます。

たとえば、ユーザーが注文時に最初に無効なデータを入力した場合、ステータスがInvoicesDataResponse.CANCELEDのオブジェクトがInvoiceDataリストに表示されます。その後、ユーザーがデータを修正し、注文の支払いが正常に行われると、新しいInvoiceDataオブジェクトが配列に表示され、ステータスはInvoicesDataResponse.Status.DONEになります。

最終の支払いステータス(InvoicesDataResponse.Status.DONEまたはInvoicesDataResponse.Status.ERROR)を受信した場合、ステータス追跡は停止します。

例:

Copy
Full screen
Small screen
1val intent = XPayments.createIntentBuilder(this)
2               .accessToken(<accessToken>)
3               .isSandbox(<isSandbox>)
4           	.setStatusReceivedCallback(object : StatusReceivedCallback {
5               	override fun onSuccess(data: InvoicesDataResponse) {
6                   		Log.d(TAG, "StatusReceivedCallback is fired. Result data = $data")
7               	}
8           	})
9           	.build()

注文状況をリクエストする

決済の現在のステータスを要求するには、ストアライブラリのgetOrderメソッドを呼び出し、次のパラメータを渡します:

お知らせ

注文状況の情報は、onSuccessメソッドにInvoicesDataResponseタイプのオブジェクトで渡されます。このオブジェクトは、InvoiceDataオブジェクトの配列を含みます。各InvoiceDataオブジェクトは、注文処理の特定の段階に対応し、その段階のステータスを含んでいます。

たとえば、ユーザーが注文時に最初に無効なデータを入力した場合、ステータスがInvoicesDataResponse.CANCELEDのオブジェクトがInvoiceDataリストに表示されます。その後、ユーザーがデータを修正し、注文の支払いが正常に行われると、新しいInvoiceDataオブジェクトが配列に表示され、ステータスはInvoicesDataResponse.Status.DONEになります。

最終の支払いステータス(InvoicesDataResponse.Status.DONEまたはInvoicesDataResponse.Status.ERROR)を受信した場合、ステータス追跡は停止します。

例:

Copy
Full screen
Small screen
 1
 2XPayments.getStatus(<token>, <isSandbox>, object : GetStatusCallback {
 3            override fun onSuccess(data: InvoicesDataResponse?) {
 4                Log.d(TAG, "onSuccess is fired. Result data = $data")
 5            }
 6
 7           override fun onError(throwable: Throwable?, errorMessage: String?) {
 8                Log.d(TAG, "onError is fired. ErrorMessage = $errorMessage")
 9            }
10
11})
この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。

お役立ちリンク

最終更新日: 2025年12月5日

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

問題を報告する
当社は常にコンテンツを見直しています。お客様のご意見は改善に役立ちます。
フォローアップ用のメールをご提供してください
ご意見ありがとうございました!
フィードバックを送信できませんでした
後でもう一度お試しいただくか、doc_feedback@xsolla.comまでお問い合わせください。