퀵 계좌이체 에스크로 적용
안녕하세요. 결제창 sdk 를 이용한 퀵 계좌이체 결제에서 에스크로를 적용하려고 합니다.
tossPayments.requestPayment 호출할때 useEscrow : true 로 값 넘겨주면 에스크로 필수 적용이 되어야 하는거 같은데 결제창이 똑같습니다.
뭔가 다른 설정을 해줘야 하는 걸까요?
135 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.


이 값이 없을때는 고객이 선택할 수 있다고 했는데 그 부분도 조회되지 않는것같습니다.
주문번호 남겨주시겠어요? 에스크로 설정 되어있는지 먼저 확인해봐야할 것 같아요.
ord_20250331_9000004 테스트 주문입니다.
@엘라 다시 해보시겠어요?
이렇게 보일거에요.

넵 보입니다. 감사합니다!
혹시 escrowProducts 값은 에스크로 사용하려면 필수값인가요?
필수 아닙니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
에스크로 결제 이후에 배송정보 업데이트는 api 없고 상점관리자에서만 등록 가능한거죠?
API 도 있습니다.
가이드 주소 좀 주실 수 있나요?
구 모듈 가이드 | 토스페이먼츠 개발자센터
기존 전자결제 서비스 연동과 운영에 필요한 모듈 가이드와 에러 코드, 데모 등을 확인해보세요.
테스트 주문은 배송 정보 입력 후 메일 발송 이런건 테스트 못하나요?
테스트 하실수는 있는데 현재 상태를 상점관리자에서 보실수는 없어서 라이브로 테스트 하기를 권장드립니다.
mertkey 는 어디서 확인하나요?
상점 개발자센터에서 확인하실 수 있습니다.
에스크로 연동은 구 모듈 밖에 없는거죠?
네 맞습니다
배송완료 api 파라미터에서 실수령인명,수령인과 실수령인 관계 값이 필수값인가요?

Version:HTTP/1.1 302 Moved Temporarily
Date:Thu, 03 Apr 2025 02:41:59 GMT
Content-Type:text/html
Content-Length:142
Connection:keep-alive
Server:Tosspayments/1.0
Location:https://pgweb.tosspayments.com:9091/pg/wmp/testadmin/jsp/escrow/rcvdlvinfo.jsp
P3P:CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"
<html><head><title>302 Found</title></head><body><center><h1>302 Found</h1></center><hr><center>openresty</center></body></html>
에러 페이지 리턴되는데 확인 부탁드립니다
어떤게 에러라고 말씀하시는걸까요?
redirect 응답인 것 같은데 이건 따라주셔야 합니다.

리다이렉트 따라주시면 정상 접속됩니다.
상점 아이디 값이 없다고 하는데 mid=livart_quick이랑 tlivart_quick으로 둘다 보내봐도 저렇게 에러나는데 mid 값이 이 값이 아닌가요?

https://pgweb.tosspayments.com:9091/pg/wmp/testadmin/jsp/escrow/rcvdlvinfo.jsp 여기에 tlivart_quick 으로 보내신건가요?
아 jsp 예제에는 http://pgweb.tosspayments.com:7085/pg/wmp/mertadmin/jsp/escrow/rcvdlvinfo.jsp 이 주소로 되어있어서 이걸로 했어요. 말씀주신 주소로 다시 확인해보겠습니다.
네 가이드가 업데이트 된거라 가이드에 따라 호출부탁드립니다.
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

