간결하고 쉬운 HTTPS 방식으로 API 연동하여 문자 메시지를 보내실 수 있습니다. 국내 메시지 전송은 물론 국제 장문 문자, 현지어 전송 등 다양한 메시지 전송이 가능합니다. API 연동에 대한 자세한 내용은 아래에서 확인하실 수 있으며, 연동 테스트 신청 및 서비스 이용 상담은 아래의 버튼을 눌러주세요.
기술정보센터
1. Request HTTPS: TCP/IP 통신를 이용하며 Client는 HTTP API 규격에 맞춰서 메시지 전송
2. Response HTTPS: Server는 Client로부터 전달 받은 메시지 전송요청 응답
3. SEND SMS: Server는 통신사에 메시지를 전송
4. Get Reports: 통신사업자로부터 메시지 리포트 수신
5. Get Reports: 통신사업자가 인포뱅크 Server로 전송한 메시지 리포트를 Client로 전달
6. Response Reports: 메시지 리포트 정상 수신 여부에 대한 응답을 Server에 전달
HTTPS METHOD
전송 요청을 위해 HTTPS GET/POST 방식을 제공하며, 전송 응답은 XML 방식을 사용합니다.
ENCODING
UTF-8 인코딩을 기본으로 제공합니다.
TIMEZONE
메시지 기준 시간은 한국 표준 시 KST(UTC+9)를 사용합니다.
Base URL
HTTPS | https://rest.supersms.co/sms/xml |
---|
결과 정보 수신
리포트를 수신 하기 위해서는 인포뱅크에서 제공하는 서버 IP에 대한 접근을 허용해야 하며,
리포트를 수신할 고객사측 IP/PORT 에 대한 정보는 bizplus@infobank.net 로 접수 해야 합니다.
- 결과 송신 서버 IP 정보 : 211.233.70.235 / 211.233.70.236
Request format
전세계 언어를 지원하기 위해 UTF-8인코딩을 사용합니다.
* [M] Mandatory:필수 [O] Optional:옵션
Parameter | M/O | TYPE | Description |
---|---|---|---|
from | M | Char | 발신자 전화번호 (최대 16bytes) ex) 한국 발송 시 01029652189 (국가코드 미포함) 해외 발신 시 821029652189 (국가코드 포함) |
to_country | M | Char | 국가코드 (1 ~ 3 bytes) ex) 한국 발송 시, to_country=82 |
to | M | Char | 수신자 전화번호 (최대 13bytes) ex) 한국 발송 시, to=1093446280 |
title | O | Char | 메시지 제목 (최대 40 byte) - 메시지 제목은 UTF-8과 URL 인코딩 필요 - 한국 장문 발송 시에만 유효함 |
message | M | Char | 메시지 내용 - 메시지 내용은 UTF-8과 URL인코딩 필요 |
report_req | M | Char | 레포트 수신 여부 - ‘1’ : 레포트 수신이며, 필수 셋팅 필요 |
charset | O | Char | 인코딩 설정 (1:UTF-8, 2:euc-kr) - 해당 값을 설정하지 않으면 UTF-8로 기본 인코딩 됨. ex) charset=2 (euc-kr) |
ref | O | Char | 여분 필드, 고객이 설정할 수 있는 필드 값 (최대 길이 20 bytes. 영.숫자만 가능 ) |
ttl | O | Char | 메시지 유효 시간(초단위) ex) ttl=86400 (24hour = 60 * 60 * 24) |
payment_code | O | Char | 정산용 부서코드 (최대 길이 20 byte) |
client_sub_id | O | Char | Sender ID, 메시지 서명을 복수로 지정하기 위한 구분자 (최대 길이 20 byte) |
origin_cid | O | Char | 최초 발신사업자 식별코드 |
발신번호는 숫자형식을 지원합니다.
한국으로 90byte를 초과하는 메시지 발송 시 LMS(첨부파일 없는 MMS) 형태로 자동 전환됩니다.
origin_cid 필드는 한국으로 인터넷 문자 전송 시 최초 발신사업자를 특정하기 위해 문자사업자(특수부가사업자)의 식별코드 값입니다. (상세설명은 부록 5.2 최초 발신사업자 식별코드 참조)
Request Example 1 (PHP)
<?php
$url = 'https://rest.supersms.co/sms/xml?' . http_build_query([
'id' => 'infobank_test',
'pwd' => 'pwinfobank',
'from' => '01029652189',
'to_country' => '82',
'to' => '1093446280',
'message' => 'Hello Infobank',
'report_req' => '1'
]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$xml = simplexml_load_string($response);
if ($xml === false) {
echo "Failed loading XML: ";
} else {
//print_r($xml);
//echo($xml->to_country);
//echo($xml->to);
echo("response code : " . $xml->messages->message->err_code);
}
?>
Request Example 2 (Shell(BASH))
#!/bin/bash
curl 'https://rest.supersms.co/sms/xml' \
-d id=infobank_test \
-d pwd=pwinfobank \
-d from=01029652189 \
-d to_country=82 \
-d to=1093446280 \
--data-urlencode "message=Hello Infobank" \
-d report_req=1
Request Example 3 (Python)
import urllib
params = {
'id': 'infobank_test',
'pwd': 'pwinfobank',
'from': '01029652189',
'to_country': '82',
'to': '1093446280',
'message': 'Hello Infobank',
'report_req': '1'
}
url = 'https://rest.supersms.co/sms/xml?' + urllib.urlencode(params)
response = urllib.urlopen(url)
print response.read()
Request Example 4 (Ruby)
require "net/http"
require "uri"
uri = URI.parse("https://rest.supersms.co/sms/xml")
params = {
"id" => "infobank_test",
"pwd" => "pwinfobank",
"from" => "01029652189",
"to_country" => "82",
"to" => "1093446280",
"message" => "Hello Infobank",
"report_req" => "1"
}
response = Net::HTTP.post_form(uri, params)
puts response.body
Request Example 5 (nodeJS)
var https = require('https');
var options = {
host: 'rest.supersms.co',
path: 'sms/xml?id=' + encodeURIComponent('infobank_test') +
'&pwd=' + encodeURIComponent('pwinfobank') +
'&from=' + encodeURIComponent('01029652189') +
'&to_country=' + encodeURIComponent('82') +
'&to=' + encodeURIComponent('1093446280') +
'&message=' + encodeURIComponent('Hello Infobank') +
'&report_req=' + encodeURIComponent(1)
};
var req = https.request(options);
req.end();
var responseData = '';
req.on('response', function(res){
res.on('data', function(chunk){
responseData += chunk;
});
res.on('end', function(){
console.log(responseData);
});
});
Request Response format
Request 에 대한 Response 를 통해 전송요청에 대한 성공/실패 여부를 확인 할 수 있으며,
단말기 도착여부는 Report를 통해 확인 할 수 있습니다.
신청한 계정에 한하여 국제메시지는 DLR 정보를 수신 받을 수 있습니다. (rslt_type으로 기존 리포트와 구분)
* [M] Mandatory:필수 [O] Optional:옵션
Parameter | M/O | TYPE | Description |
---|---|---|---|
msgid | M | Char | 발송된 메시지에 부여되는 메시지 아이디 |
to_country | M | Char | 국가코드 (1-3 byte) ex) 한국 발송 시, <to_country>82</to_country> |
to | M | Char | 수신자 번호 |
err_code | M | Char | 메시지 전송 결과 코드 |
messages cnt | M | Char | 메시지 건수 |
msg_type | M | Char | 메시지 타입 (1. SMS, 2. MMS) ex) MMS로 메시지 발송된 경우, <msg_type>2</msg_type> |
ref | O | Char | 여분 필드, 고객이 설정할 수 있는 필드 값 - Request에서 설정한 ref값 전달 |
Request Response Example 1 (성공)
<?xml version='1.0' encoding='UTF-8' ?>
<submit_response>
<to_country>82</to_country>
<to>1093446280</to>
<messages cnt=”1”>
<message>
<msgid>00000123</msgid>
<err_code>R000</err_code>
<msg_type>1</msg_type>
</message>
</messages>
<ref>AA123456789</ref>
Request Response Example 2 (실패)
<?xml version='1.0' encoding='UTF-8' ?>
<submit_response>
<to_country>82</to_country>
<to>1093446280</to>
<messages cnt=”1”>
<message>
<err_code>R007</err_code>
</message>
</messages>
<ref>AA123456789</ref>
</submit_response>
err_code 부분은 ‘4. 응답 및 결과코드’ 참조
Report Format
Report는 GET방식으로 클라이언트가 제공한 접속정보로 결과값을 전달합니다.
* [M] Mandatory:필수 [O] Optional:옵션
Parameter | M/O | TYPE | Description |
---|---|---|---|
msgid | M | Char | 발송된 메시지에 부여되는 메시지 아이디 |
to | M | Char | 수신자 번호(국가코드를 제외한 수신번호) ex) 1093446280 |
to_country | M | Char | 수신자 국가코드 ex) 82 |
err_code | M | Char | 리포트 세부 결과 코드 |
network | M | Char | Mobile network MCCMNC. (MCC:국가코드, MNC:이통사코드) ex) 45005 (SKT), 45006 (LGU+), 45008 (KT) |
rescnt | M | Char | 실제 메시지 과금 건수 *Concatenated Message경우, 실제 메시지 과금 된 건수 |
sent_date | O | Char | 단말기 도착 시간 - 한국 표준시 기준 : KST(UTC+9), YYYYMMDDHHMMSS |
ref | O | Char | 여분 필드, 클라이언트 설정 값 - request에서 설정한 ref값 전달 |
rslt_type | O | Char | 리포트 종류(0: 최종결과, 3: DLR정보) |
REPORT Example 1(성공)
?msgid=00000123&to=1093446280&to_country=82&ref=AA123456789&network=45008
&rescnt=1&err_code=1000&sent_date=20150322140641
REPORT Example 2 (실패)
- 단말기 미 수신시 단말기 도착 시간(sent_date)을 생략한다.
?msgid=00000123&to=1093446280&to_country=82&ref=AA123456789&network=45008&rescnt=0&err_code=3001
자세한 err_code & status는 ‘4.2 Report Return Code’ 참조
Report Response Format
Report를 수신을 설정한 클라이언트는 인포뱅크가 발송한 Report에 대하여 Report Response를 전송하여야 합니다. Report Response가 포맷과 맞지 않거나 연결에 실패할 경우 인포뱅크는 Report 전달을 3회 재시도 합니다.
리포트 관련 IP/PORT 정보는 ‘3.2 결과 정보 수신’ 참조
* [M] Mandatory:필수 [O] Optional:옵션
Parameter | M/O | TYPE | Description |
---|---|---|---|
msgid | M | Char | 발송된 메시지에 부여되는 메시지 아이디 |
to_country | M | Char | 국가코드 (1-3 byte) ex. 한국 발송 시, to_country=82 |
to | M | Char | 수신자 번호 |
Report Response Example
<?xml version='1.0' encoding='UTF-8' ?>
<report_response>
<msgid>00000123</msgid>
<to_country>82</to_country>
<to>1093446280</to>
Response Return Code
Status | code | Description |
---|---|---|
SUCCESS | R000 | 성공 |
FAILURE | R001 | server busy |
INVALID | R002 | 인증 실패 |
INVALID | R003 | 수신자 번호 형식 오류 |
INVALID | R004 | 발신자 번호 형식 오류 |
INVALID | R005 | 메시지 형식 오류 |
INVALID | R006 | 유효하지 않은 TTL |
INVALID | R007 | 유효하지 않은 파라미터 오류 |
INVALID | R008 | 스팸 필터링 |
INVALID | R009 | 서버 capacity 초과, 재시도 요망 |
INVALID | R010 | 등록되지 않은 발신번호 사용 |
INVALID | R011 | 발신번호 변작 방지 기준 위반 발신번호 사용 |
INVALID | R012 | 해당 서비스유형 전송권한 없음 |
INVALID | R013 | 발송 가능건수 초과 |
UNKNOWN | R999 | 알려지지 않은 에러 |
Report Return Code
Status | code | Description |
---|---|---|
SUCCESS | 1000 | 성공 : 단말기에 메시지 정상 도착 |
FAILURE | 2000 | 전송 시간 초과 |
FAILURE | 2001 | 전송 실패 (무선망단) |
FAILURE | 2002 | 전송 실패 (무선망 -> 단말기단) |
FAILURE | 2003 | 단말기 전원 꺼짐 |
FAILURE | 2004 | 단말기 메시지 버퍼 풀 |
FAILURE | 2005 | 음영지역 |
FAILURE | 2006 | 메시지 삭제됨 |
FAILURE | 2007 | 일시적인 단말 문제 |
INVALID | 3000 | 전송할 수 없음 |
INVALID | 3001 | 가입자 없음 |
INVALID | 3002 | 성인 인증 실패 |
INVALID | 3003 | 수신번호 형식 오류 |
INVALID | 3004 | 단말기 서비스 일시 정지 |
INVALID | 3005 | 단말기 호 처리 상태 |
INVALID | 3006 | 착신 거절 |
INVALID | 3008 | 기타 단말기 문제 |
INVALID | 3009 | 메시지 형식 오류 |
INVALID | 3010 | MMS 미지원 단말 |
INVALID | 3011 | 서버 오류 |
INVALID | 3012 | 스팸 |
INVALID | 3013 | 서비스 거부 |
INVALID | 3014 | 기타 |
INVALID | 3015 | 전송 경로 없음 |
INVALID | 3016 | 첨부파일 사이즈 제한 실패 - 발신번호 변작방지 세칙위반 - 동보 메시지 전송 시 일부 건 세칙 위반 |
INVALID | 3018 | 휴대폰 가입 이동통신사를 통해 발신번호 변작 방지 부가 서비스에 가입 된 번호를 발신번호로 사용하는 경우 |
INVALID | 3019 | KISA or 미래부에서 모든 고객사에 대하여 차단 처리 요청된 번호를 발신 번호로 사용하는 경우 |
INVALID | 3022 | Charset conversion error - 동보 사용시 국가코드 ‘82’ 인 경우, 건별 인코딩 오류 처리 |
INVALID | 3025 | 24시간 이내 중복 발송 |
INVALID | 3029 | 광고 전송 제한 시간 발송 |
INVALID | 3035 | 해당 통신사 장애 설정 으로 전송 불가 |
INVALID | 3036 | KISA 최초 발신자 식별코드 오류로 발송 불가 |
Concatenated message
해외에서 사용하는 160자 이상의 메시지를 전송하기 위한 전송 방식으로 일부 국가와 통신사에서 지원하며 실제 휴대폰에서는 전체 메시지가 1건으로 보입니다. 한국의 LMS와 유사하지만 Standard SMS 1건을 기준 글자수로 하여 글자 수에 따라 요금이 부과되는 차이점이 있습니다.
예) 160자가 Standard SMS인 국가로 350자의 메시지를 전송할 수 있으며,
요금은 153자+153자+44자 = 350자로 3건의 요금이 부과됩니다.
concatenated SMS 이용 시 긴 문자 처리를 위한 코드가 포함되어 153자가 1건으로 과금됩니다.
최초 발신사업자 식별코드(originCID)
인터넷 문자 전송 시 최초 발신사업자를 특정하기 위해 삽입하는 식별코드이며, 특수한 유형의 부가통신사업자 등록번호(9자리 숫자)를 사용합니다.
최초 발신사업자가 재판매사업자이면 최초 재판매사업자 등록번호가 수록되고, 재판매사업자를 통하지 않고 문자중계사로 발송할 경우 문자중계사의 등록번호가 수록됩니다.
예1) 기업 → 재판매사업자1 → 재판매사업자 2 → 문자중계사 → 이동통신사
: 재판매사업자1의 등록번호가 삽입
예2) 기업 → 문자중계사 → 이동통신사
: 문자중계사의 등록번호가 삽입
Q. Report 전달에 제약사항이 있나요?
Report 전달이 실패 할 경우 메시지 당 최대 3회 까지 재시도 합니다. 3회 초과 시 해당 리포트는 전달되지 않습니다.
기술지원 상담
Email help@Infobank.net
Tel. 031-628-1511