개발공부

[Stibee] 주소록 API 사용법 02 요청 후 상태값 반환 받기

개발자 구마 2024. 8. 2. 11:50

안녕하세요. 구마입니다.

이어서 Stibee 주소록 API 사용법을 정리해보겠습니다.  (JS)

 

오늘은 Stibee로 구독 요청을 보낸 후 구독이 잘 들어갔는지,

구독에 실패했다면 어떤 사유로 실패를 했는지를 반환 받는 코드를 설명드리겠습니다!

 

 

 

1. 정상적인 구독 요청 -> 성공 반환

 아래 사진은 Stibee 주소록에 추가된 모습입니다.

 

 

 성공적으로 주소록에 추가가 되면 Stibee에서는 상태값을 반환합니다.

 

1) 반환값을 console에 출력하는 코드 

 

	  $.ajax({
		  type : 'post',
		  url : '구독요청URL',
		  contentType : 'application/json; charset=utf-8',
		  headers : {
		   "Content-Type" : "application/json",
		   "AccessToken" : "발급받은 토큰"
		  },
		  data: JSON.stringify(jsonData),
		  success : function (result) {
				console.log("[result] : " + JSON.stringify(result));
		  }
	  });


2) stibee 반환값 JSON 

[result] : {"Ok":true,"Error":null,"Value":{"failDuplicatedEmail":[],"failDuplicatedPhone":[],"failExistEmail":[],"failExistPhone":[],"failNoEmail":[],"failUnknown":[],"failValidation":[],"failValidationDateTime":[],"failWrongEmail":[],"failWrongPhone":[],"success":[{"$createdTime":"2024-08-02T11:23:18.392572574+09:00","$modifiedTime":"2024-08-02T11:23:18.392573178+09:00","$status":"S","$type":"S","email":"guma1123@test.com","stb_ad_agreement":false}],"update":[]}}

 

반환 받은 JSON을 살펴보면

  • result.ok : 키값 ok는 구독 요청이 성공이든 실패든 상관없이 stibee에 요청이 전달 되면 true값을 반환합니다.
  • result.Value.success : 구독 요청이 성공해 주소록에 추가되면 반환합니다.

그래서.. ㅎㅎ. result.Value.$createTime에 값이 있으면 성공으로 판단합니다.

근데 이 코드에 문제점이 있는데 .. 이건 아래에서 설명드리겠습니다.

success : function (result) {
    console.log("[result] : " + JSON.stringify(result));

    // 구독에 실패한 경우
    if(isEmpty(JSON.stringify(result.Value.success[0] ))) {

          if(!isEmpty(JSON.stringify(result.Value.failExistEmail[0].$createdTime)) ) {
            alert("이미 구독중인 이메일입니다.");
          }

    }else if(!isEmpty(result.Value.success[0].$createdTime)) {
       alert("구독되었습니다.");
     }

}

/**
 * 문자열이 빈 문자열인지 체크하여 결과값을 리턴한다. 
 * @param str		: 체크할 문자열
 */
function isEmpty(str){

  if(typeof str == "undefined" || str == null || str == "")
	return true;
  else
	return false;
}

 

 

 

2. 중복 이메일 구독 요청 -> 실패값 반환

이미 구독하고 있는 이메일로 요청 시 반한되는 값입니다.

더보기

[result] : {"Ok":true,"Error":null,"Value":{"failDuplicatedEmail":[],"failDuplicatedPhone":[],"failExistEmail":[{"$createdTime":"2024-08-02T13:19:08.019664335+09:00","$modifiedTime":"2024-08-02T13:19:08.019664842+09:00","$status":"S","$type":"S","$unsubscribe":"","email":"guma1123@test.com"}],"failExistPhone":[],"failNoEmail":[],"failUnknown":[],"failValidation":[],"failValidationDateTime":[],"failWrongEmail":[],"failWrongPhone":[],"success":[],"update":[]}}

  • result.Value.failExistEmail : 중복된 이메일로 구독 요청 시 해당 키값으로 반환됩니다.

그래서 "failExistEmail"에 $createTime이 포함되어 있으면 중복된 이메일로 처리합니다.

 

  • let stbCreateTime =  JSON.stringify(result.Value.success[0].$createdTime); // 정상적으로 구독이 되어야 넘어오는 data
  • let failExistEmail = JSON.stringify(result.Value.failExistEmail[0].$createdTime); // 이미 구독중인 이메일
  • let failDuplicatedEmail = JSON.stringify(result.Value.failDuplicatedEmail[0].$createdTime); // 이메일 중복 요청
  • let failUnknown = JSON.stringify(result.Value.failUnknown[0].$createdTime); // 알 수 없는 오류

요 위에 아이들도 .. 해당 값이 넘어오면 alert창을 띄우고 싶은데 undefined 떠버려서..

지금은 정상 or 중복 이메일 요청으로만 처리하고 있습니다. JS null check 넘 어려웡.. @@ 

더 업그레이드 시키면 다시 추가하도록 하겠습니다 ! 

 

읽어주셔서 감사합니다.