에스크로 api도 위 ip들 방화벽 허용하면 되나요?
121.67.39.63
121.67.39.69
두개 허용해주시면 됩니다.
테스트랑 운영이랑 둘다 알려주시겠어요?
동일합니다. 테스트와 운영은 포트만 달라요.
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
이에러는 저희 루트인증서를 유효하지 않다고 판단하는것 처럼 보여서 인증서쪽을 확인해 보셔야 할것 같습니다.
각각 포트도 알려주세요
문서에 써있는대로 443 입니다
테스트와 운영 포트가 다르다고 하신거 아닌가요?
요청 url 의 포트는 url 보셨을것 같고요..
요청 url 의 포트는 url 보셨을것 같고요.......
테스트랑 운영 방화벽 모두 121.67.39.63:443
121.67.39.69:443만 허용하면 되는건가요?
121.67.39.69:443, 121.67.39.69:9091 입니다.
배송완료 api 송신 이후 배송완료 메일 발송까지 텀은 어떻게 되나요?
보통 바로 발송됩니다.
개발에서도 확인 가능할까요?
확인 가능하고 30분 마다 배치라서 최대 30분까지 걸릴수 있습니다.
ord_20250403_8000010 이 주문 3시 15분경 배송완료 api 호출하였는데 아직 메일이 안와서요 확인 가능하실까요?
그리고 처리결과 수신페이지 url 등록 요청드리고 싶은데 이것도 개발, 운영 나눠서 등록 가능한가요?
ord_20250403_8000010 는 확인해 보겠습니다. 처리결과 수신페이지는 나눠서 등록가능합니다.
테스트환경에서 에스크로 메일 발송안되는 것으로 확인되었습니다. (예전에는 되었는데..)
복구 요청은 진행중인데 최근 변경사항등이 많아지면 테스트 환경에 일부 안되는 기능들이 있습니다.
당장 확인이 어려워 구매확정 메일 발송등의 확인은 라이브에서 해주셔야할 것 같아요.
배송 등록은 정상 호출된 것 확인하였습니다.
그럼 처리 결과 수신 URL 등록 후 호출 테스트도 안되는건가요?
처리결과수신 URL은 아마 동작할거에요.
셋팅 필요하신 통보URL 아래에 남겨주세요.
💡 정보 제출
민감 정보를 안전하게 제출해주세요
그런데 구매확정 메일 발송이 안되기 때문에 배송완료 후 3일뒤 확정되는 것만 확인하실 수 있을거에요.(negative confirm)
아 혹시 메일에서 구매확정이랑 취소 요청 버튼 뺄 수 있나요? 확정이랑 취소는 몰에서만 가능하도록이요
메일 커스텀을 할수는 없고, 구매확정과 취소는 가맹점이 아닌 PG에서 제공해야합니다. 에스크로는 가맹점과 고객이 아닌 제3자(PG)에 의해 제공되는 서비스라서요.
확정이랑 취소는 API 로 제공하지 않기 때문에 몰에서 하실수가 없습니다.
그럼 대금 정산 전 취소는 무조건 메일에서만 요청 가능하고 승인 역시 상점 관리자에서만 가능한거죠? 그리고 정산 완료 후 취소는 기존 api
https://api.tosspayments.com/v1/payments/{paymentKey}/cancel
이용하면 되는거고요?
네 맞습니다.
만약 취소 요청 승인이 불가한 경우거나 환불액 차감 후 취소 가능한 상황이라면 고객에게 안내 드리고 구매 확정 후 처리 하면 되는거죠?
이런 경우에는 상점 관리자에서 취소 요청 반려가 가능한가요?
만약 취소 요청 반려를 한 경우에는 고객에게 한번 더 메일이 가나요?
네 맞습니다. 상점관리자에서 취소 요청 반려 됩니다. 이부분 메일이 나가는 것으로 아는데, 보통 취소 요청 자체가 거의 없어서 확인이 필요할것 같습니다.
안녕하세요! 방금 정보 제출 폼으로 개발 서버 처리결과 수신 URL 주소 전달드렸습니다. 확인 부탁드립니다.
아 근데 취소 요청은 수기 호출로도 테스트 불가한거죠?
테스트 환경에 해당 URL 설정하였습니다. 취소 요청은 수기로 테스트하실 수 없습니다..
ord_20250410_8000002 해당 주문도 배송 등록 정상적으로 됐는지 확인 부탁드립니다!
네 배송완료 상태로 확인되네요.
안녕하세요~ 운영환경에서 처리결과 수신 URL 호출 IP 리스트 받을 수 있을까요?
네, 아래 문서 참고 부탁드리겠습니다.
구모듈도 동일한거죠?
구모듈이시군요.
Google Docs
XPAY결제모듈공통사항_v.1.0.8
Xpay-결제모듈_공통사항 Protocol and Core Function Specification Version 1.0.8 2024.08 목차 1. 문서 개요 3 2. 결제창 UI 안내 4 3. 지원하는 개발환경 5 4. 시스템 요구사항 5 4.1 공통사항 5 4.2 TLS 1.2를 지원하기 위한 개발언어별 요구사항 5 4.3 하드웨어 및 OS 요구사항 5 5. ...

