sian
sian12mo ago

가상계좌 입금처리 문의

주문번호 : dc8d131d-9264-4fb3-93ab-27dc22741f92 가상계좌 입금처리 테스트 중에 문제가 있어 문의드립니다. 카드결제나 가상계좌 결제는 문제없이 되고있으나, 입금완료 통보가 정상적으로 처리되지 않습니다. 어떤 문제인지 답변 부탁드립니다.
77 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
Kimoon Lee
Kimoon Lee12mo ago
The target server failed to respond 에러를 받고 있습니다. 등록한 URL 에 서버가 정상동작하는지 확인부탁드립니다.
sian
sianOP12mo ago
웹훅에 등록한 url을 직접 브라우저로 호출했을 때는 was 단까지 신호가 옵니다. 테스트 결제내역에서 입금처리 시에는 신호가 들어오지 않는 것으로 확인됩니다. 토스에서 호출이 되는지 확인이 필요합니다 개발서버 상에서는 모두 정상동작하는것을 확인했으나, 운영서버 적용 시 발생하는 문제입니다. 운영 url은 https://www.komir.or.kr:6700 인데 혹시 6700이라는 포트가 url 상에 붙어있는게 문제가 될까요?
today.lastday
today.lastday12mo ago
port이슈는 아닙니다. 가맹점 서버나 방확벽에서 저희를 막는것은 아닌지 확인 부탁드려요. POSTMAN 등의 툴로 직접 해당 URL을 method:POST로 하여 호출해보시면 원인파악에 도움이 되실거에요.
sian
sianOP12mo ago
방화벽설정 완료되었습니다. 방화벽이 문제면 카드결제나 url 직접 호출시에도 통신이 안돼야 하는거 아닌가요? 결제할때 파라미터로 성공/실패 콜백은 정상적으로 호출이됩니다
유부장
유부장12mo ago
카드결제나 URL 직접호출은 가맹점 -> 토스페이먼츠 outbound 이고 웹훅 통보는 토스페이먼츠 -> 가맹점 inbound 입니다. outbound, inbound 차이가 있기 때문에 둘은 차이가 있습니다.
sian
sianOP12mo ago
결제 시에 결제정보를 전달하면 그거에 대한 성공여부를 주시는데 이때 inbound가 아닌가요?
유부장
유부장12mo ago
API 호출에 대한 response 니까 inbound 아닙니다.
sian
sianOP12mo ago
successUrl : window.location.origin + "/${siteCd}/${prgrmSn}/fcltInspAply/<c:out value='${stlmFclt.fcltInspAplySn}' />/stlmSuccess", failUrl : window.location.origin + "/${siteCd}/${prgrmSn}/fcltInspAply/<c:out value='${stlmFclt.fcltInspAplySn}' />/stlmFail", 결제 시에 소스입니다. 파라미터 전달해서 해당 url로 토스에서 inbound 호출을 합니다
유부장
유부장12mo ago
이건 redirection 입니다. successUrl 로 이동을 하니까요
sian
sianOP12mo ago
아 그렇군요
유부장
유부장12mo ago
그리고 successUrl 의 이동 주체는 client 이지, 토스페이먼츠가 아닙니다. 토스페이먼츠는 client 를 successUrl 로 redirection 시키고, 그 다음 client 에서 가맹점 쪽으로의 연결이나 이런것이 수행되는 순서 입니다.
sian
sianOP12mo ago
네, 그런데, 현재 운영서버의 웹훅 URL을 인터넷 상의 컴퓨터 브라우저에서 호출하면 WAS 로그 상에 정상적으로 이벤트가 들어옵니다. 다만, 파라미터가 없기 때문에 403 에러가 나지만,,,
유부장
유부장12mo ago
동일 네트워크 내에서 수행하셔서 이벤트가 있을것 같습니다.
sian
sianOP12mo ago
동일 네트워크가 아닙니다.
유부장
유부장12mo ago
5G 등 모바일 네트워크로 진행 해보세요
sian
sianOP12mo ago
실제 운영서버는 공공기관 서버이고, 지금은 개발사에서 확인한 내용입니다.
유부장
유부장12mo ago
지금 서버 / 네트워크 구성이 어떻게 되어 있는지 저희는 알지 못하니 가능한 public 쪽에서의 시도 해보시고 토스페이먼츠 에서의 통보도 추가로 확인 해보세요. 개발사가 어떤 환경하에서 시도한 것도 저희는 알지 못하니, 테스트 하신 모든 환경을 저희에게 설명 주시거나 이 부분이 힘드시면 5G 등의 public 에서 통보 테스트 해보고 토스페이먼츠 에서의 통보 테스트 해보고 등 순서를 잡아서 수행 해보세요
sian
sianOP12mo ago
운영서버는 원주에 위치한 공공기관 서버로 webtob, jeus로 구성된 일반 홈페이지입니다 저희 개발사는 대전에 위치한 사무실에서 콜백 접속 테스트를 해 보았던 결과입니다. 공공기관 홈페이지 앞단에는 방화벽과 같은 보안 솔루션이 없는 것으로 확인하였습니다. 토스에서 웹훅 URL을 호출하는 것과 저희가 위치한 원격지 장소에서 브라우저로 해당 URL을 호출하는 것은 환경 상 같은 조건이라고 생각하여 말씀드렸습니다.
티라미슈
티라미슈12mo ago
토스에서 호출하는 ip 시작점하고 원격지 지점 ip시작점은 다르지 않나요?
sian
sianOP12mo ago
동일 네트워크라는 의문에 대해 동일 네트워크가 아니라는 걸 말씀드린겁니다.
티라미슈
티라미슈12mo ago
그래서 방화벽 작업도 하신것 같은데
sian
sianOP12mo ago
방화벽 작업? 그런 건 따로 없었습니다.
티라미슈
티라미슈12mo ago
위에 설정 했다고 하신것 같은데요
sian
sianOP12mo ago
아, 그건 이 내용과 관계없는 방화벽 설정이었습니다. 잘못 말씀드린 것 같습니다. 해당 방화벽은 결제 시 토스 서버로의 방화벽 설정이었습니다.
티라미슈
티라미슈12mo ago
개발사에서 테스트 한것 관련해서 설명하시느라 그랬군요. 그 부분은 개발사 하고 확인 하셔야 겠네요
sian
sianOP12mo ago
저희가 개발사입니다.
티라미슈
티라미슈12mo ago
그러면 원청 쪽에 확인 요청 하셔야 하는거 아니에요?? 원청 서버 방화벽 작업 잘 되었냐고?
sian
sianOP12mo ago
결제를 위해서 토스로의 아웃바운드 방화벽을 설정한것입니다. 그래서 결제가 카드결제 및 가상계좌 결제가 성공한 것이구요 가상계좌는 토스 테스트 결제내역에서 입금 처리를 해야지 최종 완료가 되어 입금처리를 했는데 WAS 서버로 입금처리 URL 호출 신호가 도착하지 않았습니다. 그래서 해당 URL을 원격지 브라우저에서 직접 호출하였는데 신호가 들어왔구요 토스 웹훅에서 호출이 정상적으로 이루어지 않은 것에 대해서 확인이 필요할 듯 하여 요청드린겁니다. 대화 초기에 서버가 정상상태가 아닌 것 같다는 응답 내용을 보여주셨는데 서버는 정상적으로 동작하고 있거든요 홈페이지 웹(webtob) 서버 앞단에는 방화벽이 차단하고 있지 않습니다.
today.lastday
today.lastday12mo ago
외부에서 직접 등록하신 주소를 POST로 호출해보면 소켓 연결이 제대로 이뤄지지 않습니다. http://www.komir.or.kr:6700/생략/vaCallback 토스페이먼츠 IP만 방화벽에서 허용하셨을까요? 서버가 정상 동작하고 있다는 것은 어떻게 확인하셨을까요? POSTMAN 등으로 해당 주소 직접 호출하신 것을 캡쳐하여 올려주실 수 있을까요?
sian
sianOP12mo ago
https://www.komir.or.kr:6700/api/stlm/vaCallback 호출 시 403 에러가 발생하는 부분은 json 데이터 파라미터가 없을 경우 반환하는 코드입니다. https://www.komir.or.kr:6700/ 사이트를 접속해보시면 서버 정상여부는 확인하실 수 있습니다. 현재 정상 상태입니다.
today.lastday
today.lastday12mo ago
POSTMAN 등으로 호출 테스트 하신 것 올려주실 수 있을까요? 웹사이트 정상 접속은 확인하였습니다.
sian
sianOP12mo ago
No description
today.lastday
today.lastday12mo ago
동일 네트워크에서 호출하신 것일까요?
sian
sianOP12mo ago
동일 네트워크가 뭘 의미하시는걸까요? 서버는 클라우드 존에 있고 저희는 개발사에서 접속시도를 한 것입니다.
today.lastday
today.lastday12mo ago
저희가 시도한 경우 다음과 같이 에러가 발생하거든요. POST http://www.komir.or.kr:6700/api/stlm/vaCallback Error: socket hang up
sian
sianOP12mo ago
https로 해보시겠어요
today.lastday
today.lastday12mo ago
웹훅 주소를 http로 하시지 않았나요?
sian
sianOP12mo ago
호출이 되지 않아서 잠시 바꿔보았었습니다. 실제 호출은 https로 설정해서 테스트 했습니다.
today.lastday
today.lastday12mo ago
https로 변경하고 다시 결제하여 확인 부탁드려요. 그리고 주문번호 남겨주시겠어요?
sian
sianOP12mo ago
dc8d131d-9264-4fb3-93ab-27dc22741f92 https로 테스트 했습니다
today.lastday
today.lastday12mo ago
해당 주문번호는 http로 시도되었었구요. 결제를 새로 해보시겠어요? 상점관리자-개발자 센터에서 https로 웹훅 주소 바꾸시고 결제를 다시 해보세요.
sian
sianOP12mo ago
a58b14ba-a3c4-4034-b71d-e39de19d227a 이게 https로 테스트한 주문번호 인듯 합니다 현재 결제 테스트를 하는데 제약이 있습니다. 내일은 가능합니다. 일단 저 주문번호로 어떻게 오류가 떨어졌는지 확인 부탁드려요
today.lastday
today.lastday12mo ago
해당 건은 승인 API를 호출하지 않으셨는데요. 내일 다시 테스트하고 알려주세요.
Kimoon Lee
Kimoon Lee12mo ago
정상적으로 가상계좌가 발급되지 않은 주문입니다.
sian
sianOP12mo ago
No description
sian
sianOP12mo ago
위 주문번호 결제건입니다 입금처리 버튼을 눌러서 승인되었다는 메시지가 떴으나 입금처리는 되지 않았습니다
김차장
김차장12mo ago
지금 스크린샷 주신 건의 주문번호는 dc8d131d-9264-4fb3-93ab-27dc22741f92 에요 바로위에 알려주신건과 다릅니다 dc8d131d-9264-4fb3-93ab-27dc22741f92 건을 확인해보면 될까요?
sian
sianOP12mo ago
그런데 결제를 한번만
No description
sian
sianOP12mo ago
결제를 한번만 했는데 내역이 2개가 생겼어요 만료는 어떤걸 뜻하는걸까요?
Kimoon Lee
Kimoon Lee12mo ago
결제창을 열었다가 그냥 닫으시면 30분후에 만료상태가 됩니다. 테스트 거래내역에만 보이시는 거고 라이브에서는 이경우 보이지 않습니다.
sian
sianOP12mo ago
아 알겠습니다 dc8d131d-9264-4fb3-93ab-27dc22741f92 이 주문건 진행시 처음에는 https로 테스트를 진행했으나 입금처리 호출이 되지 않아서 그 이후에 http로 잠시 변경했었습니다 그리고 다시 https로 되돌렸구요 현재도 https입니다 현재도 결제 실패로 메일은 계속 도착하고있습니다
김차장
김차장12mo ago
이 화면에 접속해서 어떻게 나오는지 스크린샷 가능하신가요?
No description
김차장
김차장12mo ago
웹훅 목록에서 등록하신 웹훅 이름 누르면 보일거에요
sian
sianOP12mo ago
No description
sian
sianOP12mo ago
웹훅 주소 변경으로 여러번 삭제하고 등록하고 했더니 내역이 사라진것들이 있습니다
김차장
김차장12mo ago
네, 그럼 다시시도 눌러보시겠어요? 이벤트 발생시간 눌러보시면 보내질 웹훅 내용 확인도 가능해요 받으실 주문결제건이 맞는지도 확인해보세요 만약 받고싶은 테스트결제건이 여기에 없다면 가상계좌 발급부터 다시 진행하셔야해요 웹훅은 한번 등록하시면 바꾸지 않으시는것을 권장드립니다. 잘 안되시는 부분 알려주시면 도와드릴 수 있는내용인지 파악해볼게요
sian
sianOP12mo ago
No description
sian
sianOP12mo ago
위에 웹훅은 이 결제 건 이력이었습니다.
김차장
김차장12mo ago
네 "다시 시도" 눌러보셨나요?
sian
sianOP12mo ago
이벤트 전송이 정상적으로 처리되지 않았어요. 웹훅 URL을 확인해주세요. {statusCode=503} 이런 메시지입니다.
김차장
김차장12mo ago
그러면... 만드신 웹훅 URL이 parameter 가 있어야 200 OK 가 가능할까요?
sian
sianOP12mo ago
김차장
김차장12mo ago
결제까지 안해도 웹훅 URL이 정상 호출 가능한 상태인지를 먼저 확인하시면됩니다 parameter 세팅해서 정상호출되게 만들어보시고 URL 을 브라우저에서 날호출해보실수있나요?
sian
sianOP12mo ago
지금은 저희가 DB에 저장되어 있는 paymentKey 등의 정보를 확인할 수 없어 파라미터를 설정해서 호출해 볼 수 없습니다. 내일 기관에 방문해서 테스트 해 볼 수 있습니다.
김차장
김차장12mo ago
그렇군요, 가능하시다면 들어오는 데이터는 그대로 찍히도록 구현하시는게 디버깅에 좋습니다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.io.PrintWriter, java.io.FileWriter, java.text.SimpleDateFormat, java.util.Date" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Toss Payments Webhook Receiver</title>
</head>
<body>
<%
// POST 데이터 추출
String requestBody = "";
String logFileName = "";
java.util.Scanner s = new java.util.Scanner(request.getInputStream(), "UTF-8").useDelimiter("\\A");
requestBody = s.hasNext() ? s.next() : "";

