조갱
조갱2y ago

XPayClient 응답값 문의

안녕하세요, 토스페이 알파환경 연동중에 문의드립니다. 구매 confirm 요청을 보내고, Response를 받아오는 과정에서 Exception이 발생합니다. XPayClient의 Response를 수집하는 코드는 아래와 같습니다.
kotlin
private fun XPayClient.toResponseMap(): Map<String, String> {
val result = HashMap<String, String>()
log.info("====== [DEBUG] : ResponseNameCount: ${this.ResponseNameCount()}")
log.info("====== [DEBUG] : ResponseCount: ${this.ResponseCount()}")

for (i in 0 until this.ResponseNameCount()) {
log.info("===== [DEBUG] this.Responsename(i) = ${this.ResponseName(i)} ===== ")
log.info("===== [DEBUG] this.ResponseCount() - 1 = ${this.ResponseCount() - 1} =====")
result[this.ResponseName(i)] = this.Response(this.ResponseName(i), this.ResponseCount() - 1)
log.info("===== [DEBUG] $i 번까지 수행 완료")
}
return result
}
kotlin
private fun XPayClient.toResponseMap(): Map<String, String> {
val result = HashMap<String, String>()
log.info("====== [DEBUG] : ResponseNameCount: ${this.ResponseNameCount()}")
log.info("====== [DEBUG] : ResponseCount: ${this.ResponseCount()}")

for (i in 0 until this.ResponseNameCount()) {
log.info("===== [DEBUG] this.Responsename(i) = ${this.ResponseName(i)} ===== ")
log.info("===== [DEBUG] this.ResponseCount() - 1 = ${this.ResponseCount() - 1} =====")
result[this.ResponseName(i)] = this.Response(this.ResponseName(i), this.ResponseCount() - 1)
log.info("===== [DEBUG] $i 번까지 수행 완료")
}
return result
}
그리고, 위 코드에서 출력되는 로그는 아래와 같습니다.
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] 38 번까지 수행 완료
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] this.Responsename(i) = LGD_BUYERID =====
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] this.ResponseCount() - 1 = 0 =====
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] 39 번까지 수행 완료
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] this.Responsename(i) = LGD_ORDERS_METADATA =====
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] this.ResponseCount() - 1 = 0 =====
20:47:14.186 [NioDispatcher-2 @coroutine#1] ERROR c.n.p.c.GlobalErrorWebExceptionHandler - Internal Error
java.lang.NullPointerException: this.Response(this.Respo…this.ResponseCount() - 1) must not be null
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] 38 번까지 수행 완료
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] this.Responsename(i) = LGD_BUYERID =====
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] this.ResponseCount() - 1 = 0 =====
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] 39 번까지 수행 완료
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] this.Responsename(i) = LGD_ORDERS_METADATA =====
20:47:14.136 [NioDispatcher-2 @coroutine#1] INFO c.n.p.g.t.TossPaymentsClient - ===== [DEBUG] this.ResponseCount() - 1 = 0 =====
20:47:14.186 [NioDispatcher-2 @coroutine#1] ERROR c.n.p.c.GlobalErrorWebExceptionHandler - Internal Error
java.lang.NullPointerException: this.Response(this.Respo…this.ResponseCount() - 1) must not be null
즉, LGD_ORDERS_METADATA 이 ResponseName의 값이 없는것 같은데, 이유가 궁금합니다. (리얼(운영) 환경에서는 정상 동작하는데, 알파환경만 발생합니다..)
9 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
조갱
조갱OP2y ago
ConfirmRequest 에 사용한 값은 아래와 같습니다.
json
{"CST_PLATFORM":"test","LGD_MID":"tgo_uplustest","LGD_PAYKEY":"2023051820471256777833D34EC3DCEB05AE0A14053CD29551F4AD","LGD_TXNAME":"PaymentByKey","LGD_AMOUNTCHECKYN":"Y","LGD_AMOUNT":"18000"}
json
{"CST_PLATFORM":"test","LGD_MID":"tgo_uplustest","LGD_PAYKEY":"2023051820471256777833D34EC3DCEB05AE0A14053CD29551F4AD","LGD_TXNAME":"PaymentByKey","LGD_AMOUNTCHECKYN":"Y","LGD_AMOUNT":"18000"}
감사합니다.
유부장
유부장2y ago
테스트 환경 확인 해보겠습니다 다만, 말씀 하신대로 운영환경에서는 문제 없다고 하셨으니, 우선은 특정 파라미터가 없을때 에러가 발생하지 않도록 업데이트 가능하실까요?
Kimoon Lee
Kimoon Lee2y ago
LGD_ORDERS_METADATA 는 무슨 용도로 사용하시는 건가요? 운영환경에서 사용하시는 MID 도 알려주시기 바랍니다.
OMG
OMG2y ago
로그를 확인해보니 요청 시 LGD_ORDERS_METADATA 를 전달해주지 않으셔서 승인 응답에서 리턴되지 않았네요.
조갱
조갱OP2y ago
세 분 모두 답변 감사합니다.! @유부장 넵! 확인 감사합니다 ㅎㅎ @냥과장 LGD_ORDERS_METADATA 는 현재 사용중인 곳은 없습니다. 우선 XPayClient 의 응답값을 전체적으로 Map 형태로 만든 다음, 저희가 필요로 하는 필드만 뽑아서 사용하고 있습니다. 리얼환경의 MID는 go_uplustest 입니다. @eunsikshin 따끈따끈하게 방금 답변을 주셨네요! 근데 운영 환경에서도 전달하지 않고 있을텐데, 알파 환경에서만 값이 없는게 이상합니다! 혹시 LGD_ORDERS_METADATA 필드가 현재 토스페이에서도 알파에만 반영되어있는 필드일까요??
OMG
OMG2y ago
방금 LGD_ORDERS_METADATA 를 테스트 해보았는데, 테스트 환경에서만 응답값이 내려오고, 라이브 환경에서는 응답값이 내려오지 않네요. 공식적으로 제공하지 않는 히든 스펙으로 테스트 환경에서만 사용되왔던 파라미터인듯 합니다.
조갱
조갱OP2y ago
@eunsikshin 확인했습니다 감사합니다 ㅎㅎ 우선 알파환경에서만 예외처리 해두도록 하겠습니다. 세 분 모두 바쁘신 와중에 제 질문에 정성들여 답변해주셔서 너무 감사합니다.!!
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?