에스크로 처리결과 수신 URL(수령확인, 취소요청 등) 인바운드 들어오는 IP 가 아래 IP들인가요?

인바운드 IP 리스트가 필요해서요
네 맞습니다.
아 네넵 확인 감사합니다
안녕하세요. 방금 정보제출 폼으로 운영 서버 처리결과 수신 URL 주소 전달드렸습니다. 확인 부탁드립니다!
필요하신 MID 도 알려주실수 있을까요?
livart_quick 입니다
설정하였습니다.
넵 확인 감사합니다
해당 주문 배송완료 이메일이 안오는데 확인 가능하실까요?

혹시 좀전에 배송등록하신 걸까요?
네네 맞습니다
구매확정 이메일은 배치로 처리되기 때문에 바로 발송은 안됩니다.
아 저번에 여쭤봤을때 운영은 보통 바로 발송된다고 하셨는데 배치 텀이 어떻게 되나요?
저희가 1시간 간격으로 처리해서 최대 1시간 까지는 걸릴수 있습니다.
배송완료 메일에서 취소 요청 처리 중 오류 나는데 확인 부탁드립니다.


테스트에서 하고 있으신거죠?
퀵 계좌는 운영이에요
배송완료 취소 요청 처리에서 에러나는게 라이브에서 나시는 건가요?
네네
배송완료 메일에 있는 URL 을 공유해주실수 있을까요?
이화면 URL 은 확인이 안되시는 거죠?

