Blog

C# Hometax 세금계산서 발행 예제

2024-07-29

홈택스를 통해 세금계산서를 발행하려면 보통 API를 사용하여 처리합니다. 여기서는 C#을 이용하여 홈택스 Open API를 통해 세금계산서를 발행하는 예제를 제공하겠습니다. 이 예제는 세금계산서 발행의 기본적인 흐름을 설명하며, 실제 사용 시에는 홈택스 Open API 문서를 참고하여 상세한 내용과 최신 정보를 확인해야 합니다.

먼저, 홈택스 Open API를 사용하기 위해서는 홈택스 회원가입 및 API 사용 신청이 필요합니다. 신청 후 API 키와 인증서 등을 발급받아야 합니다.

1. 준비 작업

  • 홈택스 Open API 신청 및 승인

  • API 키 발급

  • SSL 인증서 설치 (홈택스 API는 SSL 인증서를 사용하여 통신합니다)

2. C# 프로젝트 설정

C# 프로젝트를 설정하고, 필요한 패키지 (예: System.Net.Http)를 설치합니다.

3. 세금계산서 발행 코드 작성

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class HometaxInvoiceExample
{
    private static readonly string ApiUrl = "https://api.hometax.go.kr/openapi/tx";

    // API 키 및 인증서 경로
    private static readonly string ApiKey = "YOUR_API_KEY";
    private static readonly string CertPath = "YOUR_CERTIFICATE_PATH";
    private static readonly string CertPassword = "YOUR_CERTIFICATE_PASSWORD";

    public static async Task Main(string[] args)
    {
        var invoiceData = new
        {
            issueDate = DateTime.Now.ToString("yyyyMMdd"),
            invoicerCorpNum = "1234567890",
            invoicerMgtKey = "12345",
            invoicerCorpName = "공급자 회사명",
            invoicerCEOName = "공급자 대표자명",
            invoicerAddr = "공급자 주소",
            invoicerBizClass = "공급자 업종",
            invoicerBizType = "공급자 업태",
            invoicerContactName = "공급자 담당자명",
            invoicerEmail = "공급자 이메일",
            invoicerTEL = "공급자 전화번호",
            invoicerHP = "공급자 휴대폰번호",
            invoiceeCorpNum = "0987654321",
            invoiceeType = "사업자 유형 (e.g., 일반, 간이, 비사업자 등)",
            invoiceeCorpName = "공급받는자 회사명",
            invoiceeCEOName = "공급받는자 대표자명",
            invoiceeAddr = "공급받는자 주소",
            invoiceeBizClass = "공급받는자 업종",
            invoiceeBizType = "공급받는자 업태",
            invoiceeContactName1 = "공급받는자 담당자명",
            invoiceeEmail1 = "공급받는자 이메일",
            supplyCostTotal = "100000",
            taxTotal = "10000",
            totalAmount = "110000",
            modifyCode = null,
            remark1 = "비고 사항",
            kwon = 1,
            ho = 1,
            businessLicenseYN = false,
            bankBookYN = false
        };

        var jsonData = JsonConvert.SerializeObject(invoiceData);

        var handler = new HttpClientHandler();
        handler.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate2(CertPath, CertPassword));

        using (var client = new HttpClient(handler))
        {
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Add("x-api-key", ApiKey);

            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
            var response = await client.PostAsync(ApiUrl, content);

            if (response.IsSuccessStatusCode)
            {
                Console.WriteLine("세금계산서 발행 성공!");
                var responseContent = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseContent);
            }
            else
            {
                Console.WriteLine("세금계산서 발행 실패.");
                var errorContent = await response.Content.ReadAsStringAsync();
                Console.WriteLine(errorContent);
            }
        }
    }
}

코드 설명

  1. API 설정: API URL, API 키, 인증서 경로 및 비밀번호를 설정합니다.

  2. 세금계산서 데이터 작성: 발행할 세금계산서의 데이터를 JSON 형식으로 준비합니다.

  3. HTTP 클라이언트 설정: SSL 인증서를 포함한 HttpClient를 설정합니다.

  4. API 호출: 준비된 데이터를 POST 요청으로 홈택스 API에 전송합니다.

  5. 응답 처리: API 응답을 받아 성공 여부를 확인하고 결과를 출력합니다.

이 예제는 기본적인 흐름을 설명하며, 실제 사용 시에는 예외 처리 및 추가 기능 (예: 데이터 검증, 로그 기록 등)을 추가하는 것이 좋습니다.

추가 정보

  • 홈택스 Open API 문서를 참고하여 최신 API 사양 및 사용 방법을 확인합니다.

  • 테스트 환경에서 충분히 검증 후 실제 환경에 적용합니다.

인클루드웹 솔루션이 궁금하신가요?

건설관리, 프로젝트관리, 영업관리 솔루션 도입을 무료로 상담해 드립니다.