1.6 Callback URL
사용자가 광고참여를 통하여 획득한 포인트를 개발사의 서버에서 관리하실 경우 다음과 같이 진행합니다.
매체 정보 설정 화면에서 아래와 같이 '포인트 관리' 항목을 '자체서버에서 관리'로 선택합니다.
URL 항목에 포인트 적립 정보를 받을 URL을 입력합니다.
이후에는 사용자에게 포인트가 적립될 때 마다 실시간으로 위 URL로 적립 정보를 받을 수 있습니다.
호출방식
HTTP POST
파라메터
전달되는 파라메터의 종류의 그 의미는 아래와 같습니다.
리턴값 처리
Tnk 서버에서는 위 URL을 호출하고 HTTP 리턴코드로 200이 리턴되면 정상적으로 처리되었다고 판단합니다.
만약 200이 아닌 값이 리턴된다면 Tnk 서버는 비정상처리로 판단하고 이후에는 5분 단위 및 1시간 단위로 최대 24시간 동안 반복적으로 호출합니다.
* 중요! 동일한 Request가 반복적으로 호출될 수 있으므로 seq_id 값을 사용하시어 반드시 중복체크를 하셔야합니다.
Callback URL 구현 예시(Java)
Sample Code
// 해당 사용자에게 지급되는 포인트
int payPoint = Integer.parseInt(request.getParameter("pay_pnt"));
// tnk 내부에서 생성한 고유 번호로 이 거래에 대한 Id이다.
String seqId = request.getParameter("seq_id");
// 전달된 파라메터가 유효한지 여부를 판단하기 위하여 사용한다. (아래 코딩 참고)
String checkCode = request.getParameter("md_chk");
// 게시앱에서 사용자 구분을 위하여 사용하는 값(전화번호나 로그인 ID 등)을 앱에서 TnkSession.setUserName()으로 설정한 후 받도록한다.
String mdUserName = request.getParameter("md_user_nm");
// 앱 등록시 부여된 app_key (tnk 사이트에서 확인가능)
String appKey = "d2bbd...........19c86c8b021";
// 유효성을 검증하기 위하여 아래와 같이 verifyCode를 생성한다. DigestUtils는 Apache의 commons-codec.jar 이 필요하다. 다른 md5 해시함수가 있다면 그것을 사용해도 무방하다.
String verifyCode = DigestUtils.md5Hex(appKey + mdUserName + seqId);
// 생성한 verifyCode와 chk_cd 파라메터 값이 일치하지 않으면 잘못된 요청이다.
if (checkCode == null || !checkCode.equals(verifyCode)) {
// 오류
log.error("tnkad() check error : " + verifyCode + " != " + checkCode);
} else {
log.debug("tnkad() : " + mdUserName + ", " + seqId);
// 포인트 부여하는 로직수행 (예시)
purchaseManager.getPointByAd(mdUserName, payPoint, seqId);
}