SmartBill Open API Service REST API Reference - JAVA - [ Digital Tax Invoice ] ( 주 ) 비즈니스온커뮤니케이션연구소개발팀 1

Similar documents
SmartBill Open API Service REST API Reference - javascript - [ Digital Tax Invoice ] ( 주 ) 비즈니스온커뮤니케이션연구소개발팀 1

슬라이드 1

메뉴얼41페이지-2

PowerPoint 프레젠테이션

Microsoft Word - 전자세금계산서 바로빌 Web service Spec v1_2.docx

1. SNS Topic 생성여기를클릭하여펼치기... Create Topic 실행 Topic Name, Display name 입력후 Create topic * Topic name : 특수문자는 hyphens( - ), underscores( _ ) 만허용한다. Topi

PowerPoint 프레젠테이션

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

open-api.md 2/14/2019 Deflow Open Api 1. 목록 (GET) /v1/order/list - 주문내역조회 (GET) /v1/order/complete/list - 거래내역조회 (POST) /v1/order/cancel - 주문취소 (GET)

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

카택스 비즈 관리자용 사용설명서 목차 사용 전에 시작하기 사용하기 설정하기 알아두기 훑어보기 차량 관리 운행내역 조회 부관리자 설정 자주묻는 질문 회원가입 사용자 관리 운행구간 조회 앱 권한 설정 GPS 오류 요인 부서 관리 운행일지 다운로드

rmi_박준용_final.PDF

Microsoft PowerPoint - 04-UDP Programming.ppt

<4D F736F F F696E74202D20C0FCC0DABCBCB1DDB0E8BBEABCADB8DEB4BABEF328332D E >

KAA2005.9/10 Ãâ·Â

CDMS 개발 내역서

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

슬라이드 1

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

PowerPoint 프레젠테이션

mytalk

PowerPoint 프레젠테이션

< DC1A6C1D6C1BEC7D5BBE7C8B8BAB9C1F6B0FCBBE7BEF7BAB8B0EDBCADC7A5C1F62E696E6464>

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

12-file.key

게시판 스팸 실시간 차단 시스템

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

슬라이드 1

슬라이드 1

CDMS 개발 내역서


JAVA PROGRAMMING 실습 08.다형성

협력업체 매뉴얼

어댑터뷰

2015_핀업_작품접수매뉴얼

말은 많은 Blockchain 2

Microsoft PowerPoint 웹 연동 기술.pptx

Spring Boot/JDBC JdbcTemplate/CRUD 예제

신림프로그래머_클린코드.key

Microsoft PowerPoint - AUTOMATING BESPOKE ATTACKS.pptx

항공기상정보공공데이터개발 (OPEN API) 개발자가이드 1. 서비스개요 서비스정보 서비스 ID 서비스명 ( 국문 ) 서비스명 ( 영문 ) 서비스설명 SC-SD-WI-WB-001 항공기상정보 amoapi 항공기상전문 (METAR/SPECI, TAF, 공항경보, SIGM

12. OAuth 2.0 으로사용자관리하기 12.1 들어가며 대부분의회사나조직은직원과고객데이터베이스를가지고있습니다. 쓰리래빗츠를도입하면 일부데이터베이스를이중으로관리해야하는불편함에직면합니다. 이문제를해결하기위해서 쓰리래빗츠는 OAuth 2.0 으로사용자를관리하는기능을제공

대량문자API연동 (with directsend)

1. 배경 업무 내용이나 개인정보가 담긴 청구서 등을 메일로 전달 시 중요한 정보가 유출되는 경우가 발생하고 있으며, 이에 따른 메일 암호화 솔루션을 도입하고 있으나 기존 ActiveX를 기반으로 한 플러그인 방식은 여러 가지 제약으로 인해 사용성이 저하되고, 고객 대

알림톡연동문서ppt_v5.0.1_

PowerPoint 프레젠테이션

약관

변경이력 버전 일자 내용 작성자 최초작성 한은경 초안수정및에러코드추가 한은경 리포트연동 API 변경, 메일주소추가 송준민 EUC-KR 설명수정 송준

전자세금계산서교육자료_기업고객용

자바-11장N'1-502

untitled

Microsoft Word - mp1_protection_v2.docx

Regulation on Approval of Consumer Chemical Products subject to Safety Check without promulgated Safety Standard.hwp

Observational Determinism for Concurrent Program Security

09-interface.key

UI TASK & KEY EVENT

CDMS 개발 내역서

Java

쉽게 풀어쓴 C 프로그래밊

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

PowerPoint 프레젠테이션

5...hwp

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2003) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2003 Exchange Server 2003 GFI MailEssentials 2010 fo

2009방송통신산업동향.hwp

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

교육자료

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

로거 자료실

사업 수행 계획서

대량문자 이용 매뉴얼 (with directsend)

