注文状況を追跡する
ユーザーが購入した後、アプリケーションは以下のアクションを実行することができます:
- アプリケーションUIに注文状態を表示する
- 支払い完了後、ユーザーの残高を計上する
- 支払い完了後、購入したアイテムを付与する
SDKを使用してこれらのアクションのロジックを実装する場合、次の方法で注文ステータスを追跡できます:
アプリケーションでストアライブラリと決済ライブラリの両方を使用する場合は、ストアライブラリのメソッドを使用して注文を追跡することをお勧めします。
決済ライブラリのみを使用する場合は、決済ライブラリのメソッドを使用して注文状況の変更を購読します。注文状況をリクエストするメソッドは、エクソーラシステムの負荷を避けるために、データを取得する補助的な方法としてのみ使用してください。
注文ステータスの変更をサブスクライブする
ストアライブラリメソッドを使用する
注文状況の変更をサブスクライブするには、ストアライブラリのgetOrderStatus
SDKメソッドを使用し、以下のパラメータをメソッドに渡します:
listener
—OrderStatusListener
タイプのリスナーオブジェクト。orderId
— ショッピングカートでの購入、ワンクリック購入、または仮想通貨での購入で受け取った注文IDをパラメータとします。
XStore.getOrderStatusメソッドの呼び出し例:
- kotlin
XStore.getOrderStatus(object : OrderStatusListener() {
override fun onStatusUpdate(status: OrderResponse.Status) {
if(status == OrderResponse.Status.DONE) {
Log.d("MainActivity", "Success")
}
}
override fun onFailure() {
Log.d("MainActivity", "Failure")
}
}, orderId)
決済UIを開く際にXStore.getOrderStatus
メソッドを呼び出すことをお勧めします。
購入メソッドは、注文ステータスを追跡するためのいくつかのメソッドをカプセル化します。追跡は、以下のアルゴリズムに従って行われます:
- ウェブソケット接続が確立されます。
- ウェブソケット接続が正常に確立され、注文ステータスが
done
またはcancel
に変更された場合、トラッキングは停止します。ウェブソケット接続が失敗した場合、またはレスポンスに不正なデータが含まれている場合、注文ステータスはショートポーリングを使用して追跡されます。 - 注文ステータスの追跡はショートポーリングで継続されます。シンプルなHTTPオーダーステータスリクエストが3秒に1回送信されます。注文ステータスが
done
またはcancel
に変更された場合、追跡は停止します。
決済ライブラリを使用する
決済ライブラリを使用して注文ステータスの変更を追跡するには、支払いステータスコールバックを使用します。これを行うには:XPayments.IntentBuilder
オブジェクトを作成する際に、setStatusReceivedCallback
メソッドを使用して、StatusReceivedCallback
コールバックを渡します。StatusReceivedCallback
コールバックにonSuccess
メソッドを実装します。このコールバックは、一意のステータス変更ごとに呼び出されます。
注文状況の情報は、onSuccess
メソッドにInvoicesDataResponse
タイプのオブジェクトで渡されます。このオブジェクトは、InvoiceData
オブジェクトの配列を含みます。各InvoiceData
オブジェクトは、注文処理の特定の段階に対応し、その段階のステータスを含んでいます。
たとえば、ユーザーが注文時に最初に無効なデータを入力した場合、ステータスがInvoicesDataResponse.CANCELED
のオブジェクトがInvoiceData
リストに表示されます。その後、ユーザーがデータを修正し、注文の支払いが正常に行われると、新しいInvoiceData
オブジェクトが配列に表示され、ステータスはInvoicesDataResponse.Status.DONE
になります。
最終の支払いステータス(InvoicesDataResponse.Status.DONE
またはInvoicesDataResponse.Status.ERROR
)を受信した場合、ステータス追跡は停止します。
例:
- kotlin
val intent = XPayments.createIntentBuilder(this)
.accessToken(<accessToken>)
.isSandbox(<isSandbox>)
.setStatusReceivedCallback(object : StatusReceivedCallback {
override fun onSuccess(data: InvoicesDataResponse) {
Log.d(TAG, "StatusReceivedCallback is fired. Result data = $data")
}
})
.build()
注文状況をリクエストする
決済の現在のステータスを要求するには、ストアライブラリのgetOrder
メソッドを呼び出し、次のパラメータを渡します:
orderId
— ショッピングカートによる購入、ワンクリック購入、または仮想通貨による購入で受け取った注文ID。callback
— 注文情報を正常に取得するコールバック。コールバックを実装する場合は、GetStatusCallback
インターフェイスを使用し、onSuccess
とonError
メソッドを実装します。
注文状況の情報は、onSuccess
メソッドにInvoicesDataResponse
タイプのオブジェクトで渡されます。このオブジェクトは、InvoiceData
オブジェクトの配列を含みます。各InvoiceData
オブジェクトは、注文処理の特定の段階に対応し、その段階のステータスを含んでいます。
たとえば、ユーザーが注文時に最初に無効なデータを入力した場合、ステータスがInvoicesDataResponse.CANCELED
のオブジェクトがInvoiceData
リストに表示されます。その後、ユーザーがデータを修正し、注文の支払いが正常に行われると、新しいInvoiceData
オブジェクトが配列に表示され、ステータスはInvoicesDataResponse.Status.DONE
になります。
最終の支払いステータス(InvoicesDataResponse.Status.DONE
またはInvoicesDataResponse.Status.ERROR
)を受信した場合、ステータス追跡は停止します。
例:
- kotlin
XPayments.getStatus(<token>, <isSandbox>, object : GetStatusCallback {
override fun onSuccess(data: InvoicesDataResponse?) {
Log.d(TAG, "onSuccess is fired. Result data = $data")
}
override fun onError(throwable: Throwable?, errorMessage: String?) {
Log.d(TAG, "onError is fired. ErrorMessage = $errorMessage")
}
})
お役立ちリンク
最終更新日: 2024年9月5日誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。