[WEB 모듈연동가이드 ] PHP Version 문자매니아
Contents ㆍ서비스안내 3 ㆍ서비스연동 Flow 3 ㆍ예제소스 4 ㆍ Error code 10 ㆍ자주묻는질문 11
서비스안내 ㆍ WEB 연동서비스 - 기업이운영중인고객사의홈페이지에서문자메시지를보낼수있는기능으로 TCP/IP 기반으로 SOCKET 통신하여메시지를전송하는서비스입니다. ㆍ SMS ( 단문메시지 ) - 단문메시지로 90byte ( 한글 45 자 ) 의글자의전송이가능합니다. ㆍ MMS ( 장문메시지, 그림문자 ) - 장문메시지로 2000byte ( 한글 1000 자 ) 의글자의전송이가능합니다. 이미지파일은 jpg 만지원가능하며, 200k 이하첨부가능합니다. ㆍ서비스이용가능대상 - 웹호스팅또는자체웹서버를이용하여웹사이트를운영중인업체 ( 고정 IP 를사용하여야함. 여러개의서버사용시사용웹서버아이피를모두등록해야함 ) 서비스연동 Flow 1. 문자매니아기업연동페이지회원가입 (sms.smsmania.co.kr) * 회원가입을하셔야만서비스이용이가능합니다. 2. 허용 IP 설정 - 고객사의서버 IP를등록합니다. - 등록된 IP에서만메시지발송이가능합니다. ( 최대 21개등록가능 ) 3. 예제소스수정및적용 - 아래에제공하는예제소스를참고하시어개발하신페이지에수정하여복사 4. 결제 - 연동서비스는선충전방식입니다. ( 결제하신후문자전송이가능합니다.) WEB PHP Solution 3 SMSMANIA
예제소스 (PHP_Version) ######################################################## ## php용 smssocket 발송모듈 ## author : 문자매니아 ## version : v.1.2 ######################################################## // 문자전송 v1.2 function SocketPost($posts) { if(($posts['type']=='mms' $posts['type']=='fax') && $posts['file']){ $file = socketfile($posts['userid'],$posts['type'],$posts['file']); if($file){ if($file=="over_size" $file=="err_socket" $file=="err_copy" $file=="err_ext"){ return $file; else{ $posts['file'] = $file; else{ $posts['file'] = ''; $host = "sms.smsmania.co.kr"; $target = "/module/socket_send_multi.php"; $port = 80; $socket = fsockopen($host, $port); if( is_array($posts) ) { foreach( $posts AS $name => $value ) $postvalues.= urlencode($name)."=".urlencode( $value )."&"; $postvalues = substr($postvalues, 0, -1); $postlength = strlen($postvalues); $request = "POST $target HTTP/1.0\r\n"; $request.= "Host: $host\r\n"; WEB PHP Solution 4 SMSMANIA
$request.= "User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n"; $request.= "Content-type: application/x-www-form-urlencoded\r\n"; $request.= "Content-length: ".$postlength."\r\n\r\n"; $request.= $postvalues."\r\n"; fputs($socket, $request); $ret = ""; while(!feof($socket) ){ $ret.= trim(fgets($socket,4096)); fclose( $socket ); $std_bar = ":header_stop:"; return substr($ret,(strpos($ret,$std_bar)+strlen($std_bar))); // 파일전송 v1.1 function socketfile($id,$type,$filexx){ // 확장자체크 ///////////////////////////// $ext = strtolower(substr($filexx,strrpos($filexx,'.')+1)); if($type=='mms'){ if(!($ext=='jpg')){ return "err_ext"; elseif($type=='fax'){ if(!($ext=='doc' $ext=='txt' $ext=='xls' $ext=='ppt' $ext=='hwp' $ext=='jpg' $ext=='html' $ext=='htm' $ext=='gif')){ return "err_ext"; // mania file /////////////////////////////// if(sizeof(explode('http://',$filexx))>1){ return $filexx; // 파일용량체크 /////////////////////////// $mms_size = 200*1024; $fax_size = 200*1024; $filesize = @filesize($filexx); WEB PHP Solution 5 SMSMANIA
if(($filesize*1)<=0){ return "not_file"; if($filesize>${$type.'_size'){ return "over_size"; ////////////////////////////////////////////// $file_namexx = $id."_".$type."_".uniqid('').".".substr($filexx,strrpos($filexx,'.')+1); $host='sms.smsmania.co.kr'; // 원격서버명 $port = 80; // 원격서버포트 $path = '/module/socket_send_file.php'; // 화일을받아서처리해주는화일명 srand((double)microtime()*1000000); $boundary = "---------------------------".substr(md5(rand(0,32000)),0,10); // Build the header $header = "POST $path HTTP/1.0\r\n"; $header.= "Host: $host\r\n"; $header.= "Content-type: multipart/form-data, boundary=$boundary\r\n"; $data.="--$boundary\r\n"; $data.= "Content-Disposition: form-data; name=\"".$index."\"\r\n"; $data.= "\r\n".$value."\r\n"; $data.="--$boundary\r\n"; // and attach the file $data.= "--$boundary\r\n"; \r\n"; //$content_file = join("", file("./up/".$file_name)); $content_file = join("", file($filexx)); $data.="content-disposition: form-data; name=\"file1\"; filename=\"$file_namexx\"; $data.= "Content-Type: $content_type\r\n\r\n"; $data.= "".$content_file."\r\n"; $data.="--$boundary--\r\n"; $header.= "Content-length: ". strlen($data). "\r\n\r\n"; // Open the connection WEB PHP Solution 6 SMSMANIA
$f = fsockopen($host, $port); if(!$f){ else{ return "err_socket"; fputs($f,$header.$data); while (!feof($f)) $result.= fread($f,32000); // $std_bar = ":header_stop:"; return substr($result,(strpos($result,$std_bar)+strlen($std_bar))); /* 아래부분에서발송처리하시면됩니다. 1회전송은 10,000으로제한 /////////////////// // smsmania 연동아이디를실제사용하시는아이디로변경해주세요 $_array['type'] = "mms"; // 종류 (sms, mms, kukje) $_array['phone'] = "01011111111"; // 수신번호 ( 여러건 보낼때 "01022222222 01033333333 01055555555") $_array['names'] = " 홍길동 "; // 이름 ( 여러건보낼때 " 홍길동 김철수 이순희 ") 치환문자 {name -> 이름과치환 $_array['msg'] = " 메시지입니다."; // 메세지 $_array['userid'] = "smsmania 연동아이디 "; // 아이디 $_array['callback'] = "022223333"; // 회신번호 $_array['appdate'] = "20101202181500"; // 예약 ( 현재시간 10분후부터예약가능 ) $_array['subject'] = " 제목 "; // 제목 $_array['file'] = "/home/file/171/17189.jpg"; // 전송파일 [ 절대경로 ](mms) ( 선택 ) $_array['act'] = "cancel"; // 예약발송취소일경우 ( 발송일경우주석처리 ) $_array['midx'] = ""; // 발송할때리턴받은 midx */ /*sms( 단문 ) 발송일경우 /////////////////////////////////////////////////////////////// $_array['type'] = "sms"; $_array['phone'] = "01011111111"; $_array['names'] = " 홍길동 "; WEB PHP Solution 7 SMSMANIA
$_array['msg'] = " 메시지입니다."; $_array['userid'] = "smsmania 연동아이디 "; $_array['callback'] = "022223333"; $_array['appdate'] = "20101202181500"; */ /* 장문 / 그림발송일경 //////////////////////////////////////////////////////////////////// $_array['type'] = "mms"; $_array['phone'] = "01011111111"; $_array['names'] = " 홍길동 "; $_array['msg'] = " 메시지입니다."; $_array['userid'] = "smsmania 연동아이디 "; $_array['callback'] = "022223333"; $_array['appdate'] = "20101202181500"; $_array['file'] = "/home/file/171/17189.jpg"; // 장문일경우주석처리 $_array['subject'] = " 제목 "; */ /* 예약건취소일경우 ///////////////////////////////////////////////////////////////// $_array['type'] = "mms"; // 종류 (sms, mms, kukje) 예약건의종류입력 $_array['userid'] = ""; $_array['act'] = "cancel"; $_array['midx'] = "00000"; // 발송할때리턴받은 midx */ $return_flg = SocketPost($_array); // 발송일경우 echo($return_flg); // 1 2 1 midx -> 전송요청성공여부 (1: 성공 /0: 실패 ) 전송요청수 수신거부수 midx // 취소일경우 //echo($return_flg); // 1 3 -> 전송요청성공여부 (1: 성공 /0: 실패 ) 취소건수 /* 지원파일 mms : jpg (200k 제한 ) WEB PHP Solution 8 SMSMANIA
* 필수항목 요청변수 설명 참고사항 userid 문자매니아아이디 본인아이디 type 문자종류 단문 : sms / 장문, 그림문자 : mms phone 수신번호 ( 받는사람번호 ) 숫자만입력 ( 예 : 01011112222 ) callback 발신번호 ( 보내는사람번호 ) 숫자만입력 ( 예 : 01011112222 ) msg 메시지내용 msg값에 {name 입력시이름자동치환 appdate 예약전송날짜 현재시간기준 10분이후예약발송가능 names 이름 받는사람이여러명일경우 로구분 subject 제목 장문일경우만가능 (60Byte 제한 ) act cancel 예약발송취소일경우에만사용, 예약취소시필수값 midx 발송시리턴받은 midx 예약발송취소일경우에만사용, 예약취소시필수값 phone : 받는사람이여려명일경우 로구분. ( 예 : "01022222222 01033333333 01055555555") 잘못된전화번호인경우전송되지않습니다. msg : 단문 90byte( 한글 45자 ), 장문 2000byte( 한글 1000자 ) 까지만전송가능합니다. 해당크기가초과될경우, 발송은성공하지만실패처리되니주의하세요다른문자케릭터셋은반드시 euc-kr로변환하셔야합니다. appdate : 값이없으면즉시전송, 예약일자입력시예약전송숫자만입력 ( 예 : 20141231101000 ) : 2014년 12월 31일 10시 10분 00초 names : ( 예 : 홍길동 김철수 이순신 ) 다른문자케릭터셋은반드시 euc-kr로변환하셔야합니다. subject : 60byte( 한글 30자 ) 제한다른문자케릭터셋은반드시 euc-kr로변환하셔야합니다. act : 예약취소는예약 10분전까지만가능합니다. 기본값 : cancel midx : 예약발송취소일경우필수항목, 발송메시지고유키값 WEB PHP Solution 9 SMSMANIA
Error Code 에러코드 invalid_appdate deny_host invalid_member invalid_request empty_phone not_enough_point get_fail sms_max_msg over_size err_soket err_copy not_ext err_ext 에러메시지예약날짜오류호스트거부없는회원메시지내용, 발신번호가없을때수신전화번호가없을대포인트부족소켓통신오류단문 90byte 초과파일사이즈오류파일이동소켓오류파일 copy 오류파일없음미지원파일포맷 자주묻는질문 Q1. 연결이되지않고접속거부혹은네트워크관련오류가날경우 A. 설명된에러코드외의에러메시지일경우 80 포트로통신이가능한지웹서버방화벽 설정을확인하시길바랍니다. Q2. host deny 메시지일경우 A. 서비스중인웹서버의 IP 가허용 IP 로등록이제대로되었는지확인하시길바랍니다. WEB PHP Solution 10 SMSMANIA
Q3. 2. 서버아이피확인이어려우신경우 - 리눅스 : ifconfig -a grep "inet " grep "Bcast:" awk '{print $2' awk -F: '{print $2' - 윈도우 : cmd > ipconfig 위방법으로정확치않거나호스팅사용중이시면시스템관리자나호스팅업체에문의해서확인해야합니다. Q4. invalid-member 메시지일경우 A. userid 값을제대로입력했는지또는본인문자매니아아이디가맞는지확인하시길바랍니다. Q5. 결과값이 0 이거나문자가도착하지않는경우 A. 수신번호 (phone) 가올바른지메시지 (msg) 에이상이없는지확인하시길바랍니다. Q6.. 테스트문자발송시문자내용이깨지거나? 로표시된경우 A. 전송하는메시지의캐릭터셋이 euc-kr이어야하며, utf-8 인경우캐릭터셋을변경해서보내야합니다. 기타 euc-kr에서지원하지않는문자는핸드폰에서지원하지않으므로보내실수없습니다. 예 ) 뷁, 셑 Q7.. 수신결과조회방법 A. 현재수신결과조회방법은사이트내예약 / 전송관리를통해서확인이가능합니다. 연동을통한수신결과확인은차후에지원할예정입니다. Q8.. 단문메시지가 90Byte 가넘은경우 A. 발송이실패처리됩니다. 반드시메시지크기가 90Byte 이하인지확인후전송하셔야 합니다. Q8.. 장문메시지가 2,000Byte 가넘은경우 A. 발송이실패처리됩니다. 반드시메시지가 2,000Byte 이하인지확인후전송하셔야 합니다. Q9.. MMS 전송시이미지첨부기능 A. php 만지원가능합니다. 지원가능한확장자 : jpg (200k 제한 ) Q10. 포인트결제후불제 A. 현재후불제는지원하지않고있습니다. 선불충전만지원합니다. WEB PHP Solution 11 SMSMANIA