가상계좌 NotiUrl 연동
가맹점 서버가 가상계좌 입금 결과를 안전하게 수신할 수 있도록, NotiUrl 설정 방법과 연동 절차를 안내해요.
NotiUrl이란?
가상계좌 입금이 완료되었을 때 서버 간(Server to Server)로 통보하기 위한 콜백 URL입니다.
사용자 브라우저를 거치지 않고, 다날 → 가맹점 서버로 바로 전송되므로 신뢰성을 보장할 수 있습니다.
- 사용자가 발급 받은 계좌번호에 입금시 NotiUrl로 입금결과가 통보 됩니다.
- 다날에서 NotiUrl을 호출하여 넘겨준 결과값을 통해 가맹점은 결제 성공/실패 처리를 합니다.
- NotiUrl로 받은 orderId, amount 등 결제 거래내용에 대한 검증을 반드시 해야 합니다.
방화벽 설정
- 150.242.132.116
Noti를 수신하는 가맹점의 서버에서 위 IP의 요청이 허용되어있어야 다날의 서버로부터 가맹점의 NotiUrl로 정상적인 인바운드 요청이 전송됩니다.
요청 정보
| 항목 | 값 |
|---|---|
| HTTP Method | POST |
| Endpoint | 가상계좌 입금 결과 알림을 받기 위해 가맹점이 등록한 URL (입금 결과는 가맹점의 NotiUrl에 POST 방식으로 전달됩니다.) |
| Content-Type | application/json |
요청 파라미터
| 파라미터 | 타입 | 필수 | 최대길이 | 설명 |
|---|---|---|---|---|
| code | string | O | - | 응답 코드를 나타냅니다. 요청 처리 결과를 나타내는 코드 값입니다. |
| message | string | O | 255 byte | 응답 메시지를 나타냅니다. 요청 결과에 대한 상세 메시지 또는 오류 설명이 포함됩니다. |
| transactionId | string | O | 24 byte | 거래 ID(TID)를 나타냅니다. 결제 건을 식별하기 위한 다날의 고유 거래 식별자입니다. |
| orderId | string | O | 255 byte | 가맹점 주문번호를 나타냅니다. 가맹점에서 생성한 주문 고유 식별값입니다. |
| amount | string | O | 9 byte | 금액을 나타냅니다. 결제 또는 입금된 금액(숫자형 문자열)입니다. |
| depositDateTime | string | 14 byte | 입금처리 일시를 나타냅니다. YYYYMMDDHHMMSS 형식으로 입금이 처리된 시각을 표시합니다. | |
| virtualAccountNumber | string | 16 byte | 가상계좌 번호를 나타냅니다. 입금 시 사용된 가상계좌 번호입니다. | |
| accountHolder | string | 10 byte | 가맹점 명(예금주 명)을 나타냅니다. 가상계좌 예금주명으로 설정된 가맹점 명칭입니다. | |
| depositorName | string | 10 byte | 입금의뢰인 명을 나타냅니다. 실제 입금자(입금 의뢰인)의 이름입니다. | |
| userId | string | 128 byte | 가맹점 사용자 ID를 나타냅니다. 가맹점 내부에서 결제 요청한 사용자의 식별 키입니다. | |
| userEmail | string | 128 byte | 가맹점 사용자 이메일을 나타냅니다. 결제 결과 안내 등 메일 발송 시 사용되는 이메일 주소입니다. | |
| orderName | string | 255 byte | 상품명을 나타냅니다. 결제 대상 상품 또는 서비스의 이름입니다. | |
| expireDateTime | string | 14 byte | 입금 마감 일시를 나타냅니다. YYYYMMDDHHMMSS 형식으로 입금 가능 마감 시간을 표시합니다. | |
| bankCode | string | 3 byte | 은행 코드를 나타냅니다. 입금 계좌의 은행을 구분하는 코드입니다. | |
| bankName | string | 20 byte | 은행 명을 나타냅니다. 입금 계좌의 은행 이름입니다. | |
| useCashReceipt | string | 1 byte | 현금영수증 발급 신청 여부를 나타냅니다. Y: 발급, N: 미발급 |
요청 예시
{
"code" : "SUCCESS",
"message" : "성공",
"transactionId" : "202510010000123456784578",
"orderId" : "Order_2025100101",
"depositDateTime" : "20251002093059",
"virtualAccountNumber" : "5659874134865135",
"accountHolder" : "(주)다날",
"depositorName" : "입금자명",
"userId" : "test123",
"userEmail" : "test123@danal.co.kr",
"orderName" : "상품명",
"expireDateTime" : "20251002235959",
"bankCode" : "001",
"bankName" : "은행명",
"useCashReceipt" : "Y",
}응답 파라미터
| 파라미터 | 타입 | 필수 | 최대길이 | 설명 |
|---|---|---|---|---|
| code | string | O | - | 응답 코드를 나타냅니다. 요청에대한 응답을 나타내는 코드 값입니다. |
응답 예시
{
"code" : "SUCCESS"
}주의 사항
- 사용자가 발급 받은 계좌번호에 입금 시 NotiUrl로 입금 결과가 통보됩니다.
- 다날에서 NotiUrl을 호출하여 넘겨준 결과값을 통해 가맹점은 결제 성공/실패 처리를합니다.
- NotiUrl로 받은 orderId, amount 등 결제 거래내용에 대한 검증을 반드시 해야합니다.
- 인코딩 방식은 EUC-KR 형식을 기본으로 합니다.
가맹점은 요청에 대한 응답으로 아래와 같이 반환을 해주셔야 합니다.
- 가맹점 노티 수신 성공 시 →
HttpStatus 200,{ "code": "SUCCESS" } - "SUCCESS" 를 받을 때까지 10분 동안 1분 간격으로 노티를 재전송합니다.가맹점 노티 재시도를 원하지 않을 경우 →
HttpStatus 200,{ "code": "FAIL" }
- 가맹점 노티 수신 성공 시 →
- 가맹점은 전달받은 값(transactionId 또는 orderId)의 중복 여부를 반드시 확인한 후 성공/실패 처리를 해야 합니다.
- 사용자 입금 후 약 5분 뒤 다날에서 가맹점 측으로 입금 정보 노티가 발송됩니다.
- notiUrl에는 특수문자 (& ' " \ < > \n \r\n , +) 사용을 금지합니다.