바냐파노
바냐파노2mo ago

전임자의 success url 에 큰 의문이 있습니다.

전임자가 퇴사하여 인수인계받게 된 코드입니다. 토스 결제 관련 확인할 것이 있어 코드를 살펴보았는데요 프론트단에서 successUrl 호출하면 {{origin}}/success?orderId={ORDER_ID}&paymentKey={PAYMENT_KEY}&amount={AMOUNT} 으로 결제 정보가 들어오는 것까진 확인했습니다. 그 후가 문제인데, successUrl 의 내용이 현재 아래와 같이 개발되어 있습니다(스프링부트 controller 쪽입니다). (전략) String encodedAuthHeader = Base64.getEncoder().encodeToString(SECRET_KEY.getBytes()); HttpClient client = HttpClientBuilder.create().build(); HttpPost postRequest = new HttpPost("https://api.tosspayments.com/v1/payments/" + paymentKey); //POST 메소드 URL 생성 postRequest.setHeader("Content-Type", "application/json"); postRequest.addHeader("Authorization", "Basic " + encodedAuthHeader); // token 이용시 postRequest.setEntity(new StringEntity("{"amount":" + amount + ","orderId":"" + orderId + ""}")); //json 메시지 입력 HttpResponse response = client.execute(postRequest); (후략) succeessUrl 에서는 v1/payments/confirm 을 호출하여 결제 승인을 내야 한다고 알고 있습니다. 저 API는 get방식일 경우 결제 정보를 받아오는 것이고 post 는 API 문서 상 없는 것 같은데, 지금까지 successUrl 에서 v1/payments/confirm 을 전혀 호출하고 있지 않았음에도 불구하고 결제가 성공적으로 이루어지고 돈까지 정산받았다고 합니다. 이대로 둬도 상관없는 부분인가요, confirm 을 호출해야 하나요. 물론 이대로 두면 안 될 것 같긴 한데, 결제가 지금까지(한 1년 된 것 같습니다) 정상적으로 이루어진 것이 큰 의문입니다.
24 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
이실장
이실장2mo ago
mid가 어떻게되세요?
바냐파노
바냐파노OP2mo ago
link_classtool 입니다.
이실장
이실장2mo ago
링크페이 mid쓰시나요?
바냐파노
바냐파노OP2mo ago
기획자가 퇴근해서 확인이 힘든데, 일부 링크를 받아 판매하는 상품도 있고, 저희 페이지 내에서 직접 결제창을 열어서 결제하는 식도 있습니다. 정확히 어떤 걸 확인해 드려야 할까요?
이실장
이실장2mo ago
link_classtool이건 링크를 받아 결제하는데 사용되는 mid에요. 말씀하신대로 진짜로 승인API를 호출하지 않았는데 결제가 된건지 로그를 확인해보고자 Mid를 요청드렸습니다. 아래 케이스 주문건의 주문번호(orderId)및 mid전달주시면 확인해볼게요
succeessUrl 에서는 v1/payments/confirm 을 호출하여 결제 승인을 내야 한다고 알고 있습니다. 저 API는 get방식일 경우 결제 정보를 받아오는 것이고 post 는 API 문서 상 없는 것 같은데, 지금까지 successUrl 에서 v1/payments/confirm 을 전혀 호출하고 있지 않았음에도 불구하고 결제가 성공적으로 이루어지고 돈까지 정산받았다고 합니다.
바냐파노
바냐파노OP2mo ago
네 확인하였습니다.. 만, 전임자의 환상적인 코딩으로 인하여 운영DB에 단 한건의 리턴 데이터가 쌓이지 않았고, 로그에 남은 orderId 및 개발DB에 있는 mid 정도만 전달드릴 수 있을 것 같습니다. mId: tlink_classtool orderId: jhhhh526_1751844713397_Z95S2848, didxpfptk_1751584465697_QFBIQNYS
이실장
이실장2mo ago
ㅎㅎ 저희 꽤 오래 사용해오신 것으로 아는데 확인해보고 공유드릴게요
바냐파노
바냐파노OP2mo ago
이게 맞는지 모르겠네요. 넵 감사합니다
이실장
이실장2mo ago
승인api는 호출하고 계세요
바냐파노
바냐파노OP2mo ago
네 확인했습니다.
이실장
이실장2mo ago
넵 추가로 확인 필요한거 있음 알려주세요
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
바냐파노
바냐파노OP2mo ago
"https://api.tosspayments.com/v1/payments/" + paymentKey" 어제 이거 여쭤보는 걸 깜빡했는데, 이 API는 post 로 날리면 무슨 역할을 하나요? API 문서상엔 get 방식밖에 없는 것 같습니다.
박의원
박의원2mo ago
이게 실질적인 승인요청입니다. 저희 결제는 인증/승인이 분리되어 있습니다. 그래서 * 결제창 내에서 인증이 성공하면 successUrl 로 리다이렉트 . 승인요청을 위한 paymentKey 전달 결제창 내에서 인증이 실패하거나 결제창 내 인증을 중단할경우 => failUrl로 리다이렉트 successUrl에서 응답받은 paymetKey를 가지고 "https://api.tosspayments.com/v1/payments/" + paymentKey" 로 httpClient 를 통한 요청을 올려야 합니다. 이후 요청결과로 승인응답이 JSON으로 수신됩니다. *
박의원
박의원2mo ago
https://docs.tosspayments.com/guides/v2/get-started/payment-flow 여기를 한번 참고하시면 도움이 되실것 같습니다.
결제 흐름 이해하기 | 토스페이먼츠 개발자센터
카드 결제 과정의 세 가지 핵심 단계인 요청, 인증, 승인을 이해하고 결제 정보를 검증하는 방법을 알아보세요.
바냐파노
바냐파노OP2mo ago
네 감사합니다 confirm 은 프론트에서 호출하는 것 같아 확인요청 한 상태입니다.
이실장
이실장2mo ago
그게 승인 api에여 옛날 스펙입니다.
바냐파노
바냐파노OP2mo ago
옛날에 만들어진 코드가 맞습니다
이실장
이실장2mo ago
ㅈㅣ금은 paymentKey를 requestBody에 보내는걸로 문서가 있는데 예전엔 getParam에 넣어 post로 보냈어요
이실장
이실장2mo ago
https://docs.tosspayments.com/reference#결제-승인 이거랑 동일한거라 보심 됩니다
코어 API | 토스페이먼츠 개발자센터
토스페이먼츠 API 엔드포인트(Endpoint)와 객체 정보, 파라미터, 요청 및 응답 예제를 살펴보세요.
바냐파노
바냐파노OP2mo ago
오류가 안 나는 거 보니 아직 옛날 스펙 API가 삭제가 안 됐나 보네요. 삭제 될 가능성이 있겠죠?
이실장
이실장2mo ago
없습니다 그런데 나중을 위해서 이번에 수정하실 때 수정해주셔도 좋을 것 같네요 간단한 수정이어서요
바냐파노
바냐파노OP2mo ago
네 알겠습니다.

Did you find this page helpful?