// 로그 파일명 생성 (년월일시분초 형식)
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
logFileName = application.getRealPath("/") + "webhooktest/" + dateFormat.format(new Date()) + ".log";

// 웹훅 데이터를 로그 파일에 기록
try (PrintWriter printWriter = new PrintWriter(new FileWriter(logFileName))) {
printWriter.println(requestBody);
} catch (Exception e) {
e.printStackTrace();
}

// 예시: 웹훅 데이터 출력
System.out.println("<p>Received Webhook Data:</p>");
System.out.println("<pre>" + requestBody + "</pre>");
System.out.println("logFileName["+logFileName+"]");

// 여기에서 필요한 작업을 수행하세요.

// 응답
response.setStatus(200); // 성공 상태 코드
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.io.PrintWriter, java.io.FileWriter, java.text.SimpleDateFormat, java.util.Date" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Toss Payments Webhook Receiver</title>
</head>
<body>
<%
// POST 데이터 추출
String requestBody = "";
String logFileName = "";
java.util.Scanner s = new java.util.Scanner(request.getInputStream(), "UTF-8").useDelimiter("\\A");
requestBody = s.hasNext() ? s.next() : "";

// 로그 파일명 생성 (년월일시분초 형식)
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
logFileName = application.getRealPath("/") + "webhooktest/" + dateFormat.format(new Date()) + ".log";

