출금동의 API
출금동의 API
웹사이트 또는 모바일로 신청한 자동이체 내역을 확인하고 카카오톡 앱을 사용하여 이용자의 개인정보(이름, 생년월일, 전자서명)로 전자서명하여 출금동의 증빙자료로 이용할 수 있는 카카오 자동이체 출금동의 API 입니다. 개발하는 웹/앱 방식에 따라 카카오톡 채널로 카카오 인증 메시지를 전송하여 인증하는 "채널메시지 인증"과 카카오 앱을 즉시 실행하여 카카오 인증 메시지 전송없이 비밀번호 입력만으로 인증하는 "앱투앱 인증" 방식 중 선택하여 연동할 수 있습니다.
전자서명 당사자와 자동이체 출금계좌 예금주의 동일인 체크 의무는 이용기관에게 있습니다.
- 1) 자동이체 출금동의 검증(VerifyCMS) 함수로 객체의 변수 "signedData"값을 반환받습니다.
- 2) 반환받은 "signedData"값을 base64 방식으로 디코딩합니다.
- 3) 디코딩 후 binary형식으로 구성된 der확장자 파일을 금융결제원에 제출합니다.
1. RequestCMS - 자동이체 출금동의 요청
카카오톡 이용자에게 자동이체 출금동의를 요청합니다.
public CMSReceipt requestCMS(string ClientCode, CMS cms)
Parameter
순번 | 변수명 | 타입 | 길이 | 필수 | 설명 |
---|---|---|---|---|---|
ClientCode | string | 12 | Y | 이용기관 코드 | |
cms | CMS | - | Y | 자동이체 출금동의 요청 정보 |
Return CMSReceipt Throws BarocertException
2. GetCMSStatus - 자동이체 출금동의 상태확인
자동이체 출금동의 요청 후 반환받은 접수아이디로 인증 진행 상태를 확인합니다.
public CMSStatus getCMSStatus(string ClientCode, string ReceiptId)
Parameter
순번 | 변수명 | 타입 | 길이 | 필수 | 설명 |
---|---|---|---|---|---|
ClientCode | string | 12 | Y | 이용기관 코드 | |
ReceiptId | string | 32 | Y | 접수 아이디 |
Return CMSStatus Throws BarocertException
3. VerifyCMS - 자동이체 출금동의 검증
완료된 전자서명을 검증하고 전자서명값(signedData)을 반환 받습니다.
카카오 보안정책에 따라 검증 API는 1회만 호출할 수 있습니다. 재시도시 오류가 반환됩니다.
전자서명 완료일시로부터 10분 이후에 검증 API를 호출하면 오류가 반환됩니다.
public CMSResult verifyCMS(string ClientCode, string ReceiptId)
Parameter
순번 | 변수명 | 타입 | 길이 | 필수 | 설명 |
---|---|---|---|---|---|
ClientCode | string | 12 | Y | 이용기관 코드 | |
ReceiptId | string | 32 | Y | 접수 아이디 |
Return CMSResult Throws BarocertException
4. 객체정보
4.1. BarocertException
순번 | 변수명 | 타입 | 길이 | 필수 | 설명 |
---|---|---|---|---|---|
Code | long | - | Y | API 처리에 대한 응답코드 | |
message | string | - | Y | API 처리에 대한 응답메시지 |
4.2. CMS
순번 | 변수명 | 타입 | 길이 | 필수 | 설명 |
---|---|---|---|---|---|
receiverHP | string | 11 | Y | 수신자 휴대폰번호 → 하이픈(-) 제외하고 입력 |
|
receiverName | string | 80 | Y | 수신자 성명 | |
receiverBirthday | string | 8 | Y | 수신자 생년월일 → 형식: yyyyMMdd |
|
reqTitle | string | 40 | Y | 인증요청 메시지 제목 | |
extraMessage | string | 500 | N | 커스텀 메시지 | |
expireIn | int | 4 | Y | 요청 만료시간 → 최대: 1000초(s) / 권장: 300초(s) |
|
requestCorp | string | 100 | Y | 청구기관명 | |
bankName | string | 100 | Y | 출금은행명 | |
bankAccountNum | string | 31 | Y | 출금계좌번호 | |
bankAccountName | string | 100 | Y | 출금계좌 예금주명 | |
bankAccountBirthday | string | 8 | Y | 출금계좌 예금주 생년월일 → 형식: yyyyMMdd |
|
bankServiceType | string | 4 | Y |
서비스 종류
|
|
appUseYN | bool? | - | N |
앱투앱 인증 방식 이용 여부
|
|
returnURL | string | 1000 | 조건부 |
복귀 URL → 앱투앱 인증 이용 호출할 URL 또는 앱스킴 |
4.3. CMSReceipt
순번 | 변수명 | 타입 | 길이 | 필수 | 설명 |
---|---|---|---|---|---|
receiptID | string | 32 | Y | 접수아이디 | |
scheme | string | - | N | 앱스킴 |
4.4. CMSStatus
순번 | 변수명 | 타입 | 길이 | 필수 | 설명 |
---|---|---|---|---|---|
receiptID | string | 32 | Y | 접수아이디 | |
clientCode | string | 12 | Y | 이용기관 코드 | |
state | int | 1 | Y |
상태
|
|
requestDT | string | 14 | Y | 전자서명 요청일시 → 형식: yyyyMMddHHmmss |
|
viewDT | string | 14 | N | 전자서명 조회일시 → 형식: yyyyMMddHHmmss |
|
completeDT | string | 14 | N | 전자서명 완료일시 → 형식: yyyyMMddHHmmss |
|
expireDT | string | 14 | Y | 전자서명 만료일시 → 형식: yyyyMMddHHmmss |
|
verifyDT | string | 14 | N | 전자서명 검증일시 → 형식: yyyyMMddHHmmss |
4.5. CMSResult
순번 | 변수명 | 타입 | 길이 | 필수 | 설명 |
---|---|---|---|---|---|
receiptID | string | 32 | Y | 접수아이디 | |
state | int | 1 | Y |
상태
|
|
signedData | string | - | Y | 전자서명값 | |
ci | string | - | N | AES 암호화 CI | |
receiverName | string | - | Y | AES 암호화 수신자 성명 | |
receiverYear | string | - | Y |
AES 암호화
수신자 출생년도
→ 형식 : yyyy |
|
receiverDay | string | - | Y |
AES 암호화
수신자 출생월일
→ 형식 : MMdd |
|
receiverHP | string | - | Y | AES 암호화 수신자 휴대폰번호 | |
receiverGender | string | - | Y |
AES 암호화
수신자 성별
|