Android용 SDK / 주문 상태 추적
  문서로 돌아가기

Android용 SDK

주문 상태 추적

주의
SDK를 사용하면 애플리케이션의 클라이언트 측에서 주문 상태를 추적할 수 있습니다. 다만 애플리케이션의 백엔드에서 주문 정보를 수신하도록 결제 웹훅 핸들러를 설정하는 것이 좋습니다. 이렇게 하면 완료된 구매에 대한 추가 유효성 검사를 구현할 수 있습니다.

사용자가 구매를 진행한 후 애플리케이션에서 수행할 수 있는 작업:

  • 애플리케이션 UI에 주문 상태 표시
  • 결제를 성공적으로 진행한 후 사용자의 잔액 적립
  • 결제를 성공적으로 진행한 후 구매한 아이템 제공

SDK를 사용하여 이러한 작업의 로직을 구현하는 경우 다음과 같은 방식으로 주문 상태를 추적할 수 있습니다.

주의

애플리케이션에서 스토어 라이브러리와 결제 라이브러리를 모두 사용하는 경우 스토어 라이브러리 메소드를 사용하여 주문을 추적하는 것이 좋습니다.

결제 라이브러리만 사용하는 경우, 결제 라이브러리 메소드를 사용하여 주문 상태 변경을 구독하세요. 엑솔라 시스템이 과부하가 걸리지 않도록 데이터를 조회하는 보조 수단으로만 주문 상태 요청에 메소드를 사용하세요.

주문 상태 변경 사항 구독

스토어 라이브러리 메소드 사용

주문 상태 변경 사항을 구독하려면 스토어 라이브러리에서 getOrderStatus SDK 메소드를 사용하여 메소드에 다음 매개 변수를 전달합니다.

  • listener - OrderStatusListener 유형의 리스너 개체.
  • orderId - 장바구니, 원클릭 구매 또는 인게임 재화 구매 시 받은 매개 변수로서의 주문 ID.
SDK 참조 문서
SDK 메소드 및 해당 매개변수에 대해 알아봅니다.

XStore.getOrderStatus 메소드 호출 예시:

Copy
Full screen
Small screen
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 메소드를 호출하는 것이 좋습니다.

구매 메소드는 주문 상태를 추적하는 여러 메소드를 캡슐화합니다. 추적은 다음 알고리즘에 따라 수행됩니다.

  1. 웹 소켓 연결이 설정되었습니다.
  2. 웹 소켓 연결이 성공적으로 설정되고 주문 상태가 done 또는 cancel로 변경되면 추적이 중지됩니다. 웹 소켓 연결이 실패하거나 응답에 잘못된 데이터가 포함되면 쇼트 폴링을 사용하여 주문 상태를 추적합니다.
  3. 주문 상태 추적은 쇼트 폴링을 계속합니다. 간단한 HTTP 주문 상태 요청은 3초마다 한 번씩 전송됩니다. 주문 상태가 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
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 메서드를 호출하여 다음 매개 변수를 전달합니다.

주의

주문 상태 정보는 onSuccess 메소드에 InvoicesDataResponse 유형의 개체로 전달됩니다. 이 개체에는 InvoiceData 개체의 배열이 포함됩니다. 각 InvoiceData 개체는 주문 처리의 특정 단계에 해당하며 이 단계의 상태를 포함합니다.

예를 들어, 사용자가 처음에 주문할 때 잘못된 데이터를 입력한 경우 InvoicesDataResponse.CANCELED 상태의 개체가 InvoiceData 목록에 나타납니다. 그런 다음 사용자가 데이터를 수정하고 주문에 대한 결제를 성공적으로 완료하면 배열에 새 InvoiceData 개체가 나타나며 상태는 이제 InvoicesDataResponse.Status.DONE입니다.

최종 결제 상태로 (InvoicesDataResponse.Status.DONE 또는 InvoicesDataResponse.Status.ERROR)를 수신하면 상태 추적이 중지됩니다.

예시:

Copy
Full screen
Small screen

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일

오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.

문제 보고
콘텐츠를 항상 검토합니다. 여러분의 피드백은 콘텐츠를 개선에 도움이 됩니다.
후속 조치를 위해 이메일을 제공해 주세요
의견을 보내 주셔서 감사드립니다!