주문 상태 추적
사용자가 구매를 진행한 후 애플리케이션에서 수행할 수 있는 작업:
- 애플리케이션 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초마다 한 번씩 전송됩니다. 주문 상태가
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일오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.