// 웹훅 데이터를 로그 파일에 기록
try (PrintWriter printWriter = new PrintWriter(new FileWriter(logFileName))) {
printWriter.println(requestBody);
} catch (Exception e) {
e.printStackTrace();
}

// 예시: 웹훅 데이터 출력
System.out.println("<p>Received Webhook Data:</p>");
System.out.println("<pre>" + requestBody + "</pre>");
System.out.println("logFileName["+logFileName+"]");

// 여기에서 필요한 작업을 수행하세요.

// 응답
response.setStatus(200); // 성공 상태 코드
%>
</body>
</html>
sian
sianOP12mo ago
이전에도 말씀드렸지만, 브라우저를 통해서 호출하면 로그 상에 이벤트 기록이 남고, 웹훅을 통해서 입금처리하면 로그가 전혀 남지 않습니다.
김차장
김차장12mo ago
jsp 샘플인데요 이런식으로 만들으셔서 우선 기능이 잘 도는지를 점검하시고 이후에 parameter 처리등을 추가하시는게 좋습니다
sian
sianOP12mo ago
저희 회사 개발서버를 사용해서 웹훅 등록하고 정상 처리되는 것을 확인하여 완료한 상태입니다.
김차장
김차장12mo ago
그러면 코드상의 문제는 없겠네요
sian
sianOP12mo ago
김차장
김차장12mo ago
네트워크쪽을 확인하시는게 맞는 절차입니다 네트워크 엔지니어분께 503 에러를 이야기 해주시면 되구요
sian
sianOP12mo ago
일단, 내일 기관에 방문해서 가상계좌 입금 처리 시에 로그를 확인해보겠습니다. 내일 다시 상황을 공유하도록 하겠습니다.
김차장
김차장12mo ago
네 그런데 변한게 없다면 내일도 똑같은 결과를 얻으실거같아요
sian
sianOP12mo ago
네, 그럴것 같습니다. 네트워크 환경 등도 다시 확인해보겠습니다.
김차장
김차장12mo ago
네, 알겠습니다. 이미 테스트하셨던 것을 점검하는 차원이라 지금 이슈만 해결하시면 이후엔 크게 걸리실것은 없을거같아요
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.