용어 | 정의 |
---|---|
운영기관 | 오픈API를 제공하는 오픈API시스템 운영기관(금융회사 등)을 의미. 본 문서에서는 ‘신한은행' |
이용기관 | 오픈API를 이용하여 서비스를 개발 및 제공하는 기관(핀테크 기업 등)을 의미 |
오픈API 이용서비스 | 이용기관이 오픈API를 이용하여 제공하는 서비스 (예: 계좌잔액 조회, 거래내역분석, 송금 등) |
사용자 | 오픈API 이용서비스를 제공하는 이용기관의 업무 관계자 |
이용자 | 이용기관의 오픈API 이용서비스를 이용하는 고객 |
오픈API 접근서버 | 오픈API에 접근하는 이용기관 서버 |
오픈API 이용 애플리케이션 |
오픈API를 이용하여 이용자에게 서비스를 제공하는 이용기관 애플리케이션(모바일 APP/Web 애플리케이션 등) |
오픈API 인증키 | 오픈API 이용서비스가 운영기관 오픈API시스템에 등록된 정당한 서비스임을 인증하는데 사용되는 운영기관으로부터 발급받은 특정 값 또는 파일 |
오픈API 접근키 | 오픈API에 자원을 요청할 수 있는 권한이 부여된 특정 값 또는 파일(예를 들어 OAuth 구조의 access token이 이에 해당) |
오픈API 관련 중요정보 |
이용기관이 오픈API 이용서비스를 제공하는데 사용되는 보호가 필요한 중요정보 - 이용자 개인‧신용정보 및 인증정보, 오픈API 이용 관련 인증정보 (오픈API 인증키, 오픈API 접근키 등), 암호키 등 |
오픈API 관련 정보자산 |
이용기관이 오픈API 이용서비스를 제공하는데 사용되는 이용기관 보유 정보자산 - 서버, 네트워크장비, 정보보호시스템, DBMS, 단말기, 응용프로그램, 소프트웨어, 저장매체, 문서 등 |
Method | POST |
---|---|
URL | 개발(테스트) :
https://dev-shbapi.shinhan.com:6443/v1/oauth/partner/token 운영(온라인) : https://shbapi.shinhan.com:6443/v1/oauth/partner/token |
데이터 타입 | Request : x-www-form-urlencoded Response : JSON |
HTTP | 항목 | 값 | 필수 | 설명 |
---|---|---|---|---|
Header | Content-Type | application/x-www-form-urlencoded; charset=UTF-8 | Y | |
BODY | client_id | Y | 사전 준비 참고 | |
Scope | “oob” | Y | ||
grant_type | “client_credentials” | Y | ||
timestamp | Y | client_hash 를 만들 때 사용한 unix timestamp 값 | ||
client_hash | Y | client secret 을 가지고, “unix timestamp+’|’+client id” 를 HMAC SHA256 처리 후 Base64 Encoding 한 값 |
HTTP | 항목1 | 항목2 | 값 | 필수 | 설명 |
---|---|---|---|---|---|
Header | |||||
BODY (json) |
dataHeader | ||||
dataBody | access_token | Y | |||
token_type | “Bearer” | Y | |||
expires_in | Y | 유효시간(초) | |||
scope | “oob” | Y |
HTTP BODY |
---|
HTTP | 항목1 | 항목2 | 값 | 필수 | 설명 |
---|---|---|---|---|---|
Header | |||||
BODY (json) |
dataHeader | category | “G/W” | ||
successCode | "1" | ||||
resultCode | 아래 에러코드 참고 | ||||
resultMessage | 아래 에러코드 참고 | ||||
dataBody |
HTTP BODY |
---|
resultCode | resultMessage |
---|---|
89 | Access token has expired (접근키 재발급 필요) |
400 | 필수 parameter가 누락되었습니다. |
400 | Invalid API Key |
400 | Not allowed IP address |
400 | access_token empty or OAuth Request Check (Authorization Bearer Check) |
400 | Access token does not exist (expired, revoked, replaced, unknown, ...). |
400 | Access token was not granted for required scope |
400 | Access token is disabled |
401 | 호출이 허가되지 않은 IP 입니다. |
403 | client_id 검증에 실패했습니다. |
403 | client_hash 검증에 실패했습니다. |
403 | 유효한 grant_type이 아닙니다. |
403 | OTK 사용자인증에 실패했습니다. |
403 | 데이터 비교 실패 |
412 | auth_key 검증에 실패했습니다. |
415 | charset 파싱에 실패했습니다. |
500 | access_token 생성에 실패했습니다. |
500 | access_token 갱신에 실패했습니다. |
500 | API plan limit exceeded. |
503 | auth_key 인증서버 연동에 실패했습니다. |
503 | API Server Connection Refused |
인증 실패 |
※ 주요 에러코드만 정리함.
curl -H "Content-Type:application/x-www-form-urlencoded;charset=UTF-8" -d "client_id=클라이언트ID&scope=oob&grant_type=client_credentials&client_hash=(unix time stamp+’|’+client_id) hash 값×tamp=unix time stamp(client_hash 만들 때 사용했던 값)" https://dev-shbapi.shinhan.com:6443/v1/oauth/partner/token
※ 샘플코드는 접근키 만료시 갱신 내용은 담고 있지 않음.
Method | POST |
---|---|
URL | 개발(테스트) : https://dev-shbapi.shinhan.com:6443/v1/sample |
데이터 타입 | Request : JSON Response : JSON |
HTTP | 항목1 | 항목2 | 값 | 필수 | 설명 |
---|---|---|---|---|---|
Header | Content-Type | application/json; charset=UTF-8 | Y | ||
Accept | application/json; charset=UTF-8 | N | |||
reqKey | N | 클라이언트 요청 키 (서버측에서 별도 처리 없이 리턴하는 값) | |||
apiKey | Y | client id (2.1 참고) | |||
Authorization | Y | “Bearer”+” “+access token 값 (4.3 참고) | |||
hsKey | Y | client secret 을 가지고 BODY 데이터 HMAC SHA256 한 값 (아래 샘플코드 참고) | |||
clientIp | Y | 클라이언트 IP | |||
BODY (json) |
dataHeader | subChannel | Y | 이용기관별 구분 값 (별도 부여) | |
성별 | “M” or “F” | N | M:남성, F:여성 (실제 API 이용 대상 고객이 있을 경우 성별) | ||
연령대 | ex) “10” | N | 0~19 : “10” 20~29 : “20” … 60세 이상 : “60” (실제 API 이용 대상 고객이 있을 경우 연령대) |
||
dataBody | 입력항목1 | 서비스 별 입력 항목 | |||
입력항목2 | 서비스 별 입력 항목 |
※ 파란색 부분이 공통 영역
HTTP Header |
|
---|---|
HTTP BODY |
HTTP | 항목1 | 항목2 | 값 | 필수 | 설명 |
---|---|---|---|---|---|
Header | Content-Type | application/json; charset=UTF-8 | Y | ||
reqKey | N | 클라이언트 요청 키 (서버측에서 별도 처리 없이 리턴하는 값) | |||
BODY (json) |
dataHeader | successCode | “0” or “1” | Y | 0 : 정상, 1 : 오류 |
resultCode | Y | successCode가 오류인 경우 출력되는 코드 값 | |||
resultMessage |
결과 메시지 successCode 가 ‘1’(오류)인 경우 에러 메시지 출력 (이 경우 아래 dataBody 항목은 빈 값으로 내려감) |
||||
dataBody | 출력항목1 | 서비스 별 출력 항목 | |||
출력항목1 | 서비스 별 출력 항목 |
※ 파란색 부분이 공통 영역
HTTP Header |
|
---|---|
HTTP BODY |
기본정보 입력
API 등록
인증정보 입력
이용기관 개발 및 테스트
OAuth 2.0 인증을 통한 권한 요청