sms발송 결과 코드값을 알고 싶어요
본문
알리고 라는 사이트에서 sms를 보내고 있습니다.
웹페이지에서 sms를 보내고 나면
정상 발송인지 문제가 생겼는지 결과값이 오는데 아래과 같습니다.
응답 바디는 JSON 객체로 구성된다고 합니다.
// CURL 요청 설정
$host_info = explode("/", $sms_url);
$port = $host_info[0] == 'https:' ? 443 : 80;
$oCurl = curl_init();
curl_setopt($oCurl, CURLOPT_PORT, $port);
curl_setopt($oCurl, CURLOPT_URL, $sms_url);
curl_setopt($oCurl, CURLOPT_POST, 1);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($oCurl, CURLOPT_POSTFIELDS, http_build_query($sms)); // POST 데이터를 인코딩하여 전송
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
$ret = curl_exec($oCurl);
curl_close($oCurl);
// 결과 확인
echo $ret;
$retArr = json_decode($ret, true); // 결과 배열
print_r($retArr); // Response 출력 (연동작업시 확인용)
그리고 정상발송되면 이런 메세지가 출력이 됩니다.
{"result_code":"1","message":"success","msg_id":"917549656","success_cnt":1,"error_cnt":0,"msg_type":"LMS"}Array ( [result_code] => 1 [message] => success [msg_id] => 917549656 [success_cnt] => 1 [error_cnt] => 0 [msg_type] => LMS )
제가 궁금한것은
메세지 발송후에 조건문을 써서 정상발송되었습니다를 띄우려고 하는데
그것을 구별하는 변수를 못찾겠습니다.
[result_code] => 1 를 보고 $result_code 를 해보았으나 값이 찍히지를 않구요
result_code 값이 1이면 정상이라고 합니다.
정상유무를 판단할수 있는 변수를 찾을 수 없을까요?
답변 2
$retArr['result_code'] 로 하시면 될겁니다.
아래와 소스와 같이 하시면 됩니다.
if( $retArr['result_code'] == 1){
if( $retArr['success_cnt'] == 1) {
echo "발송 성공";
}else if($retArr['error_cnt'] == 1){
echo "발송실패(오류)";
}else {
echo "알수없는 오류";
}
}else {
echo "발송실패(오류)";
}
추가 팁 바로 불려 오지 마시고 캐쉬 형태로 파일함수를 이용해서 텍스트 파일 만들시는것 추천 드립니다.
실시간 데이타 같은 경우 누락되는 경우가 있어요 그것은 방지 하려면 아래와 같이 만들어주시면 후단 처리 하시기가 편해져요 ^^;
$fp = fopen( $retArr['msg_id'].".txt", 'a'); // 파일을 쓰기 전용으로 열고 반환된 파일 포인터를 $fp에 저장. $str = $ret";
fwrite($fp, $str); // 파일에 $str 변수를 저장함.
fclose($fp); // 파일 닫음
하시고 나서 위에 적용 하세요 ..