고객정보 연동은 Online Contact이 아닌 자체 사용중인 외부 서비스의 정보를 API 설정을 통해 티켓관리 화면에서 조회할 수 있는 기능입니다.
API 인증 방법
Security Key
[고객정보관리 → 고객정보연동 → API 설정]에서 API 암호화 여부를 '예'로 설정하면, 암호화 키가 생성됩니다.
생성된 키로 API 인증에 활용할 수 있습니다.
Authorization 문자열 생성 방법
HmacSHA256로 암호화하거나, (request URI + 파라미터 값(json) + 현재 UTC시간 값)문자열에 대해 암호화하여 Authorization 문자열을 생성할 수 있습니다.
Java 예시
String token= request.getHeader("Authorization");
String time = request.getHeader("X-TC-Timestamp");
if (!StringUtils.isNumeric(time)) {
logger.error("X-TC-Timestamp is not numeric: " + time);
throw new Exception("error.bad_request");
}
DateTime date = null;
date = new DateTime(Long.parseLong(time));
if (date.minusMinutes(5).isAfterNow() || date.plusMinutes(5).isBeforeNow()) {
logger.error("X-TC-Timestamp is expired: " + time + ", now timestamp: " + Calendar.getInstance().getTimeInMillis());
throw new Exception("error.bad_request");
}
String apiKey = "bf7769e5321448de88838cdb";
String content= new String(IOUtils.toByteArray(request.getInputStream()), StandardCharsets.UTF_8) + time;
SecretKeySpec signingKey = new SecretKeySpec(apiKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
Mac mac = Mac.getInstance(signingKey.getAlgorithm());
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(content.getBytes(StandardCharsets.UTF_8));
String localAuthorization = new String(Base64.encodeBase64(rawHmac));
logger.debug("Local token: " + localAuthorization);
if (StringUtils.equals(token, localAuthorization)) {
return true;
} else {
logger.info("Local sha2 token: " + localAuthorization);
return false;
}
}
고객정보연동 API
인터페이스 설명
인터페이스 명 |
프로토콜 |
호출방향 |
인코딩 |
요청 파라미터 형식 |
URL |
접근제한 여부 |
고객정보연동 API |
HTTPS |
POST |
UTF-8 |
JSON |
기본 URL |
공통 인증 |
요청 파라미터 정의
명칭 |
변수 |
데이터 타입 |
필수 |
설명 |
설정한 조회 항목 |
callNum |
String |
O |
|
|
nation |
String |
|
|
Request Body
{
"callNum":"1",
"nation":"korea"
}
결과 데이터
명칭 |
변수 |
데이터 타입 |
필수 |
설명 |
설정한 결과 항목 |
userName |
String |
|
|
|
id |
String |
|
|
Response Body
{
"data": {
"userName": "test",
"id": "testId"
}
}
리턴 결과
파라미터 정의
명칭 |
변수 |
데이터 타입 |
필수 |
설명 |
성공 시 리턴 결과 |
data |
JSON |
O |
|
|
OC에서의 결과 항목 설정값 |
String |
O |
|
명칭 |
변수 |
데이터 타입 |
필수 |
설명 |
실패 시 리턴 결과 |
error |
JSON |
O |
|
|
code |
String |
O |
|
|
message |
String |
O |
|
|
detail |
String |
O |
|
HTTP 상태 코드
리턴 코드 정보 |
Online Contact 표시 메시지 |
200 : SUCCESS |
조회 성공 |
400 : Bad Request |
조회 결과가 없습니다. |
403 : Forbidden |
요청한 서버에 조회 권한이 없습니다. |
404 : Not Data Found |
요청한 서버에 에러가 있습니다. |
500 : Server Error |
오류가 발생하였습니다. |
리턴 결과 예시
200 : OK
{
"data": {
"userNo": "0",
"userId": "string",
"gameCode": "string",
"cashReal": "0",
"cashBonus": "0",
"cashTotal": "0"
}
}
Failure case : HTTP Status Code != 200 AND error object
{
"error": {
"code": 911,
"message": "Not existing user.",
"detail": null
}
}