SmartBill Open API Servicedemoapi.smartbill.co.kr/manual/SmartBill Open API Service... · 2018. 6....
Transcript of SmartBill Open API Servicedemoapi.smartbill.co.kr/manual/SmartBill Open API Service... · 2018. 6....
1
SmartBill Open API Service
REST API Reference
- .Net -
[ Digital Tax Invoice ]
2016.09.02
(주)비즈니스온커뮤니케이션 연구소 개발팀
2
개정 이력
날짜 내용
2017-01-10 수신업체 SystemID 입력 파라미터 추가(DTI_SAVE, ARISSUE, DETAILARISSUE) ※삼성전자
2017-05-17 Rvalue 관련 주의사항 추가(ARISSUE, DETAILARISSUE, RARISSUE)
2017-05-18 거래명세서 관련 주석소스 수정
2017-07-19 플랫폼코드 입력 파라미터 추가(ARISSUE, DETAILARISSUE) ※허브사업자를 분류하기 위한 코드
2017-11-03 플랫폼코드 설명 수정(B2B도입 모델)
2018-01-12 인증서 등록정보 조회 기능 추가
2018-05-10 원본(XML) 조회기능 추가
2018-06-04 건별 상세조회(DTI_STATUS) 함수에 조회항목 추가
수정세금계산서여부, 수탁자회사명, 수탁자사업자번호, 위수탁여부, 공급받는자회사명, 공급받는자
사업자번호, 공급받는자유형(회원/비회원/개인), 공급자회사명, 공급자사업자번호, 정/역 구분, 세
금계산서 유형(과세/면세), 거래명세서포함여부, 매출/매입여부, 영수/청구 구분, 공급자이메일, 공
급받는자 이메일, 수탁자 이메일
2018-06-04 미리보기 양식조회에 거래명세서 추가(과세, 면세, 위수탁 과세, 위수탁 면세)
3
목 차
1. 모델 정의 ............................................................................................................................................................................. 4
1.1 RequestModel Class ....................................................................................................................................................................... 4
1.2 ResultModel Class ........................................................................................................................................................................... 4
2. RequestModel 정의 및 설명 ............................................................................................................................................ 5
2.1 RequestModel.................................................................................................................................................................................. 5
3. 프로세스 별 예시 ............................................................................................................................................................... 6
3.1 세금계산서 발행 ............................................................................................................................................................................... 6
3.2 세금계산서 저장 ............................................................................................................................................................................... 9
3.3 세금계산서 역발행 요청 ............................................................................................................................................................... 11
3.4 세금계산서 역발행 ......................................................................................................................................................................... 13
3.5 거래명세서 발행 ............................................................................................................................................................................. 15
3.6 거래명세서 역발행 요청 ............................................................................................................................................................... 18
3.7 거래명세서 역발행 ......................................................................................................................................................................... 20
3.8 세금계산서 상태 변경 ................................................................................................................................................................... 22
3.9 메일 재전송 .................................................................................................................................................................................... 24
3.10 국세청 전송 요청......................................................................................................................................................................... 26
3.11 세금계산서 상태 조회 ................................................................................................................................................................. 28
3.12 부가정보 조회 .............................................................................................................................................................................. 30
3.13 메일 수신결과 조회 ..................................................................................................................................................................... 32
3.14 미리보기 양식 조회 ..................................................................................................................................................................... 34
3.15 보관함 조회 .................................................................................................................................................................................. 36
3.16 미처리함 조회 .............................................................................................................................................................................. 38
3.17 건별 상세 조회 ............................................................................................................................................................................ 41
3.18 건별 상세 이력 조회 ................................................................................................................................................................... 43
3.19 회원가입결과 조회 ....................................................................................................................................................................... 45
3.20 세금계산서 발행결과 조회.......................................................................................................................................................... 47
3.21 인증토큰 발급 .............................................................................................................................................................................. 49
3.22 공인인증서 등록정보 조회.......................................................................................................................................................... 51
3.23 원본(XML) 조회 ........................................................................................................................................................................... 53
4
1. 모델 정의
1.1 RequestModel Class
1.2 ResultModel Class
public class ResultModel {
public ResultModel() { // 생성자
MessageId = string.Empty;
Signal = string.Empty;
ConversationId = null;
ResponseTime = string.Empty;
ResultCode = string.Empty;
ResultMessage = string.Empty;
ResultDataSet = new DataSet();
}
public string MessageId { get; set; } // 메시지 아이디
public string Signal { get; set; } // 요청 시그널
public string[] ConversationId { get; set; } // 참조번호
public string ResponseTime { get; set; } // 송신 사업자번호
public string ResultCode { get; set; } // 전송 결과 코드
public string ResultMessage { get; set; } // 전송 결과 코드 내역
public DataSet ResultDataSet { get; set; } // 전송 결과 DataSet
}
public class RequestModel {
public string MessageId { get; set; } // 메시지 아이디
public string Signal { get; set; } // 요청 시그널
public string RequestTime { get; set; } // 요청 시간
public string SendComRegno { get; set; } // 송신 사업자번호
public string ReceiveComRegno { get; set; } // 수신 사업자번호
public string AuthToken { get; set; } // 인증 토큰
public string ServiceCode { get; set; } // 서비스 코드
public string SystemType { get; set; } // 시스템 코드
public string[] ConversationId { get; set; } // 참조번호
public string SMTPEmail { get; set; } // SMTPEmail
public string RValue { get; set; } // RValue
public string CertPassword { get; set; } // 인증서 비밀번호
public string SignedXML { get; set; } // 서명원본 xml
public string UnSignedXML { get; set; } // 미서명원본 xml
public string AuthCode { get; set; } // 인증코드
public string SbId { get; set; } // 스마트빌 아이디
public string SbPwd { get; set; } // 스마트빌 비번
public string ExpirationDateCode { get; set; } // 인증토큰 유효기간 설정 코드
public string ExpirationDate { get; set; } // 인증토큰 만료일
public string SearchFromDate { get; set; } // 검색 시작일자
public string SearchToDate { get; set; } // 검색 종료일자
public string SearchComRegno { get; set; } // 검색 사업자번호
public string[] Email { get; set; } // 담당자 이메일
public string SearchTypeCode { get; set; } // 조회타입코드
public string RepoTypeCode { get; set; } // 보관함타입코드
public string ListTypeCode { get; set; } // 미처리함 타입코드
public string StatusSignal { get; set; } // 상태변경 시그널
public string StatusReason { get; set; } // 취소, 거부사유
public string Phone { get; set; } // 휴대전화번호
public string[] IssueId { get; set; } // 승인번호
public string SystemId { get; set; } // 수신업체SystemID
public string PlatformCode { get; set; } // 허브업체 구분코드
}
5
2. RequestModel 정의 및 설명
2.1 RequestModel
Param Name Param ID Description
메시지ID MessageId GUID(전역고유식별자) 생성 값
요청시그널 Signal 처리할 작업에 대한 구분 값
요청시간 RequestTime 처리할 작업의 요청시간(포맷: YYYYMMDDHH24MISS)
송신사업자번호 SendComRegno 요청하는 사업장의 사업자번호
수신사업자번호 ReceiveComRegno 요청 받는 사업장의 사업자번호
인증토큰 AuthToken 스마트빌의 API를 이용하기 위한 스마트빌에서 인증 받은 코드
서비스코드 ServiceCode 스마트빌의 서비스 구분 값
시스템타입 SystemType 스마트빌의 인터페이스 시스템 구분 값
참조번호 ConversationId 스마트빌의 전자세금계산서의 개별 Id
SMTP이메일 SMTPEmail 유통용 이메일 주소(옵션)
RValue RValue 인증서의 신원 확인 값
인증서 비밀번호 CertPassword 인증서의 비밀번호
서명원본 XML SignedXML 인증서의 서명정보가 있는 세금계산서 원본 xml
미 서명원본 XML UnSignedXML 세금계산서 원본 xml(xml형식은 [4. KEC 표준전자세금계산서 v3.0 항목표.xls] 참조)
인증코드 AuthCode 인증토큰 발급에 필요한 사전 코드
스마트빌 아이디 SbId 스마트빌 포탈에서 사용되는 아이디
유효기간 설정코드 ExpirationDateCode 인증토큰의 유효기간 설정을 위한 코드
인증토큰 만료일 ExpirationDate 인증토큰의 유효기간 만료일
검색 시작일자 SearchFromDate 검색할 시작일자
검색 종료일자 SearchToDate 검색할 종료일자
검색 사업자번호 SearchComRegno 검색할 사업자 번호
이메일 Email 이메일 주소(문자열 배열)
조회 타입코드 SearchTypeCode 조회를 위한 구분 코드
보관함 종류코드 RepoTypeCode 보관함 구분 코드
미처리함 종류코드 ListTypeCode 미처리함 구분 코드
상태 시그널 StatusSignal 세금계산서 상태 별 구분 값
상태변경 사유 StatusReason 세금계산서 상태 변경에 대한 사유
휴대전화 번호 Phone 휴대전화 번호
승인번호 IssueId 24자리의 승인번호(문자열 배열)
프로세스코드 ProcessCode 프로세스에 필요한 코드(타ASP XML업로드시 등록: 0, 삭제: 1)
수신시스템ID SystemId 수신자의 시스템 구분 값(ex. 삼성전자)
플랫폼코드 PlatformCode B2B 모델일 경우 → 허브업체 사업자번호(OpenAPI 도입모델 설명서 참고)
6
3. 프로세스 별 예시
3.1 세금계산서 발행
매출 세금계산서를 발행 한다. 요청시그널/서비스코드/시스템타입은 고정 값을 사용한다.
3.1.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자(GUID 생성 값)
요청시그널 Signal String(30) 고정 값: ARISSUE
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 공급자 사업자번호
수신사업자번호 ReceiveComRegno String (13) 공급받는자 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
시스템타입 SystemType String(10) 고정 값: OAPI
참조번호 ConversationId String[] 스마트빌 식별자(35자리)
SMTP이메일 SMTPEmail String(20) 유통용 이메일 주소(옵션)
RValue RValue String 신원 확인 값(서명모듈 이용해서 발행할 경우에만 필요)
인증서 비밀번호 CertPassword String 암호화된 인증서의 비밀번호
서명원본 XML SignedXML String 서명정보가 있는 세금계산서 원본 xml
(xml형식은 [4. KEC 표준전자세금계산서 v3.0 항목표.xls] 참조)
수신시스템ID SystemId String 수신업체의 SystemID 입력(ex. 삼성전자)
플랫폼코드 PlatformCode String 허브업체의 사업자번호(B2B모델일 경우에만 필요)
7
3.1.2 Request Sample
string strConvId = "11111111192208758882201504011710003";
char sp = ';';
string[] arrConvId = strConvId.Split(sp);
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "ARISSUE",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
ReceiveComRegno = "2208758882",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode =" DTI",
SystemType = "OAPI",
ConversationId = arrConvId,
SMTPEmail = "",
RValue = "lSH2WInYgvm7lhfuSp6ptCZlbtY=", // 서명모듈 이용해서 발행할 경우에만 필요
CertPassword = "Ygvm7lhfuSp6p", // 암호화된 인증서의 비밀번호
SystemId = "",
PlatformCode = "",
SignedXML = "" //서명정보가 있는 세금계산서 xml
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
8
3.1.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: ARISSUE
참조번호 ConversationId String(35) 요청 한 스마트빌 식별자
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
3.1.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
Response.Write("정상적으로 처리되었습니다.");
}
else
{
Response.Write(result.ResultMessage); //실패사유
}
}
9
3.2 세금계산서 저장
발행 예정인 매출 세금계산서를 요청한다. 요청시그널/서비스코드/시스템타입은 고정 값을 사용한다.
3.2.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DTI_SAVE
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 공급자 사업자번호
수신사업자번호 ReceiveComRegno String (13) 공급받는자 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
시스템타입 SystemType String(10) 고정 값: OAPI
참조번호 ConversationId String[] 스마트빌 식별자(35자리)
미 서명원본 XML UnSignedXML String 서명정보가 없는 세금계산서 원본 xml
(xml형식은 [4. KEC 표준전자세금계산서 v3.0 항목표.xls] 참조)
수신시스템ID SystemId String 수신업체의 SystemID 입력(ex. 삼성전자)
3.2.2 Request Sample
string strConvId = "11111111192208758882201504011710003";
char sp = ';';
string[] arrConvId = strConvId.Split(sp);
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "DTI_SAVE",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
ReceiveComRegno = "2208758882",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SystemType = "OAPI",
ConversationId = arrConvId,
SystemId = "",
UnSignedXML = ""//서명정보가 없는 세금계산서 xml
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
10
3.2.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DTI_SAVE
참조번호 ConversationId String(35) 요청 한 스마트빌 식별자
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
3.2.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
Response.Write("정상적으로 처리되었습니다.");
}
else
{
Response.Write(result.ResultMessage); //실패사유
}
}
11
3.3 세금계산서 역발행 요청
매입 세금계산서를 요청한다. 요청시그널/서비스코드/시스템타입은 고정 값을 사용한다.
3.3.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: RARREQUEST
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 공급받는자 사업자번호
수신사업자번호 ReceiveComRegno String (13) 공급자 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
시스템타입 SystemType String(10) 고정 값: OAPI
참조번호 ConversationId String[] 스마트빌 식별자(35자리)
미 서명원본 XML UnSignedXML String 서명정보가 없는 세금계산서 원본 xml
(xml형식은 [4. KEC 표준전자세금계산서 v3.0 항목표.xls] 참조)
3.3.2 Request Sample
string strConvId = "11111111192208758882201504011710003";
char sp = ';';
string[] arrConvId = strConvId.Split(sp);
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89,
Signal = "RARREQUEST",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
ReceiveComRegno = "2208758882",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SystemType = "OAPI",
ConversationId = arrConvId,
UnSignedXML = "" //서명정보가 없는 세금계산서 xml
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
12
3.3.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: RARREQUEST
참조번호 ConversationId String(35) 요청 한 스마트빌 식별자
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
3.3.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
Response.Write("정상적으로 처리되었습니다.");
}
else
{
Response.Write(result.ResultMessage); //실패사유
}
}
13
3.4 세금계산서 역발행
발행 요청된 매출 세금계산서를 발행한다. 요청시그널/서비스코드/시스템타입은 고정 값을 사용한다.
3.4.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: RARISSUE
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 공급자 사업자번호
수신사업자번호 ReceiveComRegno String (13) 공급받는자 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
시스템타입 SystemType String(10) 고정 값: OAPI
참조번호 ConversationId String[] 스마트빌 식별자(35자리)
SMTP이메일 SMTPEmail String(20) 유통용 이메일 주소(옵션)
RValue RValue String 신원 확인 값(서명모듈 이용해서 발행할 경우에만 필요)
인증서 비밀번호 CertPassword String 암호화된 인증서의 비밀번호
서명원본 XML SignedXML String 서명정보가 있는 세금계산서 원본 xml
(xml형식은 [4. KEC 표준전자세금계산서 v3.0 항목표.xls] 참조)
3.4.2 Request Sample
string strConvId = "11111111192208758882201504011710003";
char sp = ';';
string[] arrConvId = strConvId.Split(sp);
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "RARISSUE",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
ReceiveComRegno = "2208758882",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SystemType = "OAPI",
ConversationId = arrConvId,
SMTPEmail = "",
RValue = "lSH2WInYgvm7lhfuSp6ptCZlbtY=", //서명모듈 이용해서 발행할 경우에만 필요
CertPassword = "sdfsd345fsdf55faadfs", //암호화된 인증서의 비밀번호
SignedXML = "" //서명정보가 있는 세금계산서 xml
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
14
3.4.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: RARISSUE
참조번호 ConversationId String(35) 요청 한 스마트빌 식별자
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
3.4.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
Response.Write("정상적으로 처리되었습니다.");
}
else
{
Response.Write(result.ResultMessage); //실패사유
}
}
15
3.5 거래명세서 발행
매출 거래명세서(세금계산서+거래명세서)를 발행한다. 요청시그널/서비스코드/시스템타입은 고정 값을 사용한다.
3.5.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DETAILARISSUE
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 공급자 사업자번호
수신사업자번호 ReceiveComRegno String (13) 공급받는자 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
시스템타입 SystemType String(10) 고정 값: OAPI
참조번호 ConversationId String[] 스마트빌 식별자(35자리)
SMTP이메일 SMTPEmail String(20) 유통용 이메일 주소(옵션)
RValue RValue String 신원 확인 값(서명모듈 이용해서 발행할 경우에만 필요)
인증서 비밀번호 CertPassword String 암호화된 인증서의 비밀번호
서명원본 XML SignedXML String 서명정보가 있는 세금계산서 원본 xml
미 서명원본 XML UnSignedXML String 서명정보가 없는 거래명세서 원본 xml
수신시스템ID SystemId String 수신업체의 SystemID 입력(ex. 삼성전자)
플랫폼코드 PlatformCode String 허브업체의 사업자번호(B2B모델일 경우에만 필요)
16
3.5.2 Request Sample
string strConvId = "11111111192208758882201504011710003";
char sp = ';';
string[] arrConvId = strConvId.Split(sp);
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "DETAILARISSUE",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
ReceiveComRegno = "2208758882",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SystemType = "OAPI",
ConversationId = arrConvId,
SMTPEmail = "",
RValue = "lSH2WInYgvm7lhfuSp6ptCZlbtY=", //서명모듈 이용해서 발행할 경우에만 필요
CertPassword = "sdfsd345fsdf55faadfs", //암호화된 인증서의 비밀번호
SystemId = "",
PlatformCode = "",
SignedXML = "", //서명정보가 있는 세금계산서 xml
UnSignedXML = "" //서명정보가 없는 거래명세서 xml
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
17
3.5.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DETAILARISSUE
참조번호 ConversationId String(35) 요청 한 스마트빌 식별자
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
3.5.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
Response.Write("정상적으로 처리되었습니다.");
}
else
{
Response.Write(result.ResultMessage); //실패사유
}
}
18
3.6 거래명세서 역발행 요청
매입 거래명세서(세금계산서+거래명세서)를 요청한다. 요청시그널/서비스코드/시스템타입은 고정 값을 사용한다.
3.6.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: RDETAILREQUEST
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 공급받는자 사업자번호
수신사업자번호 ReceiveComRegno String (13) 공급자 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
시스템타입 SystemType String(10) 고정 값: OAPI
참조번호 ConversationId String[] 스마트빌 식별자(35자리)
서명원본 XML SignedXML String 서명정보가 있는 세금계산서 원본 xml
미 서명원본 XML UnSignedXML String 서명정보가 없는 거래명세서 원본 xml
3.6.2 Request Sample
string strConvId = "11111111192208758882201504011710003";
char sp = ';';
string[] arrConvId = strConvId.Split(sp);
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "RDETAILREQUEST",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
ReceiveComRegno = "2208758882",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SystemType = "OAPI",
ConversationId = arrConvId,
SignedXML = "", //서명정보가 있는 세금계산서 xml
UnSignedXML = "" //서명정보가 없는 거래명세서 xml
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
19
3.6.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: RDETAILREQUEST
참조번호 ConversationId String(35) 요청 한 스마트빌 식별자
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
3.6.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
Response.Write("정상적으로 처리되었습니다.");
}
else
{
Response.Write(result.ResultMessage); //실패사유
}
}
20
3.7 거래명세서 역발행
발행 요청된 매출 거래명세서(세금계산서+거래명세서)를 발행한다. 요청시그널/서비스코드/시스템타입은 고정 값을 사용한다.
3.10.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: RDETAILISSUE
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 공급자 사업자번호
수신사업자번호 ReceiveComRegno String (13) 공급받는자 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
시스템타입 SystemType String(10) 고정 값: OAPI
참조번호 ConversationId String[] 스마트빌 식별자(35자리)
SMTP이메일 SMTPEmail String(20) 유통용 이메일 주소(옵션)
RValue RValue String 신원 확인 값(서명모듈 이용해서 발행할 경우에만 필요)
인증서 비밀번호 CertPassword String 암호화된 인증서의 비밀번호
서명원본 XML SignedXML String 서명정보가 있는 세금계산서 원본 xml
(xml형식은 [4. KEC 표준전자세금계산서 v3.0 항목표.xls] 참조)
3.7.1 Request Sample
string strConvId = "11111111192208758882201504011710003";
char sp = ';';
string[] arrConvId = strConvId.Split(sp);
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "RDETAILISSUE",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
ReceiveComRegno = "2208758882",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SystemType = "OAPI",
ConversationId = arrConvId,
SMTPEmail = "",
RValue = "lSH2WInYgvm7lhfuSp6ptCZlbtY=", //서명모듈 이용해서 발행할 경우에만 필요
CertPassword = "sdfsd345fsdf55faadfs", //암호화된 인증서의 비밀번호
SignedXML = "" //서명정보가 있는 세금계산서 xml
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
21
3.7.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: RDETAILISSUE
참조번호 ConversationId String(35) 요청 한 스마트빌 식별자
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
3.7.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
Response.Write("정상적으로 처리되었습니다.");
}
else
{
Response.Write(result.ResultMessage); //실패사유
}
}
22
3.8 세금계산서 상태 변경
세금계산서의 상태를 변경한다. 요청시그널/서비스코드/시스템타입은 고정 값을 사용한다.
3.8.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: CHGSTATUS
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 공급자 사업자번호
수신사업자번호 ReceiveComRegno String (13) 공급받는자 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
시스템타입 SystemType String(10) 고정 값: OAPI
참조번호 ConversationId String[] 스마트빌 식별자(35자리)
상태 시그널 StatusSignal String 변경할 상태의 시그널 값(하단의 상태시그널 참조)
상태변경 사유 StatusReason String 취소, 거부 사유
3.8.2 Request Sample
string strConvId = "11111111192208758882201504011710003";
char sp = ';';
string[] arrConvId = strConvId.Split(sp);
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "CHGSTATUS",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
ReceiveComRegno = "2208758882",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SystemType = "OAPI",
ConversationId = arrConvId,
StatusSignal = "REJECT",
StatusReason = "공급가액 상이. 확인요망"
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
23
3.8.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: CHGSTATUS
참조번호 ConversationId String(35) 요청 한 스마트빌 식별자
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
3.8.4 Response Sample
3.8.5 상태 시그널 표
상태 Signal 취소/거부 사유 필요 여부 변경 전 상태
수신승인 APPROVE 수신미승인
수신거부 REJECT 필요 수신미승인
역발행요청취소 CANCELRREQUEST 필요 역발행요청
역발행요청거부 RIREJECT 필요 역발행요청
발행취소 CANCELALL 필요 수신미승인
발행예정승인 WAPPROVE 발행예정 요청
발행예정거부 WREJECT 필요 발행예정 요청
발행예정취소 WCANCELALL 필요 발행예정 요청
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
Response.Write("정상적으로 처리되었습니다.");
}
else
{
Response.Write(result.ResultMessage); //실패사유
}
}
24
3.9 메일 재전송
메일을 재전송한다. 요청시그널/서비스코드/시스템타입은 고정 값을 사용한다.
3.9.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: SENDMAIL
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 공급자 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
시스템타입 SystemType String(10) 고정 값: OAPI
참조번호 ConversationId String[] 스마트빌 식별자(35자리)
상태 시그널 StatusSignal String 재전송할 상태의 시그널 값(하단의 상태시그널 참조)
이메일 Email String[] 재전송할 이메일 주소(이메일 주소가 공백일 경우, 최초 요청
시 저장된 수신 메일로 전송됨)
3.9.2 Request Sample
string strConvId = "11111111192208758882201504011710003";
char sp = ';';
string[] arrConvId = strConvId.Split(sp);
string[] arrEmail = new string[1];
arrEmail[0] = "[email protected]";
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "SENDMAIL",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SystemType = "OAPI",
ConversationId = arrConvId,
StatusSignal = "ARISSUE",
Email = arrEmail
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
25
3.9.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: SENDMAIL
참조번호 ConversationId String(35) 요청 한 스마트빌 식별자
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
3.9.4 Response Sample
3.9.5 상태 시그널 표
상태 Signal
정발행 ARISSUE
역발행요청 RARREQUEST
역발행 RARISSUE
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
Response.Write("정상적으로 처리되었습니다.");
}
else
{
Response.Write(result.ResultMessage); //실패사유
}
}
26
3.10 국세청 전송 요청
세금계산서를 즉시 국세청에 전송하도록 요청한다. 요청시그널/서비스코드/시스템타입은 고정 값을 사용한다.
3.10.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: NTS_REQUEST
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 공급자 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
시스템타입 SystemType String(10) 고정 값: OAPI
참조번호 ConversationId String[] 스마트빌 식별자(35자리, 다중 건 가능)
3.10.2 Request Sample
string strConvId = "11111111192208758882201504011710003; 11111111192208758882201504011711003";
char sp = ';';
string[] arrConvId = strConvId.Split(sp);
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "NTS_REQUEST",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SystemType = "OAPI",
ConversationId = arrConvId
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
27
3.10.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: NTS_REQUEST
참조번호 ConversationId String(35) 요청 한 스마트빌 식별자
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
3.10.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
Response.Write("정상적으로 처리되었습니다.");
}
else
{
Response.Write(result.ResultMessage); //실패사유
}
}
28
3.11 세금계산서 상태 조회
세금계산서의 상태 조회를 요청한다. 요청시그널/서비스코드는 고정 값을 사용한다.
※ 성능이슈와 네트워크 트래픽 관리 목적상, 동일한 검색조건의 함수 호출을 1회 / 1분으로 제한합니다.
3.11.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DTI_STATUS_LIST
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 송신자 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
검색 시작일자 SearchFromDate String(10) YYYY-MM-DD
검색 종료일자 SearchToDate String(10) YYYY-MM-DD(최대 1주일간의 데이터 조회 가능)
검색 사업자번호 SearchComRegno String(13) 검색할 사업자번호 입력
매출건 조회일 경우 매입자의 사업자번호
매입건 조회일 경우 매출자의 사업자번호
매출 매입 구분 RepoTypeCode String(2) 매출(AR) 매입(AP) 선택 입력
3.11.2 Request Sample
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "DTI_STATUS_LIST",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SearchFromDate = "2015-04-01",
SearchToDate = "2015-04-07",
SearchComRegno = "2208758882",
RepoTypeCode = "AR"
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
29
3.11.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DTI_STATUS_LIST
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.11.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount)
{
for (var i = 0; i < totalCount; i++)
{
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString();//참조번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString();//세금계산서상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString();//국세청전송상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[3].ToString();//국세청 전송결과
result.ResultDataSet.Tables[0].Rows[i].ItemArray[4].ToString();//국세청 전송일자
result.ResultDataSet.Tables[0].Rows[i].ItemArray[5].ToString();//담당자 이메일
}
}
else
{
Response.Write("데이터가 존재하지 않습니다.");
}
}
else
{
Response.Write(result.ResultMessage);
}
}
30
3.12 부가정보 조회
스마트빌을 사용하기 위한 부가정보를 조회한다. 요청시그널/서비스코드는 고정 값을 사용한다.
3.12.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: ADD_INFO
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 송신 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
검색 사업자번호 SearchComRegno String(10) 검색할 사업자번호 입력
담당자 이메일 Email String[] 담당자 이메일 입력
조회타입코드 SearchTypeCode String 하단의 조회타입 코드 참조
3.12.2 Request Sample
3.12.3 조회타입 코드
조회타입 코드 조회타입 종류 사용예 필수 입력 파라미터
NOTICE 공지사항 스마트빌 사이트에서 공지된 사항을 알고자 할 때
BIZPLACE 종사업장 코드 거래처의 종사업장 코드를 알고자 할 때 검색사업자번호(SearchComRegno)
AUTH 담당자 권한 거래처의 담당자의 스마트빌 권한을 알고자 할 때 검색사업자번호(SearchComRegno)
담당자이메일(Email)
CLOSE 휴폐업 여부 거래처의 휴폐업 여부를 알고자 할 때 검색사업자번호(SearchComRegno)
COMPANY 회사정보조회 거래처의 사업장 정보를 알고자 할 때 검색사업자번호(SearchComRegno)
string[] arrEmail = new string[1];
arrEmail[0] = "[email protected]";
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "ADD_INFO",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SearchComRegno = "2208758882",
Email = arrEmail,
SearchTypeCode = "NOTICE"
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
31
3.12.4 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: ADD_INFO
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.12.5 Response Sample
if (response.IsSuccessStatusCode) {
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode)) {
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount) {
if ("NOTICE".Equals(request.SearchTypeCode)) {
for (var i = 0; i < totalCount; i++) {
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString(); //공지사항 번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString(); //공지사항 제목
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString(); //공지사항 내용
result.ResultDataSet.Tables[0].Rows[i].ItemArray[3].ToString(); //공지사항 등록일
}
} else if ("BIZPLACE".Equals(request.SearchTypeCode)) {
for (var i = 0; i < totalCount; i++) {
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString(); //종사업장 코드
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString(); //종사업장 명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString(); //종사업장 주소
}
} else if ("AUTH".Equals(request.SearchTypeCode)) {
for (var i = 0; i < totalCount; i++) {
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString();//발행권한
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString();//수신 권한
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString();//역발행 요청권한
}
} else if ("CLOSE".Equals(request.SearchTypeCode)) {
for (var i = 0; i < totalCount; i++) {
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString();//휴폐업 코드
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString();//휴폐업 코드상세
}
} else if ("COMPANY".Equals(request.SearchTypeCode)) {
for (var i = 0; i < totalCount; i++) {
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString();//회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString();//대표자명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString();//업태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[3].ToString();//업종
result.ResultDataSet.Tables[0].Rows[i].ItemArray[4].ToString();//주소
}
}
} else {
Response.Write("데이터가 존재하지 않습니다.");
}
} else {
Response.Write(result.ResultMessage);
}
}
32
3.13 메일 수신결과 조회
세금계산서와 관련하여 발송된 메일의 담당자 수신여부를 조회한다. 요청시그널/서비스코드는 고정 값을 사용한다.
3.13.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: MAIL_RESULT
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 송신 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
참조번호 ConversationId String[] 스마트빌 식별자(35자리)
3.13.2 Request Sample
string strConvId = "11111111192208758882201504011710003";
char sp = ';';
string[] arrConvId = strConvId.Split(sp);
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "MAIL_RESULT",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
ConversationId = arrConvId
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
33
3.13.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: MAIL_RESULT
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.13.3 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount)
{
for (var i = 0; i < totalCount; i++)
{
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString();//메일 전송 여부
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString();//메일 열람 여부
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString();//메일 열람 일자
}
}
else
{
Response.Write("데이터가 존재하지 않습니다.");
}
}
else
{
Response.Write(result.ResultMessage);
}
}
34
3.14 미리보기 양식 조회
세금계산서를 보이기 위한 UI 템플릿을 요청한다. 요청시그널/서비스코드는 고정 값을 사용한다.
3.14.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: PREVIEW_FORM
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 송신 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
3.14.2 Request Sample
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "PREVIEW_FORM",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI"
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
35
3.14.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: PREVIEW_FORM
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.14.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount)
{
result.ResultDataSet.Tables[0].Rows[0].ItemArray[0].ToString(); //공급받는자용 매입 세금계산서
result.ResultDataSet.Tables[0].Rows[1].ItemArray[0].ToString(); //공급받는자용 매입 계산서
result.ResultDataSet.Tables[0].Rows[2].ItemArray[0].ToString(); //공급받는자용위수탁매입세금계산서
result.ResultDataSet.Tables[0].Rows[3].ItemArray[0].ToString(); //공급받는자용 위수탁 매입 계산서
result.ResultDataSet.Tables[0].Rows[4].ItemArray[0].ToString(); //공급자용 매출 세금계산서
result.ResultDataSet.Tables[0].Rows[5].ItemArray[0].ToString(); //공급자용 매출 계산서
result.ResultDataSet.Tables[0].Rows[6].ItemArray[0].ToString(); //공급자용 위수탁 매출 세금계산서
result.ResultDataSet.Tables[0].Rows[7].ItemArray[0].ToString(); //공급자용 위수탁 매출 계산서
result.ResultDataSet.Tables[0].Rows[8].ItemArray[0].ToString(); //거래명세서(과세)
result.ResultDataSet.Tables[0].Rows[9].ItemArray[0].ToString(); //거래명세서(면세)
result.ResultDataSet.Tables[0].Rows[10].ItemArray[0].ToString();//위수탁 거래명세서(과세)
result.ResultDataSet.Tables[0].Rows[11].ItemArray[0].ToString();//위수탁 거래명세서(면세)
}
else
{
Response.Write("데이터가 존재하지 않습니다.");
}
}
else
{
Response.Write(result.ResultMessage);
}
}
36
3.15 보관함 조회
보관함 조회를 요청한다. 요청시그널/서비스코드는 고정 값을 사용한다.
※ 성능이슈와 네트워크 트래픽 관리 목적상, 동일한 검색조건의 함수 호출을 1회 / 1분으로 제한합니다.
3.15.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: ARAP_REPO
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 송신 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
검색 시작일자 SearchFromDate String(10) YYYY-MM-DD
검색 종료일자 SearchToDate String(10) YYYY-MM-DD(최대 1개월간의 데이터 조회 가능)
검색 사업자번호 SearchComRegno String(13) 검색할 사업자번호 입력
(매출보관함일 경우 검색할 매입자의 사업자번호,
매입보관함일 경우 검색할 매출자의 사업자번호
보관함 종류 코드 RepoTypeCode String 매출(AR), 매입(AP)를 선택해서 입력
3.15.2 Request Sample
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "ARAP_REPO",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SearchFromDate = "2015-04-01",
SearchToDate = "2015-04-07",
SearchComRegno = "2208758882",
RepoTypeCode = "AR"
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
37
3.15.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: ARAP_REPO
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.15.4 Response Sample
if (response.IsSuccessStatusCode) {
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode)) {
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount) {
if ("AR".Equals(request. RepoTypeCode)) {
for (var i = 0; i < totalCount; i++) {
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString(); //세금계산서 참조번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString(); //세금계산서 승인번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString(); //세금계산서 작성일자
result.ResultDataSet.Tables[0].Rows[i].ItemArray[3].ToString(); //공급받는자 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[4].ToString(); //공급받는자 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[5].ToString(); //세금계산서 종류
result.ResultDataSet.Tables[0].Rows[i].ItemArray[6].ToString(); //세금계산서 공급가액
result.ResultDataSet.Tables[0].Rows[i].ItemArray[7].ToString(); //세금계산서 정/역구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[8].ToString(); //세금계산서 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[9].ToString(); //국세청 전송 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[10].ToString();//담당자 이메일
}
} else if ("AP".Equals(request. RepoTypeCode)) {
for (var i = 0; i < totalCount; i++) {
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString(); //세금계산서 참조번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString(); //세금계산서 승인번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString(); //세금계산서 작성일자
result.ResultDataSet.Tables[0].Rows[i].ItemArray[3].ToString(); //공급자 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[4].ToString(); //공급자 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[5].ToString(); //세금계산서 종류
result.ResultDataSet.Tables[0].Rows[i].ItemArray[6].ToString(); //세금계산서 공급가액
result.ResultDataSet.Tables[0].Rows[i].ItemArray[7].ToString(); //세금계산서 정/역구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[8].ToString(); //세금계산서 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[9].ToString(); //국세청 전송 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[10].ToString();//담당자 이메일
}
}
} else {
Response.Write("데이터가 존재하지 않습니다.");
}
} else {
Response.Write(result.ResultMessage);
}
}
38
3.16 미처리함 조회
미처리함 내역을 요청한다. 요청시그널/서비스코드는 고정 값을 사용한다.
※ 성능이슈와 네트워크 트래픽 관리 목적상, 동일한 검색조건의 함수 호출을 1회 / 1분으로 제한합니다.
3.16.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: MY_LIST
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 송신 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
검색 시작일자 SearchFromDate String(10) YYYY-MM-DD
검색 종료일자 SearchToDate String(10) YYYY-MM-DD(최대 1주일간의 데이터 조회 가능)
미처리함 종류 코드 ListTypeCode String 회사 미처리함(C), 거래처 미처리함(T)를 선택해서 입력
3.16.2 Request Sample
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "MY_LIST",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
SearchFromDate = "2015-04-01",
SearchToDate = "2015-04-07",
ListTypeCode = "C"
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
39
3.16.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: MY_LIST
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.16.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount)
{
if ("C".Equals(request.ListTypeCode))
{
for (var i = 0; i < totalCount; i++)
{
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString(); //매출 매입 구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString(); //세금계산서 작성일자
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString(); //거래처 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[3].ToString(); //거래처 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[4].ToString(); //세금계산서 종류
result.ResultDataSet.Tables[0].Rows[i].ItemArray[5].ToString(); //세금계산서 공급가액
result.ResultDataSet.Tables[0].Rows[i].ItemArray[6].ToString(); //거래명세서 첨부 여부
result.ResultDataSet.Tables[0].Rows[i].ItemArray[7].ToString(); //세금계산서 정/역구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[8].ToString(); //세금계산서 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[9].ToString(); //수탁자 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[10].ToString(); //수탁자 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[11].ToString(); //공급받는자 타입(개인/회사)
result.ResultDataSet.Tables[0].Rows[i].ItemArray[12].ToString(); //영수 청구 구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[13].ToString(); //
result.ResultDataSet.Tables[0].Rows[i].ItemArray[14].ToString(); //공급자 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[15].ToString(); //공급자 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[16].ToString(); //공급받는자 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[17].ToString(); //공급받는자 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[18].ToString(); //위수탁 세금계산서 여부
result.ResultDataSet.Tables[0].Rows[i].ItemArray[19].ToString(); //세금계산서 참조번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[20].ToString(); //수정코드
result.ResultDataSet.Tables[0].Rows[i].ItemArray[21].ToString(); //수정세금계산서 여부
result.ResultDataSet.Tables[0].Rows[i].ItemArray[22].ToString(); //담당자 이메일
result.ResultDataSet.Tables[0].Rows[i].ItemArray[23].ToString(); //원본XML
}
}
40
else if ("T".Equals(request. ListTypeCode))
{
for (var i = 0; i < totalCount; i++)
{
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString(); //매출 매입 구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString(); //세금계산서 작성일자
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString(); //거래처 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[3].ToString(); //거래처 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[4].ToString(); //세금계산서 종류
result.ResultDataSet.Tables[0].Rows[i].ItemArray[5].ToString(); //세금계산서 공급가액
result.ResultDataSet.Tables[0].Rows[i].ItemArray[6].ToString(); //거래명세서 첨부 여부
result.ResultDataSet.Tables[0].Rows[i].ItemArray[7].ToString(); //세금계산서 정/역구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[8].ToString(); //세금계산서 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[9].ToString(); //수탁자 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[10].ToString(); //수탁자 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[11].ToString(); //공급받는자 타입(개인/회사)
result.ResultDataSet.Tables[0].Rows[i].ItemArray[12].ToString(); //영수 청구 구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[13].ToString(); //
result.ResultDataSet.Tables[0].Rows[i].ItemArray[19].ToString(); //세금계산서 참조번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[14].ToString(); //공급자 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[15].ToString(); //공급자 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[18].ToString(); //위수탁 세금계산서 여부
result.ResultDataSet.Tables[0].Rows[i].ItemArray[17].ToString(); //열람 횟수
result.ResultDataSet.Tables[0].Rows[i].ItemArray[20].ToString(); //국세청 전송 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[21].ToString(); //수정세금계산서 여부
}
}
}
else
{
Response.Write("데이터가 존재하지 않습니다.");
}
}
else
{
Response.Write(result.ResultMessage);
}
}
41
3.17 건별 상세 조회
세금계산서의 상세 내역을 조회한다. 요청시그널/서비스코드는 고정 값을 사용한다.
※ 성능이슈와 네트워크 트래픽 관리 목적상, 동일한 검색조건의 함수 호출을 1회 / 1분으로 제한합니다.
3.17.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DTI_STATUS
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 송신 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
참조번호 ConversationId
3.17.2 Request Sample
var arrConvId = new Array();
arrConvId[0] = '11111111192208758882201504011710003';
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "DTI_STATUS",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
ConversationId = arrConvId
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
42
3.17.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DTI_STATUS
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.17.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount)
{
for (var i = 0; i < totalCount; i++)
{
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString();//참조번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString();//승인번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString();//세금계산서 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[3].ToString();//국세청 전송 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[4].ToString();//국세청 전송 결과
result.ResultDataSet.Tables[0].Rows[i].ItemArray[5].ToString();//국세청 전송 일자
result.ResultDataSet.Tables[0].Rows[i].ItemArray[6].ToString();//세금계산서 합계금액
result.ResultDataSet.Tables[0].Rows[i].ItemArray[7].ToString();//세금계산서 공급가액
result.ResultDataSet.Tables[0].Rows[i].ItemArray[8].ToString();//세금계산서 세액
result.ResultDataSet.Tables[0].Rows[i].ItemArray[9].ToString();//세금계산서 작성일자
result.ResultDataSet.Tables[0].Rows[i].ItemArray[10].ToString();//세금계산서 발행일자
result.ResultDataSet.Tables[0].Rows[i].ItemArray[11].ToString();//세금계산서 수정코드
result.ResultDataSet.Tables[0].Rows[i].ItemArray[12].ToString();//원본 세금계산서 승인번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[13].ToString();//매출,매입 구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[14].ToString();//세금계산서 유형
result.ResultDataSet.Tables[0].Rows[i].ItemArray[15].ToString();//거래명세서 포함 여부
result.ResultDataSet.Tables[0].Rows[i].ItemArray[16].ToString();//정,역 구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[17].ToString();//공급받는자 회원 구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[18].ToString();//영수,청구 구분
result.ResultDataSet.Tables[0].Rows[i].ItemArray[19].ToString();//공급자 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[20].ToString();//공급자 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[21].ToString();//공급받는자 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[22].ToString();//공급받는자 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[23].ToString();//수탁자 회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[24].ToString();//수탁자 사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[25].ToString();//위수탁 여부
result.ResultDataSet.Tables[0].Rows[i].ItemArray[26].ToString();//수정세금계산서 여부
result.ResultDataSet.Tables[0].Rows[i].ItemArray[27].ToString();//공급자 이메일
result.ResultDataSet.Tables[0].Rows[i].ItemArray[28].ToString();//공급받는자 이메일
result.ResultDataSet.Tables[0].Rows[i].ItemArray[29].ToString();//수탁자 이메일
}
}
else
{
Response.Write("데이터가 존재하지 않습니다.");
}
}
else
{
Response.Write(result.ResultMessage);
}
}
43
3.18 건별 상세 이력 조회
세금계산서의 상세 이력을 조회한다. 요청시그널/서비스코드는 고정 값을 사용한다.
※ 성능이슈와 네트워크 트래픽 관리 목적상, 동일한 검색조건의 함수 호출을 1회 / 1분으로 제한합니다.
3.18.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DTI_HISTORY
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 송신 사업자번호
인증토큰 AuthToken String(40)
서비스코드 ServiceCode String(10) 고정 값: DTI
참조번호 ConversationId
3.18.2 Request Sample
var arrConvId = new Array();
arrConvId[0] = '11111111192208758882201504011710003';
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "DTI_HISTORY",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
ConversationId = arrConvId
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
44
3.18.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DTI_HISTORY
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.18.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount)
{
for (var i = 0; i < totalCount; i++)
{
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString();//
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString();//세금계산서 작성일자
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString();//세금계산서 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[3].ToString();//사유
result.ResultDataSet.Tables[0].Rows[i].ItemArray[4].ToString();//회사명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[5].ToString();//담당자명
result.ResultDataSet.Tables[0].Rows[i].ItemArray[6].ToString();//생성일자
}
}
else
{
Response.Write("데이터가 존재하지 않습니다.");
}
}
else
{
Response.Write(result.ResultMessage);
}
}
45
3.19 회원가입결과 조회
이메일을 이용해서, 스마트빌의 회원아이디를 조회한다.
3.19.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: GET_MEMBERINFO
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 송신 사업자번호
인증코드 AuthCode String(40) 스마트빌에서 부여 받은 인증코드
이메일 Email String[] 조회할 사용자의 이메일 주소
3.19.2 Request Sample
var arrEmail = new Array();
arrEmail[0] = '[email protected]';
arrEmail[1] = '[email protected]';
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "GET_MEMBERINFO",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthCode = "B861CF77977142E39EDD44A6A91CCCCD ,
IssueId = arrIssueId
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
46
3.19.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: GET_ MEMBERINFO
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.19.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount)
{
for (var i = 0; i < totalCount; i++)
{
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString();//사업자번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString();//이메일주소
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString();//스마트빌아이디(공백인
경우, 회원가입이 되어있지 않은 상태)
}
}
else
{
Response.Write("데이터가 존재하지 않습니다.");
}
}
else
{
Response.Write(result.ResultMessage);
}
}
47
3.20 세금계산서 발행결과 조회
참조번호를 이용해서, 세금계산서의 상태를 조회한다.
※ 성능이슈와 네트워크 트래픽 관리 목적상, 동일한 검색조건의 함수 호출을 1회 / 1분으로 제한합니다.
3.20.1 Request
Param Name Param ID Type(max) Description
메시지ID MessageId String 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DTI_ISSUE_RESULT
요청시간 RequestTime String(14) YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 송신 사업자번호
인증토큰 AuthToken String(40)
서비스코드 SERVICE_CODE String(10) 고정 값: DTI
참조번호 ConversationId String[] 상태 조회 할 참조번호
3.20.2 Request Sample
var arrConvId = new Array();
arrConvId[0] = '11111111191231231231000016146803000';
arrConvId[1] = '11111111191231231231000016146802000';
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "DTI_ISSUE_RESULT",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ServiceCode = "DTI",
ConversationId = arrConvId
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
48
3.20.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: DTI_ISSUE_RESULT
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.20.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount)
{
for (var i = 0; i < totalCount; i++)
{
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString(); //참조번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString(); //승인번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString(); //세금계산서 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[3].ToString(); //국세청전송 상태
result.ResultDataSet.Tables[0].Rows[i].ItemArray[4].ToString(); //국세청전송 결과
result.ResultDataSet.Tables[0].Rows[i].ItemArray[5].ToString(); //국세청전송 일시
result.ResultDataSet.Tables[0].Rows[i].ItemArray[6].ToString(); //합계금액
result.ResultDataSet.Tables[0].Rows[i].ItemArray[7].ToString(); //공급가액
result.ResultDataSet.Tables[0].Rows[i].ItemArray[8].ToString(); //세액
result.ResultDataSet.Tables[0].Rows[i].ItemArray[9].ToString(); //작성일자
result.ResultDataSet.Tables[0].Rows[i].ItemArray[10].ToString();//발행일시
result.ResultDataSet.Tables[0].Rows[i].ItemArray[11].ToString();//수정코드
result.ResultDataSet.Tables[0].Rows[i].ItemArray[12].ToString();//당초승인번호
}
}
else
{
Response.Write("데이터가 존재하지 않습니다.");
}
}
else
{
Response.Write(result.ResultMessage);
}
}
49
3.21 인증토큰 발급
통신용 인증토큰 발급을 요청한다. 요청시그널은 고정 값을 사용한다.
3.21.1Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: GET_TOKEN
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 공급자 사업자번호
인증코드 AuthCode String(40) 스마트빌에서 부여 받은 인증코드
스마트빌 아이디 SbId String(10) 스마트빌의 사용자 아이디
유효기간 설정코드 ExpirationDateCode String(10) 하단의 유효기간 설정코드 참조
인증토큰 만료일 ExpirationDate String[] 사용자가 지정하는 만료일 입력
3.21.2 Request Sample
3.21.3 유효기간 설정코드
유효기간 코드 유효기간 비고
D 1 일
W 7 일
H 15 일
M 30 일
Q 90 일
R 180 일
Y 365 일
Z 영구 사용
C 사용자 지정 ‘ExpirationDate’에 지정할 만료일 입력
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "GET_TOKEN",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
AuthCode = "B861CF77977142E39EDD44A6A91CCCCD",
SbId = "lsh31147",
ExpirationDateCode = "D",
ExpirationDate = "",
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
50
3.21.4 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: GET_TOKEN
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.21.5 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
var authToken = string.Empty;
if ("30000".Equals(result.ResultCode))
{
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount)
{
authToken = result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString(); //인증토큰
}
else
{
Response.Write("데이터가 존재하지 않습니다.");
}
}
else
{
Response.Write(result.ResultMessage);
}
}
51
3.22 공인인증서 등록정보 조회
스마트빌에 등록된 공인인증서의 등록정보를 조회한다.
3.22.1Request
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: GET_CERT_INFO
요청시간 RequestTime String(14) 포맷: YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 조회할 인증서 사업자번호
서비스코드 ServiceCode String(40) 고정값 : DTI
3.22.2 Request Sample
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "GET_CERT_INFO",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
ServiceCode = "DTI"
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
52
3.22.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: GET_CERT_INFO
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.22.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
var authToken = string.Empty;
if ("30000".Equals(result.ResultCode))
{
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount)
{
authToken = result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString(); //인증서 만료일
}
else
{
Response.Write("데이터가 존재하지 않습니다.");
}
}
else
{
Response.Write(result.ResultMessage);
}
}
53
3.23 원본(XML) 조회
참조번호에 해당하는 원본(XML)을 조회한다. 발행(서명)된 세금계산서일 경우 서명 원본을, 역매입요청 건일 경우 서명값이 없는 XML을 리
턴하며, 거래명세서가 포함된 건일 경우 거래명세서에 대한 XML도 리턴해 준다.
3.23.1Request
Param Name Param ID Type(max) Description
메시지ID MessageId String 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: VIEW_XML
요청시간 RequestTime String(14) YYYYMMDDHH24MISS
송신사업자번호 SendComRegno String (13) 송신 사업자번호
인증토큰 AuthToken String(40)
서비스코드 SERVICE_CODE String(10) 고정 값: DTI
참조번호 ConversationId String[] 원본 조회할 참조번호
3.23.2 Request Sample
var arrConvId = new Array();
arrConvId[0] = '11111111191231231231000016146803000';
arrConvId[1] = '11111111191231231231000016146802000';
var request = new RequestModel(){
MessageId = "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89",
Signal = "VIEW_XML",
RequestTime = "20150401105301",
SendComRegno = "1111111119",
ServiceCode = "DTI",
AuthToken = "dXVCcE96ZVlXVHBPeklGcitHQlErcmROYjhEeDFXYi8rVXJmVmZPQk1LTT0K",
ConversationId = arrConvId
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://demoapi.smartbill.co.kr/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("sb-api/request/", request).Result;
54
3.23.3 Response
Param Name Param ID Type(max) Description
메시지ID MessageId String(36) 요청 한 트랜잭션 식별자
요청시그널 Signal String(30) 고정 값: VIEW_XML
응답시간 ResponseTime String(14) 포맷: YYYYMMDDHH24MISS
처리코드 ResultCode String(5) 처리 결과 코드
처리메시지 ResultMessage String(2000) 처리 결과 상세 내역
처리결과 ResultDataSet DataSet
3.23.4 Response Sample
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsAsync<ResultModel>().Result;
if ("30000".Equals(result.ResultCode))
{
var totalCount = result.ResultDataSet.Tables[0].Rows.Count;
if(0 < totalCount)
{
result.ResultDataSet.Tables[0].Rows[i].ItemArray[0].ToString(); //참조번호
result.ResultDataSet.Tables[0].Rows[i].ItemArray[1].ToString(); //세금계산서 원본
result.ResultDataSet.Tables[0].Rows[i].ItemArray[2].ToString(); //거래명세서 원본
}
else
{
Response.Write("데이터가 존재하지 않습니다.");
}
}
else
{
Response.Write(result.ResultMessage);
}
}