죄송합니다만 인증번호 부탁드리겠습니다.
976602
💡 정보 제출
민감 정보를 안전하게 제출해주세요
위 "정보 제출"에 환불받을 계좌번호 은행, 예금주 정보 입력해주실 수 있을까요
전달 드렸습니다
458154
이슈 확인하였습니다. 내용 확인 후 답변드리겠습니다.
넵 감사합니다
불편을드려 죄송합니다.
@엘라 님 해당 기능 사용 가능합니다.
알려주신 주문건은 구매 취소요청 접수되었습니다.
해당 건은 상점관리자-에스크로에서 수락하기 버튼 클릭하시면 최종 환불처리됩니다.
안녕하세요. 에스크로 배송완료 처리 운영에서 확인했는데 한글이 깨져서 가서요. 한글 인코딩 어떤거 쓰시나요?
EUC-KR 로 확인해보셔요
안녕하세요. 에스크로 배송 완료 메일에서 취소 요청 하는 경우 호출하는 url 테스트용으로 변경하고 싶은데 폼 전달 부탁드립니다
아니면 기존 url에서 www -> cwww로 바꿔주실 수 있나요?
테스트만 변경하시려는 건가요?
테스트만 변경해드렸습니다.
아뇨 운영용 url를 www -> cwww 로 변경이요!
테스트 원복하고 운영용 변경해드렸어요.
감사합니다!
취소요청 테스트 중인데요 메일에서 취소 요청하는 경우 저희쪽 등록 url 호출이 서로 다른 주문번호 3개로 3번 호출됩니다.
해당 오류 확인 부탁드립니다
(방금 ord_20250509_7000016 주문 취소 요청했는데 ord_20250509_7000005,ord_20250509_7000015,ord_20250509_7000016 3개로 콜백 들어옴)
개념적으로 ord_20250509_7000016 취소해서 다른 주문번호에 영향이 가지는 않습니다.
ord_20250509_7000016 는 취소 요청한게 맞을까요?
이메일에서 에스크로 구매취소 요청한 것이군요.
네
호출 로그 확인 가능하실까요?
혹시 오늘 다른건들도 취소 요청했었을까요?
네네 계속 테스트 했습니다
근데 최초 취소 요청시에 계속 상관없는 주문이랑 3건씩 호출됐어요
네, 일단 콜백 호출로그 확인하고 답변드릴게요
넵 참고로 취소 요청 진행하는 2분동안 16:01:18 ord_20250509_7000015, 16:01:19 ord_20250509_7000005, 16:03:14 ord_20250509_7000016 이렇게 호출됐습니다
2025-05-09 16:09:57.978 에 /payment/notificationTossQuick 주소로 tid=livar20250509150708ebt79&oid=ord_20250509_7000016 호출되었는데 확인 안되시나요?
ord_20250509_7000015는 2025-05-09 15:01:44.609 호출된 것으로 확인됩니다.
해쉬값이 계속 안맞는데 이건 원인이 뭔가요? 검증 꼭 있어야 할까요?
해쉬값은 전송하는 파라메터가 중간에 변조되었는지 확인하기 위한 값으로 꼭 있어야하는데요. 어느 구간에서 에러 발생하시나요?
샘플대로 했는데 해쉬값이 다르게 나옵니다
처리결과 수신 jsp 예제대로 했는데 if (hashdata2.trim().equals(hashdata)) 이부분에서 false 납니다
파일이름 알려주세요.
샘플 파일이요?
처리결과 수신-JSP예제
해당 파일에 mertkey 는 사용하시는 MID 의 mertkey 를 넣으신게 맞을까요?
코드를 그대로 쓰신거면 mertkey 가 잘못되어 있을 가능성이 가장높습니다.
mertkey 제대로 넣었습니다
배송완료 api는 이상없습니다
지금 제가 전달된 정보를 기반으로 샘플코드에서 hashdata 를 만들면 동일하게 나오는데요.
지금 사용중이신 hashdata2 만드는 코드를 공유 부탁드립니다.
String hashdata2 = null;
StringBuffer sb = new StringBuffer();
sb.append(tossQuickParamVO.getMid());
sb.append(tossQuickParamVO.getOid());
sb.append(tossQuickParamVO.getTransactionid());
sb.append(tossQuickParamVO.getTxtype());
sb.append(tossQuickParamVO.getProductid());
sb.append(tossQuickParamVO.getSsn());
sb.append(tossQuickParamVO.getIp());
sb.append(tossQuickParamVO.getMac());
sb.append(tossQuickParamVO.getResdate());
sb.append(mertkey);
byte[] bNoti = sb.toString().getBytes();
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] digest = md.digest(bNoti);
StringBuffer strBuf = new StringBuffer();
for (int i=0 ; i < digest.length ; i++) {
int c = digest[i] & 0xff;
if (c <= 15){
strBuf.append("0");
}
strBuf.append(Integer.toHexString(c));
}
hashdata2 = strBuf.toString();
지금 사용하시는 파일을 techsupport@tosspayments.com 으로 보내주실수 있을까요?
그리고 tossQuickParamVO.getTransactionid() 이 값이 정상적으로 받아지는지도 확인부탁드립니다.
저희가 보내는 파라미터는 tid 이긴 합니다.
tossQuickParamVO.getTransactionid() 이 코드가 transactionid 라는 파라미터를 매핑 하고 있는 것인지 tid 라는 파라미터를 매핑하는지 확인해 주세요.
가이드에는 trandsactionid로 나와있어서 샘플보다는 가이드가 최신이라고 하셔서 저렇게 했던건데 한번 확인해보겠습니다

이거는 저희 가이드 확인해 보도록 하겠습니다.
매뉴얼이 잘못되어 있는것으로 확인되어 수정반영하도록 하겠습니다.
하나 더 여쭙고 싶은곳이..다른곳은 잘 되는데 이쪽만 문제가 생기셨다고 말씀하셨는데요..
혹시 기존에 잘 되던곳은 매뉴얼기준(trandsactionid) 이 아닌 샘플소스기준 (tid)으로 처리를 하고 있었는지 확인해보실수 있으실까요?
배송완료 api 해쉬값에는 tid 사용 안해서 문제 없었던거 같습니다. mertkey 제대로 넣었는지 확인하려고 배송완료 api 말씀드린거구요!
처리결과 수신도 tid로 변경하니 해쉬값 인증 이상없습니다.
확인 감사합니다
네 공유해주셔서 감사합니다.