Microsoft PowerPoint - KXCERCECVROL.ppt

C++ Programming

전자세금계산서교육자료_기업고객용

오핀 (OFIN) SDK Guide Fintech Mobile SDK Guide - Android V 1.0 OPPFLIB 1

Messaging Service REST API Specification V1.0.5 Last Modified: 19 March,

10.ppt

DocsPin_Korean.pages

Microsoft PowerPoint - Java7.pptx

B _00_Ko_p1-p51.indd

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

국가기술표준원 SafetyKorea OpenAPI Version

슬라이드 1

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

[Brochure] KOR_TunA

알림톡연동문서ppt_v3.1.0_

Week13

PowerPoint 프레젠테이션

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

4장.문장


특허청구의 범위 청구항 1 앵커(20)를 이용한 옹벽 시공에 사용되는 옹벽패널에 있어서, 단위패널형태의 판 형태로 구성되며, 내부 중앙부가 후방 하부를 향해 기울어지도록 돌출 형성되어, 전면이 오 목하게 들어가고 후면이 돌출된 결속부(11)를 형성하되, 이 결속부(11

전자세금계산서솔루션 수정세금계산서 ( 수정신고 ) 발급가이드 페이지 1 / 19

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

1장. 유닉스 시스템 프로그래밍 개요

전자세금계산서교육자료_기업고객용

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

특허청구의 범위 청구항 1 회선 아이디 접속 시스템에 있어서, 온라인을 통해 실제 사용자 고유정보의 발급이 가능한 아이디 발급 사이트를 제공하기 위한 아이디 발급 수단; 오프라인을 통한 사용자의 회선 아이디 청약에 따라 가상의 사용자 고유정보 및 가인증 정보를 생성하고

Transcription:

SmartBill Open API Service REST API Reference - JAVA - [ Digital Tax Invoice ] 2016.09.02 ( 주 ) 비즈니스온커뮤니케이션연구소개발팀 1

개정이력 날짜 내용 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 미리보기양식조회에거래명세서추가 ( 과세, 면세, 위수탁과세, 위수탁면세 ) 2

목차 1. RequestModel 정의및설명... 4 1.1 RequestModel... 4 2. 프로세스별예시... 5 2.1 세금계산서발행... 5 2.2 세금계산서저장... 8 2.3 세금계산서역발행요청... 10 2.4 세금계산서역발행... 12 2.5 거래명세서발행... 14 2.6 거래명세서역발행요청... 17 2.7 거래명세서역발행... 19 2.8 세금계산서상태변경... 21 2.9 메일재전송... 23 2.10 국세청전송요청... 25 2.11 세금계산서상태조회... 27 2.12 부가정보조회... 29 2.13 메일수신결과조회... 32 2.14 미리보기양식조회... 34 2.15 보관함조회... 36 2.16 미처리함조회... 38 2.17 건별상세조회... 41 2.18 건별상세이력조회... 44 2.19 회원가입결과조회... 46 2.20 세금계산서발행결과조회... 48 2.21 인증토큰발급... 50 2.22 공인인증서등록정보조회... 52 2.23 원본 (XML) 조회... 54 3

1. RequestModel 정의및설명 1.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 도입모델설명서참고 ) 4

2. 프로세스별예시 2.1 세금계산서발행 매출세금계산서를발행한다. 요청시그널 / 서비스코드 / 시스템타입은고정값을사용한다. 2.1.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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모델일경우에만필요 ) 5

2.1.2 Request Sample String[] arrconvid = {"11111111192208758882201504011710003"; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "ARISSUE"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("receivecomregno", "2208758882"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("systemtype", "OAPI"); jsonobj.put("conversationid", arrconvid); jsonobj.put("smtpemail", ""); jsonobj.put("rvalue", "lsh2winygvm7lhfusp6ptczlbty="); // 서명모듈이용해서발행할경우에만필요 jsonobj.put("certpassword", "Ygvm7lhfuSp6p"); // 암호화된인증서의비밀번호 jsonobj.put("systemid", ""); jsonobj.put("platformcode", ""); // 허브업체의구분코드 jsonobj.put("signedxml", ""); // 서명정보가있는세금계산서 xml URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 6

2.1.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : ARISSUE 참조번호 ConversationId String(35) 요청한스마트빌식별자 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 2.1.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ System.out.println(jsonResponse.getString(" 정상적으로처리되었습니다 ")); else{ System.out.println(jsonResponse.getString("ResultMessage")); 7

2.2 세금계산서저장 발행예정인매출세금계산서를요청한다. 요청시그널 / 서비스코드 / 시스템타입은고정값을사용한다. 2.2.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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. 삼성전자 ) 2.2.2 Request Sample String[] arrconvid = {"11111111192208758882201504011710003"; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "DTI_SAVE"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("receivecomregno", "2208758882"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("systemtype", "OAPI"); jsonobj.put("conversationid", arrconvid); jsonobj.put("systemid", ""); jsonobj.put("unsignedxml", ""); // 서명정보가없는세금계산서 xml URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 8

2.2.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : DTI_SAVE 참조번호 ConversationId String(35) 요청한스마트빌식별자 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 2.2.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ System.out.println(jsonResponse.getString(" 정상적으로처리되었습니다 ")); else{ System.out.println(jsonResponse.getString("ResultMessage")); 9

2.3 세금계산서역발행요청 매입세금계산서를요청한다. 요청시그널 / 서비스코드 / 시스템타입은고정값을사용한다. 2.3.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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] 참조 ) 2.3.2 Request Sample String[] arrconvid = {"11111111192208758882201504011710003"; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "RARREQUEST"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("receivecomregno", "2208758882"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("systemtype", "OAPI"); jsonobj.put("conversationid", arrconvid); jsonobj.put("unsignedxml", ""); // 서명정보가없는세금계산서 xml URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 10

2.3.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : RARREQUEST 참조번호 ConversationId String(35) 요청한스마트빌식별자 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 2.3.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ System.out.println(jsonResponse.getString(" 정상적으로처리되었습니다 ")); else{ System.out.println(jsonResponse.getString("ResultMessage")); 11

2.4 세금계산서역발행 발행요청된매출세금계산서를발행한다. 요청시그널 / 서비스코드 / 시스템타입은고정값을사용한다. 2.4.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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] 참조 ) 2.4.2 Request Sample String[] arrconvid = {"11111111192208758882201504011710003"; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "RARISSUE"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("receivecomregno", "2208758882"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("systemtype", "OAPI"); jsonobj.put("conversationid", arrconvid); jsonobj.put("smtpemail", ""); jsonobj.put("rvalue", "lsh2winygvm7lhfusp6ptczlbty="); // 서명모듈이용해서발행할경우에만필요 jsonobj.put("certpassword", " sdfsd345fsdf55faadfs "); // 암호화된인증서의비밀번호 jsonobj.put("signedxml", ""); // 서명정보가있는세금계산서 xml URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 12

2.4.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : RARISSUE 참조번호 ConversationId String(35) 요청한스마트빌식별자 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 2.4.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ System.out.println(jsonResponse.getString(" 정상적으로처리되었습니다 ")); else{ System.out.println(jsonResponse.getString("ResultMessage")); 13

2.5 거래명세서발행 매출거래명세서 ( 세금계산서 + 거래명세서 ) 를발행한다. 요청시그널 / 서비스코드 / 시스템타입은고정값을사용한다. 2.5.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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모델일경우에만필요 ) 14

2.5.2 Request Sample String[] arrconvid = {"11111111192208758882201504011710003"; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "DETAILARISSUE"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("receivecomregno", "2208758882"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("systemtype", "OAPI"); jsonobj.put("conversationid", arrconvid); jsonobj.put("smtpemail", ""); jsonobj.put("rvalue", "lsh2winygvm7lhfusp6ptczlbty="); // 서명모듈이용해서발행할경우에만필요 jsonobj.put("certpassword", "sdfsd345fsdf55faadfs"); // 암호화된인증서의비밀번호 jsonobj.put("systemid", ""); jsonobj.put("platformcode", ""); // 허브업체의구분코드 jsonobj.put("signedxml", ""); // 서명정보가있는세금계산서 xml jsonobj.put("unsignedxml", ""); // 서명정보가없는거래명세서 xml URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 15

2.5.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : DETAILARISSUE 참조번호 ConversationId String(35) 요청한스마트빌식별자 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 2.5.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ System.out.println(jsonResponse.getString(" 정상적으로처리되었습니다 ")); else{ System.out.println(jsonResponse.getString("ResultMessage")); 16

2.6 거래명세서역발행요청 매입거래명세서 ( 세금계산서 + 거래명세서 ) 를요청한다. 요청시그널 / 서비스코드 / 시스템타입은고정값을사용한다. 2.6.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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 2.6.2 Request Sample String[] arrconvid = {"11111111192208758882201504011710003"; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "RDETAILREQUEST"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("receivecomregno", "2208758882"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("systemtype", "OAPI"); jsonobj.put("conversationid", arrconvid); jsonobj.put("signedxml", ""); // 서명정보가있는세금계산서 xml jsonobj.put("unsignedxml", ""); // 서명정보가없는거래명세서 xml URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 17

2.6.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : RDETAILREQUEST 참조번호 ConversationId String(35) 요청한스마트빌식별자 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 2.6.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ System.out.println(jsonResponse.getString(" 정상적으로처리되었습니다 ")); else{ System.out.println(jsonResponse.getString("ResultMessage")); 18

2.7 거래명세서역발행 발행요청된매출거래명세서 ( 세금계산서 + 거래명세서 ) 를발행한다. 요청시그널 / 서비스코드 / 시스템타입은고정값을사용한다. 2.7.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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] 참조 ) 2.7.2 Request Sample String[] arrconvid = {"11111111192208758882201504011710003"; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "RDETAILISSUE"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("receivecomregno", "2208758882"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("systemtype", "OAPI"); jsonobj.put("conversationid", arrconvid); jsonobj.put("smtpemail", ""); jsonobj.put("rvalue", "lsh2winygvm7lhfusp6ptczlbty="); // 서명모듈이용해서발행할경우에만필요 jsonobj.put("certpassword", "sdfsd345fsdf55faadfs"); // 암호화된인증서의비밀번호 jsonobj.put("signedxml", ""); // 서명정보가있는세금계산서 xml URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 19

2.7.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : RDETAILISSUE 참조번호 ConversationId String(35) 요청한스마트빌식별자 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 2.7.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ System.out.println(jsonResponse.getString(" 정상적으로처리되었습니다 ")); else{ System.out.println(jsonResponse.getString("ResultMessage")); 20

2.8 세금계산서상태변경 세금계산서의상태를변경한다. 요청시그널 / 서비스코드 / 시스템타입은고정값을사용한다. 2.8.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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 취소, 거부사유 2.8.2 Request Sample String[] arrconvid = {"11111111192208758882201504011710003"; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "CHGSTATUS"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("receivecomregno", "2208758882"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("systemtype", "OAPI"); jsonobj.put("conversationid", arrconvid); jsonobj.put("statussignal", "REJECT"); jsonobj.put("statusreason", " 공급가액상이. 확인요망 "); URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 21

2.8.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : CHGSTATUS 참조번호 ConversationId String(35) 요청한스마트빌식별자 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 2.8.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ System.out.println(jsonResponse.getString(" 정상적으로처리되었습니다 ")); else{ System.out.println(jsonResponse.getString("ResultMessage")); 2.8.5 상태시그널표 상태 Signal 취소 / 거부사유필요여부 변경전상태 수신승인 APPROVE 수신미승인 수신거부 REJECT 필요 수신미승인 역발행요청취소 CANCELRREQUEST 필요 역발행요청 역발행요청거부 RIREJECT 필요 역발행요청 발행취소 CANCELALL 필요 수신미승인 발행예정승인 WAPPROVE 발행예정요청 발행예정거부 WREJECT 필요 발행예정요청 발행예정취소 WCANCELALL 필요 발행예정요청 22

2.9 메일재전송 메일을재전송한다. 요청시그널 / 서비스코드 / 시스템타입은고정값을사용한다. 2.9.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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[] 재전송할이메일주소 ( 이메일주소가공백일경우, 최초요청시저장된수신메일로전송됨 ) 2.9.2 Request Sample String[] arrconvid = {"11111111192208758882201504011710003"; String[] arremail = {"test@test.com "; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "SENDMAIL"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("systemtype", "OAPI"); jsonobj.put("conversationid", arrconvid); jsonobj.put("statussignal", "ARISSUE"); jsonobj.put("email", arremail); URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 23

2.9.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : SENDMAIL 참조번호 ConversationId String(35) 요청한스마트빌식별자 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 2.9.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ System.out.println(jsonResponse.getString(" 정상적으로처리되었습니다 ")); else{ System.out.println(jsonResponse.getString("ResultMessage")); 2.9.5 상태시그널표 상태정발행역발행요청역발행 Signal ARISSUE RARREQUEST RARISSUE 24

2.10 국세청전송요청 세금계산서를즉시국세청에전송하도록요청한다. 요청시그널 / 서비스코드 / 시스템타입은고정값을사용한다. 2.10.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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자리, 다중건가능 ) 2.10.2 Request Sample String[] arrconvid = {"11111111192208758882201504011710003", "11111111192208758882201504011710013"; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "NTS_REQUEST"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("systemtype", "OAPI"); jsonobj.put("conversationid", arrconvid); URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 25

2.10.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : NTS_REQUEST 참조번호 ConversationId String(35) 요청한스마트빌식별자 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 2.10.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ System.out.println(jsonResponse.getString(" 정상적으로처리되었습니다 ")); else{ System.out.println(jsonResponse.getString("ResultMessage")); 26

2.11 세금계산서상태조회 세금계산서의상태조회를요청한다. 요청시그널 / 서비스코드는고정값을사용한다. 성능이슈와네트워크트래픽관리목적상, 동일한검색조건의함수호출을 1 회 / 1 분으로제한합니다. 2.11.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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) 선택입력 2.11.2 Request Sample JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "DTI_STATUS_LIST"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("searchfromdate", "2015-04-01"); jsonobj.put("searchtodate", "2015-04-07"); jsonobj.put("searchcomregno", "2208758882"); jsonobj.put("repotypecode", "AR"); URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 27

2.11.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : DTI_STATUS_LIST 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 처리결과 ResultDataSet DataSet 2.11.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ JSONObject jsonresultdataset = (JSONObject) jsonresponse.get("resultdataset"); JSONArray jsonarray = (JSONArray) jsonresultdataset.get("table"); int totalcount = jsonarray.length(); if (0 < totalcount) { for (int i = 0; i < totalcount; i++) { JSONObject jsontable = (JSONObject) jsonarray.get(i); System.out.println(jsonTable.get("ETC_PCS_NO").toString()); // 세금계산서참조번호 System.out.println(jsonTable.get("DTI_STATUS").toString()); // 세금계산서상태값 System.out.println(jsonTable.get("NTS_RESULT_CODE").toString()); // 세금계산서국세청전송결과 System.out.println(jsonTable.get("NTS_SEND_STATUS").toString()); // 세금계산서국세청전송상태 System.out.println(jsonTable.get("NTS_SEND_DATE").toString()); // 세금계산서국세청전송일자 System.out.println(jsonTable.get("SUP_EMAIL ").tostring()); // 담당자이메일 ( 매출조회일경우 ) System.out.println(jsonTable.get("BYR_EMAIL ").tostring()); // 담당자이메일 ( 매입조회일경우 ) else { System.out.println(" 데이터가존재하지않습니다."); else{ System.out.println(jsonResponse.getString("ResultMessage")); 28

2.12 부가정보조회 스마트빌을사용하기위한부가정보를조회한다. 요청시그널 / 서비스코드는고정값을사용한다. 2.12.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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 하단의조회타입코드참조 2.12.2 Request Sample String[] arremail = {"test@test.com "; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "ADD_INFO"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("searchcomregno", "2208758882"); jsonobj.put("email", arremail); jsonobj.put("searchtypecode", "NOTICE"); URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); 29

2.12.3 조회타입코드 조회타입코드 조회타입종류 사용예 필수입력파라미터 NOTICE 공지사항 스마트빌사이트에서공지된사항을알고자할때 BIZPLACE 종사업장코드 거래처의종사업장코드를알고자할때 검색사업자번호 (SearchComRegno) AUTH 담당자권한 거래처의담당자의스마트빌권한을알고자할때 검색사업자번호 (SearchComRegno) 담당자이메일 (Email) CLOSE 휴폐업여부 거래처의휴폐업여부를알고자할때 검색사업자번호 (SearchComRegno) COMPANY 회사정보조회 거래처의사업장정보를알고자할때 검색사업자번호 (SearchComRegno) 2.12.4 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : ADD_INFO 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 처리결과 ResultDataSet DataSet 2.12.5 Response Sample 30

BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ JSONObject jsonresultdataset = (JSONObject) jsonresponse.get("resultdataset"); JSONArray jsonarray = (JSONArray) jsonresultdataset.get("table"); String strsearchtypecode = jsonobj.get("searchtypecode").tostring(); int totalcount = jsonarray.length(); if (0 < totalcount) { if ("NOTICE" == strsearchtypecode) { // 공지사항 for (int i = 0; i < totalcount; i++) { JSONObject jsontable = (JSONObject) jsonarray.get(i); System.out.println(jsonTable.get("CDATE").toString()); // 공지사항등록일 System.out.println(jsonTable.get("NOTICE_CONTENTS").toString()); // 공지사항내용 System.out.println(jsonTable.get("NOTICE_NO").toString()); // 공지사항번호 System.out.println(jsonTable.get("NOTICE_TITLE").toString()); // 공지사항제목 else if ("BIZPLACE" == strsearchtypecode) { // 종사업장코드 for (int i = 0; i < totalcount; i++) { JSONObject jsontable = (JSONObject) jsonarray.get(i); System.out.println(jsonTable.get("BIZPLACE_ADDRESS").toString()); // 종사업장주소 System.out.println(jsonTable.get("BIZPLACE_CODE").toString()); // 종사업장코드 System.out.println(jsonTable.get("BIZPLACE_NAME").toString()); // 종사업장명 else if ("AUTH" == strsearchtypecode) { // 담당자권한 for (int i = 0; i < totalcount; i++) { JSONObject jsontable = (JSONObject) jsonarray.get(i); System.out.println(jsonTable.get("ISSUE_YN").toString()); // 세금계산서발행권한 System.out.println(jsonTable.get("RCV_YN").toString()); // 세금계산서수신권한 System.out.println(jsonTable.get("REQUEST_YN").toString()); // 세금계산서역발행요청권한 else if ("CLOSE" == strsearchtypecode) { // 휴폐업여부 for (int i = 0; i < totalcount; i++) { JSONObject jsontable = (JSONObject) jsonarray.get(i); System.out.println(jsonTable.get("TYPE_CODE").toString()); // 휴폐업코드 System.out.println(jsonTable.get("TYPE_DESC").toString()); // 휴폐업코드상세 else if ("COMPANY" == strsearchtypecode) { // 회사정보조회 for (int i = 0; i < totalcount; i++) { JSONObject jsontable = (JSONObject) jsonarray.get(i); System.out.println(jsonTable.get("COM_ADDRESS").toString()); // 주송 System.out.println(jsonTable.get("COM_NAME").toString()); // 회사명 System.out.println(jsonTable.get("COM_BIZSTATUS").toString()); // 업태 System.out.println(jsonTable.get("COM_BIZCLASS").toString()); // 업종 System.out.println(jsonTable.get("COM_PRESIDENT").toString()); // 대표자명 else { System.out.println(" 데이터가존재하지않습니다."); else{system.out.println(jsonresponse.getstring("resultmessage")); 31

2.13 메일수신결과조회 세금계산서와관련하여발송된메일의담당자수신여부를조회한다. 요청시그널 / 서비스코드는고정값을사용한다. 2.13.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 Signal String(30) 고정값 : MAIL_RESULT 요청시간 RequestTime String(14) YYYYMMDDHH24MISS 송신사업자번호 SendComRegno String (13) 송신사업자번호 인증토큰 AuthToken String(40) 서비스코드 ServiceCode String(10) 고정값 : DTI 참조번호 ConversationId String[] 스마트빌식별자 (35자리) 2.13.2 Request Sample String[] arrconvid = {"11111111192208758882201504011710003"; JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "MAIL_RESULT"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("conversationid", arrconvid); URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 32

2.13.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : MAIL_RESULT 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 처리결과 ResultDataSet DataSet 2.13.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ JSONObject jsonresultdataset = (JSONObject) jsonresponse.get("resultdataset"); JSONArray jsonarray = (JSONArray) jsonresultdataset.get("table"); int totalcount = jsonarray.length(); if (0 < totalcount) { for (int i = 0; i < totalcount; i++) { JSONObject jsontable = (JSONObject) jsonarray.get(i); System.out.println(jsonTable.get("OPEN_DATE").toString()); // 메일열람일자 System.out.println(jsonTable.get("OPEN_YN").toString()); // 메일열람여부 System.out.println(jsonTable.get("SUCCESS_YN").toString()); // 메일전송여부 else { System.out.println(" 데이터가존재하지않습니다."); else{ System.out.println(jsonResponse.getString("ResultMessage")); 33

2.14 미리보기양식조회 세금계산서를보이기위한 UI 템플릿을요청한다. 요청시그널 / 서비스코드는고정값을사용한다. 2.14.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 Signal String(30) 고정값 : PREVIEW_FORM 요청시간 RequestTime String(14) YYYYMMDDHH24MISS 송신사업자번호 SendComRegno String (13) 송신사업자번호 인증토큰 AuthToken String(40) 서비스코드 ServiceCode String(10) 고정값 : DTI 2.14.2 Request Sample JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "PREVIEW_FORM"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 34

2.14.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : PREVIEW_FORM 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 처리결과 ResultDataSet DataSet 2.14.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ JSONObject jsonresultdataset = (JSONObject) jsonresponse.get("resultdataset"); JSONArray jsonarray = (JSONArray) jsonresultdataset.get("table1"); int totalcount = jsonarray.length(); if (0 < totalcount) { JSONObject jsontable1 = (JSONObject) jsonarray.get(0); // 공급받는자용매입세금계산서 System.out.println(jsonTable1.get("CONTENT").toString()); JSONObject jsontable2 = (JSONObject) jsonarray.get(1); // 공급받는자용매입계산서 System.out.println(jsonTable2.get("CONTENT").toString()); JSONObject jsontable3 = (JSONObject) jsonarray.get(2); // 공급받는자용위수탁매입세금계산서 System.out.println(jsonTable3.get("CONTENT").toString()); JSONObject jsontable4 = (JSONObject) jsonarray.get(3); // 공급받는자용위수탁매입계산서 System.out.println(jsonTable4.get("CONTENT").toString()); JSONObject jsontable5 = (JSONObject) jsonarray.get(4); // 공급자용매출세금계산서 System.out.println(jsonTable5.get("CONTENT").toString()); JSONObject jsontable6 = (JSONObject) jsonarray.get(5); // 공급자용매출계산서 System.out.println(jsonTable6.get("CONTENT").toString()); JSONObject jsontable7 = (JSONObject) jsonarray.get(6); // 공급자용위수탁매출세금계산서 System.out.println(jsonTable7.get("CONTENT").toString()); JSONObject jsontable8 = (JSONObject) jsonarray.get(7); // 공급자용위수탁매출계산서 System.out.println(jsonTable8.get("CONTENT").toString()); JSONObject jsontable9 = (JSONObject) jsonarray.get(8); // 거래명세서 ( 과세 ) System.out.println(jsonTable8.get("CONTENT").toString()); JSONObject jsontable10 = (JSONObject) jsonarray.get(9); // 거래명세서 ( 면세 ) System.out.println(jsonTable8.get("CONTENT").toString()); JSONObject jsontable11 = (JSONObject) jsonarray.get(10); // 위수탁거래명세서 ( 과세 ) System.out.println(jsonTable8.get("CONTENT").toString()); JSONObject jsontable12 = (JSONObject) jsonarray.get(11); // 위수탁거래명세서 ( 면세 ) System.out.println(jsonTable8.get("CONTENT").toString()); else { System.out.println(" 데이터가존재하지않습니다."); else{ System.out.println(jsonResponse.getString("ResultMessage")); 35

2.15 보관함조회 보관함조회를요청한다. 요청시그널 / 서비스코드는고정값을사용한다. 성능이슈와네트워크트래픽관리목적상, 동일한검색조건의함수호출을 1 회 / 1 분으로제한합니다. 2.15.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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) 를선택해서입력 2.15.2 Request Sample JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "ARAP_REPO"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("searchfromdate", "2015-04-01"); jsonobj.put("searchtodate", "2015-04-07"); jsonobj.put("searchcomregno", "2208758882"); jsonobj.put("repotypecode", "AR"); URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 36

2.15.3 Response 메시지 ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : ARAP_REPO 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 처리결과 ResultDataSet DataSet 2.15.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ JSONObject jsonresultdataset = (JSONObject) jsonresponse.get("resultdataset"); JSONArray jsonarray = (JSONArray) jsonresultdataset.get("table"); String strrepotypecode = jsonobj.get("repotypecode").tostring(); int totalcount = jsonarray.length(); if (0 < totalcount) { if ("AR" == strrepotypecode) { // 매출보관함 for (int i = 0; i < totalcount; i++) { JSONObject jsontable = (JSONObject) jsonarray.get(i); System.out.println(jsonTable.get("BYR_COM_NAME").toString()); // 공급받는자회사명 System.out.println(jsonTable.get("BYR_COM_REGNO").toString()); // 공급받는자사업자번호 System.out.println(jsonTable.get("DIRECTION").toString()); // 세금계산서정 / 역구분 System.out.println(jsonTable.get("DTI_STATUS").toString()); // 세금계산서상태 System.out.println(jsonTable.get("DTI_TYPE").toString()); // 세금계산서종류 System.out.println(jsonTable.get("DTI_WDAY").toString()); // 세금계산서작성일자 System.out.println(jsonTable.get("ETC_PCS_NO").toString()); // 세금계산서참조번호 System.out.println(jsonTable.get("ISSUE_ID").toString()); // 세금계산서승인번호 System.out.println(jsonTable.get("NTS_SEND_STATUS").toString()); // 세금계산서국세청전송상태 System.out.println(jsonTable.get("SUP_AMT").toString()); // 세금계산서공급가액 System.out.println(jsonTable.get("SUP_EMAIL").toString()); // 담당자이메일 else if ("AP" == strrepotypecode) { // 매입보관함 for (int i = 0; i < totalcount; i++) { JSONObject jsontable = (JSONObject) jsonarray.get(i); System.out.println(jsonTable.get("DIRECTION").toString()); // 세금계산서정 / 역구분 System.out.println(jsonTable.get("DTI_STATUS").toString()); // 세금계산서상태 System.out.println(jsonTable.get("DTI_TYPE").toString()); // 세금계산서종류 System.out.println(jsonTable.get("DTI_WDAY").toString()); // 세금계산서작성일자 System.out.println(jsonTable.get("ETC_PCS_NO").toString()); // 세금계산서참조번호 System.out.println(jsonTable.get("ISSUE_ID").toString()); // 세금계산서승인번호 System.out.println(jsonTable.get("NTS_SEND_STATUS").toString()); // 세금계산서국세청전송상태 System.out.println(jsonTable.get("SUP_AMT").toString()); // 세금계산서공급가액 System.out.println(jsonTable.get("SUP_COM_NAME").toString()); // 공급자회사명 System.out.println(jsonTable.get("SUP_COM_REGNO").toString()); // 공급자사업자번호 System.out.println(jsonTable.get("BYR_EMAIL").toString()); // 담당자이메일 37

2.16 미처리함조회 미처리함내역을요청한다. 요청시그널 / 서비스코드는고정값을사용한다. 성능이슈와네트워크트래픽관리목적상, 동일한검색조건의함수호출을 1 회 / 1 분으로제한합니다. 2.16.1 Request 메시지ID MessageId String 트랜잭션식별자 요청시그널 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) 를선택해서입력 2.16.2 Request Sample JSONObject jsonobj = new JSONObject(); jsonobj.put("messageid", "3267cab1-3ea6-4aa6-b988-7d27d6d5ac89"); jsonobj.put("signal", "MY_LIST"); jsonobj.put("requesttime", "20150401105301"); jsonobj.put("sendcomregno", "1111111119"); jsonobj.put("authtoken", "dxvcce96zvlxvhbpeklgcithqlercmroyjheedfxyi8rvxjmvmzpqk1ltt0k"); jsonobj.put("servicecode", "DTI"); jsonobj.put("searchfromdate", "2015-04-01"); jsonobj.put("searchtodate", "2015-04-07"); jsonobj.put("listtypecode", "C"); URL url = new URL("http://demoapi.smartbill.co.kr/sb-api/request/"); HttpURLConnection conn = (HttpURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setusecaches(false); conn.setdoinput(true); conn.setdooutput(true); conn.setconnecttimeout(10000); conn.setrequestproperty("content-type", "application/json"); conn.setrequestproperty("accept", "application/json"); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); os.write(jsonobj.tostring().getbytes()); os.flush(); os.close(); 38

2.16.3 Response 메시지ID MessageId String 요청한트랜잭션식별자 요청시그널 Signal String(30) 고정값 : MY_LIST 응답시간 ResponseTime String(14) YYYYMMDDHH24MISS 처리코드 ResultCode String(5) 처리결과코드 처리메시지 ResultMessage String(2000) 처리결과상세내역 처리결과 ResultDataSet DataSet 2.16.4 Response Sample BufferedReader br; String response = ""; if(null!= conn){ br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while((line = br.readline())!= null){ response += line + "\n"; JSONObject jsonresponse = new JSONObject(response); if("30000".equalsignorecase(jsonresponse.getstring("resultcode"))){ JSONObject jsonresultdataset = (JSONObject) jsonresponse.get("resultdataset"); JSONArray jsonarray = (JSONArray) jsonresultdataset.get("table"); String strlisttypecode = jsonobj.get("listtypecode").tostring(); int totalcount = jsonarray.length(); if (0 < totalcount) { if ("C" == strlisttypecode) { // 회사미처리함 for (int i = 0; i < totalcount; i++) { JSONObject jsontable = (JSONObject) jsonarray.get(i); System.out.println(jsonTable.get("AMEND_CODE").toString()); // 수정코드 System.out.println(jsonTable.get("AMEND_DTI_YN").toString()); // 수정세금계산서여부 System.out.println(jsonTable.get("BRK_COM_NAME").toString()); // 수탁자회사명 System.out.println(jsonTable.get("BRK_COM_REGNO").toString()); // 수탁자사업자번호 System.out.println(jsonTable.get("BRK_DTI_YN").toString()); // 위수탁세금계산서여부 System.out.println(jsonTable.get("BYR_COM_NAME").toString()); // 공급받는자회사명 System.out.println(jsonTable.get("BYR_COM_REGNO").toString()); // 공급받는자사업자번호 System.out.println(jsonTable.get("BYR_TYPE").toString()); // 공급받는자타입 ( 개인 / 회사 ) System.out.println(jsonTable.get("CUSTOMER_COM_NAME").toString()); // 거래처회사명 System.out.println(jsonTable.get("CUSTOMER_COM_REGNO").toString());// 거래처사업자번호 System.out.println(jsonTable.get("DIRECTION").toString()); // 세금계산서정 / 역구분 System.out.println(jsonTable.get("DTI_STATUS").toString()); // 세금계산서상태 System.out.println(jsonTable.get("DTI_TYPE").toString()); // 세금계산서종류 System.out.println(jsonTable.get("DTI_WDAY").toString()); // 세금계산서작성일자 System.out.println(jsonTable.get("DTT_LINK_TYPE").toString()); // 거래명세서첨부여부 System.out.println(jsonTable.get("ETC_PCS_NO").toString()); // 세금계산서참조번호 System.out.println(jsonTable.get("IS_ARAP").toString()); // 매출매입구분 System.out.println(jsonTable.get("SEQ_NO").toString()); // System.out.println(jsonTable.get("SUP_AMT").toString()); // 세금계산서공급가액 System.out.println(jsonTable.get("SUP_COM_NAME").toString()); // 공급자회사명 System.out.println(jsonTable.get("SUP_COM_REGNO").toString()); // 공급자사업자번호 System.out.println(jsonTable.get("TAX_DEMAND").toString()); // 영수청구구분 System.out.println(jsonTable.get("EMAIL").toString()); // 담당자이메일 System.out.println(jsonTable.get("DATAXML").toString()); // 원본XML else if ("T" == strlisttypecode) { // 거래처미처리함 39