Skip to content

codef-io/easycodefgo

Repository files navigation

Overview

CODEFλŠ” μ˜¨λΌμΈμ— 흩어진 데이터λ₯Ό ν΄λΌμ΄μ–ΈνŠΈ 엔진과 μ›Ή API 등을 ν™œμš©ν•΄ 쉽고 λΉ λ₯΄κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€. 아이디어가 κ΅¬ν˜„λ˜κΈ° μœ„ν•œ λ³΅μž‘ν•œ 과정을 κ°„κ²°ν•˜κ²Œ λ°”κΎΈκ³ , μˆ˜κ³ λ‘œμ›€μ„ μ€„μ΄κ³ μž λ…Έλ ₯ν•©λ‹ˆλ‹€.

ν™ˆνŽ˜μ΄μ§€
κ°œλ°œκ°€μ΄λ“œ
λΈ”λ‘œκ·Έ

easycodefgoλŠ” CODEF API 연동 κ°œλ°œμ„ λ•λŠ” 라이브러리 μœ ν‹Έμž…λ‹ˆλ‹€.
μ‚¬μš©μ„ μœ„ν•΄μ„œλŠ” ν™ˆνŽ˜μ΄μ§€ κ°€μž… ν›„ 데λͺ¨/정식 μ„œλΉ„μŠ€ 신청을 톡해 자격 증λͺ…을 μœ„ν•œ ν΄λΌμ΄μ–ΈνŠΈ 정보 등을 λ°œκΈ‰λ°›μ•„μ•Ό ν•˜λ©° μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λ“  API의 μ—”λ“œν¬μΈνŠΈ(은행, μΉ΄λ“œ, λ³΄ν—˜, 증ꢌ, 곡곡, 기타)와 μš”μ²­/응닡 ν•­λͺ©μ€ λͺ¨λ‘ κ°œλ°œκ°€μ΄λ“œλ₯Ό 톡해 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

Go version License: MIT

Get it!

$ go get github.com/codef-io/easycodefgo

Use it!

Quik Start

μ•„λž˜ κ°€μ΄λ“œλŠ” easycodefgo-examλ₯Ό 기반으둜 μž‘μ„±λ˜μ—ˆμœΌλ©° μƒŒλ“œλ°•μŠ€ μ„œλ²„λ₯Ό λŒ€μƒμœΌλ‘œ μ¦‰μ‹œ ν…ŒμŠ€νŠΈκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

μƒŒλ“œλ°•μŠ€μ—μ„œλŠ” ν•„μˆ˜ μš”μ²­ νŒŒλΌλ―Έν„° μ—¬λΆ€λ₯Ό μ²΄ν¬ν•œ λ’€ μš”μ²­ μƒν’ˆμ— λ”°λ₯Έ μ˜ˆμ •λ˜μ–΄ μžˆλŠ” κ³ μ • 응닡 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.
μ‚¬μš©μžλŠ” μƒŒλ“œλ°•μŠ€λ₯Ό 톡해 μ½”λ“œμ—ν”„ 연동에 λŒ€ν•œ 개발 μ—°μŠ΅κ³Ό μƒν’ˆ 별 응닡 자료 ꡬ쑰 등을 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1. 토큰 μš”μ²­

CODEF API μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ„œλΉ„μŠ€ μ΄μš©μ— λŒ€ν•œ 자격 증λͺ…을 톡해 토큰을 λ°œκΈ‰λ°›μ•„μ•Ό ν•©λ‹ˆλ‹€. 토큰은 λͺ¨λ“  μš”μ²­μ‹œ 헀더 값에 ν¬ν•¨λ˜μ–΄μ•Ό ν•˜λ©° ν•œλ²ˆ λ°œκΈ‰ 받은 토큰은 일주일간 μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

easycodefgo λΌμ΄λΈŒλŸ¬λ¦¬λŠ” ν† ν°μ˜ λ°œκΈ‰κ³Ό μž¬μ‚¬μš©μ„ μžλ™μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
μž¬μ‚¬μš© 쀑인 ν† ν°μ˜ μœ νš¨κΈ°κ°„μ΄ λ§Œλ£Œλ˜λŠ” 경우 μž¬λ°œκΈ‰ λ˜ν•œ μžλ™μœΌλ‘œ μ²˜λ¦¬λ©λ‹ˆλ‹€.

μ‚¬μš©μžλŠ” λ‹¨μˆœνžˆ 자격증λͺ…을 μœ„ν•œ ν΄λΌμ΄μ–ΈνŠΈ 정보 μ„€μ • λ§Œμ„ μ§„ν–‰ν•˜λ©΄ λ©λ‹ˆλ‹€.
μ•„λž˜μ˜ μ˜ˆμ œλŠ” μ‚¬μš©μžκ°€ 직접 토큰을 λ°œκΈ‰λ°›λŠ” 과정을 μ„€λͺ…ν•©λ‹ˆλ‹€. 계정 κ΄€λ¦¬λ‚˜ μƒν’ˆ μš”μ²­μ‹œ 토큰은 라이브러리 λ‚΄μ—μ„œ μžλ™ λ°œκΈ‰λ°›μ•„ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— νŠΉλ³„ν•œ κ²½μš°κ°€ μ•„λ‹ˆλΌλ©΄ μ‚¬μš©μžκ°€ 직접 토큰을 μš”μ²­ν•  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€.

예제 링크 https://github.com/codef-io/easycodefgo-exam/blob/master/00_AccessToken/main.go

package main

import (
	"fmt"
	"log"

	ecg "github.com/codef-io/easycodefgo"
)

const (
	demoClientID     = ""
	demoClientSecret = ""

	clientID     = ""
	clientSecret = ""

	publicKey = ""
)

func main() {
	// μ½”λ“œμ—ν”„ μΈμŠ€ν„΄μŠ€ 생성
	codef := &ecg.Codef{
		PublicKey: publicKey,
	}

	// 데λͺ¨ ν΄λΌμ΄μ–ΈνŠΈ 정보 μ„€μ •
	// - 데λͺ¨ μ„œλΉ„μŠ€ κ°€μž… ν›„ μ½”λ“œμ—ν”„ ν™ˆνŽ˜μ΄μ§€μ— 확인 κ°€λŠ₯(https://codef.io/#/account/keys)
	// - 데λͺ¨ μ„œλΉ„μŠ€λ‘œ μƒν’ˆ 쑰회 μš”μ²­μ‹œ ν•„μˆ˜ μž…λ ₯ ν•­λͺ©
	codef.SetClientInfoForDemo(demoClientID, demoClientSecret)

	// 정식 ν΄λΌμ΄μ–ΈνŠΈ 정보 μ„€μ •
	// - 정식 μ„œλΉ„μŠ€ κ°€μž… ν›„ μ½”λ“œμ—ν”„ ν™ˆνŽ˜μ΄μ§€μ— 확인 κ°€λŠ₯(https://codef.io/#/account/keys)
	// - 정식 μ„œλΉ„μŠ€λ‘œ μƒν’ˆ 쑰회 μš”μ²­μ‹œ ν•„μˆ˜ μž…λ ₯ ν•­λͺ©
	codef.SetClientInfo(clientID, clientSecret)

	// 토큰 λ°œκΈ‰ μš”μ²­
	result, err := codef.RequestToken(ecg.TypeSandbox)
	if err != nil {
		log.Fatalln(err)
	}

	// κ²°κ³Ό 좜λ ₯
	fmt.Println(result)
}

2. 계정 관리

CODEF API μ„œλΉ„μŠ€μ˜ μ—¬λŸ¬ μƒν’ˆλ“€ 쀑 μš”μ²­ νŒŒλΌλ―Έν„°μ— Connected IDκ°€ ν•„μš”ν•œ κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. 인증이 ν•„μš”ν•œ CODEF APIλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ—”λ“œ μœ μ €(End User) 계정 정보(λŒ€μƒκΈ°κ΄€μ˜ μΈμ¦μˆ˜λ‹¨)등둝이 ν•„μš”ν•˜λ©°, 이λ₯Ό 톡해 μ‚¬μš©μžλ§ˆλ‹€ λ‹€λ₯Έ Connected IDλ₯Ό λ°œκΈ‰λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€. (Connected IDλŠ” κ°œλ°œκ°€μ΄λ“œ μΈμ¦λ°©μ‹μ—μ„œ μžμ„Έν•œ λ‚΄μš©μ„ ν™•μΈν•˜μ„Έμš”.)

Connected ID λ°œκΈ‰ μ΄ν›„μ—λŠ” 직접적인 계정 정보 전솑 없이 λŒ€μƒκΈ°κ΄€μ˜ 데이터λ₯Ό μš”μ²­ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Connected IDλŠ” 계정 등둝 μš”μ²­ μ‹œ λ°œκΈ‰λ˜λ©° 이후 계정 μΆ”κ°€/계정 μˆ˜μ •/계정 μ‚­μ œ μš”μ²­μœΌλ‘œ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€. λ™μΌν•œ κΈ°κ΄€μ˜ λ™μΌν•œ 계정 μ •λ³΄λŠ” μ€‘λ³΅ν•΄μ„œ 등둝할 수 μ—†μœΌλ©° 개인 고객/κΈ°μ—… 고객 각각 1κ°œμ”© 등둝이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

λͺ¨λ“  μƒν’ˆμ˜ νŒŒλΌλ―Έν„°μ— Connected IDκ°€ ν•„μš”ν•œ 것은 μ•„λ‹™λ‹ˆλ‹€. μƒν’ˆλ³„ νŒŒλΌλ―Έν„°λŠ” κ°œλ°œκ°€μ΄λ“œ μƒν’ˆμ•ˆλ‚΄μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

Connected IDλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” APIλ₯Ό μ‚¬μš©ν•˜λŠ” 경우 계정 κ΄€λ¦¬λŠ” μƒλž΅ν•˜μ„Έμš”.

예제 링크 https://github.com/codef-io/easycodefgo-exam/blob/master/01_CreateAccount/main.go

...

func main() {
  
    ...

	// μš”μ²­ νŒŒλΌλ―Έν„° μ„€μ •
	// - 계정관리 νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •(https://developer.codef.io/cert/account/cid-overview)
	accountList := []map[string]interface{}{}
	account := map[string]interface{}{
		"countryCode":  "KR",
		"businessType": "BK",
		"clientType":   "P",
		"organization": "0004",
		"loginType":    "1",
		"id":           "user_id",
	}

	pwd, err := ecg.EncryptRSA("password", codef.PublicKey)
	if err != nil {
		log.Fatalln(err)
	}
	account["password"] = pwd

	accountList = append(accountList, account)
	parameter := map[string]interface{}{
		"accountList": accountList,
	}

	// μš”μ²­
	result, err := codef.CreateAccount(ecg.TypeSandbox, parameter)
	if err != nil {
		log.Fatalln(err)
	}

	// κ²°κ³Ό 확인
	fmt.Println(result)
}

계정 등둝 μš”μ²­μ€ λ“±λ‘ν•˜λ €λŠ” μ—¬λŸ¬ κΈ°κ΄€μ˜ 계정을 λͺ©λ‘ νŒŒλΌλ―Έν„°λ‘œ μ„€μ •ν•΄ ν•œλ²ˆμ— μš”μ²­μ΄ κ°€λŠ₯ν•˜λ©° 응닡 κ²°κ³ΌλŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. μ‚¬μš©μžλŠ” λ°œκΈ‰λ°›μ€ Connected IDλ₯Ό 계정 등둝에 μ„±κ³΅ν•œ κΈ°κ΄€(successList) μƒν’ˆ 쑰회 μš”μ²­μ‹œ μ‚¬μš©μ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예) ꡭ민은행(0004)으둜 λ“±λ‘ν•œ Connected IDλ₯Ό 산업은행(0002) μƒν’ˆ μ‘°νšŒμ‹œ μ‚¬μš©ν•  수 μ—†μŒ

{
  "result" : {
    "code" : "CF-00000",
    "extraMessage" : "",
    "message" : "정상",
    "transactionId":"786e01e459af491888e1f782d1902e40"
  },
  "data" : {
    "successList" : [ {
      "code" : "CF-00000",    
      "message" : "정상",
      "extraMessage" : "",            
      "countryCode" : "KR",      
      "businessType" : "BK",      
      "clientType" : "P",
      "loginType" : "1",
      "organization" : "0004"
    }],
    "errorList" : [ ],
    "connectedId" : "byi1wYwD40k8hEIiXl6bRF"
  }
}

계정 등둝 μ΄μ™Έμ˜ 계정 μΆ”κ°€, μˆ˜μ •, μ‚­μ œ λ“±μ˜ 계정 관리 κΈ°λŠ₯κ³Ό 계정 λͺ©λ‘ 쑰회, Connected ID λͺ©λ‘ 쑰회 λ“± 쑰회 κΈ°λŠ₯은 easycodefgo-examμ—μ„œ 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μΈμ¦μ„œλ‘œ 계정을 λ“±λ‘ν•˜λŠ” κ²½μš°μ—λŠ” cert파일, key파일 μ„ΈνŠΈ ν˜Ήμ€ pfx파일 2가지 λͺ¨λ‘λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. κ°œλ°œκ°€μ΄λ“œ κ³„μ •λ“±λ‘μ—μ„œ μžμ„Έν•œ λ‚΄μš©μ„ ν™•μΈν•˜μ„Έμš”. μΈμ¦μ„œ 내보내기/κ°€μ Έμ˜€κΈ° λ“± μΈμ¦μ„œ 릴레이 μ„œλ²„ κΈ°λŠ₯이 ν•„μš”ν•œ 경우 [email protected]둜 λ¬Έμ˜ν•΄μ£Όμ‹œκΈ° λ°”λžλ‹ˆλ‹€. μ½”λ“œμ—ν”„μ—μ„œλŠ” 계정 관리λ₯Ό μœ„ν•œ μΈμ¦μ„œ νŒμ—…κ³Ό 전솑 μ„œλ²„λ₯Ό μ„œλΉ„μŠ€ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ½”λ“œμ—ν”„ μΈμ¦μ„œ 릴레이 μ„œλΉ„μŠ€

3. μƒν’ˆ μš”μ²­

μ—”λ“œ μœ μ €μ˜ 계정 등둝 과정을 거쳐 μƒν’ˆ μ‚¬μš© μ€€λΉ„κ°€ 끝났닀면 이제 λ°œκΈ‰λ°›μ€ Connected ID와 ν•„μš”ν•œ νŒŒλΌλ―Έν„° 정보 μ„€μ • 등을 톡해 μ½”λ“œμ—ν”„ API μƒν’ˆ μš”μ²­μ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Connected IDλ₯Ό μ‚¬μš©ν•˜λŠ” μƒν’ˆκ³Ό Connected IDλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μƒν’ˆ μš”μ²­ 예제λ₯Ό μ•„λž˜ μ½”λ“œλ₯Ό 톡해 ν™•μΈν•˜κ² μŠ΅λ‹ˆλ‹€.

ν•œλ²ˆ 더 κ°•μ‘°ν•˜μžλ©΄ λͺ¨λ“  μƒν’ˆμ˜ νŒŒλΌλ―Έν„°μ— Connected IDκ°€ ν•„μš”ν•œ 것은 μ•„λ‹™λ‹ˆλ‹€.
μƒν’ˆλ³„ νŒŒλΌλ―Έν„°λŠ” κ°œλ°œκ°€μ΄λ“œ μƒν’ˆμ•ˆλ‚΄μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

- 일반 μƒν’ˆ

예제 μ½”λ“œ https://github.com/codef-io/easycodefgo-exam/tree/master/07_Product

// 개인 λ³΄μœ κ³„μ’Œ 쑰회(Connected ID μ‚¬μš©)

package main

import (
	"fmt"
	"log"

	ecg "github.com/codef-io/easycodefgo"
)

const (
	demoClientID     = ""
	demoClientSecret = ""

	clientID     = ""
	clientSecret = ""

	publicKey = ""
)

func main() {
	// μ½”λ“œμ—ν”„ μΈμŠ€ν„΄μŠ€ 생성
	codef := &ecg.Codef{
		PublicKey: publicKey,
	}

	// 데λͺ¨ ν΄λΌμ΄μ–ΈνŠΈ 정보 μ„€μ •
	// - 데λͺ¨ μ„œλΉ„μŠ€ κ°€μž… ν›„ μ½”λ“œμ—ν”„ ν™ˆνŽ˜μ΄μ§€μ— 확인 κ°€λŠ₯(https://codef.io/#/account/keys)
	// - 데λͺ¨ μ„œλΉ„μŠ€λ‘œ μƒν’ˆ 쑰회 μš”μ²­μ‹œ ν•„μˆ˜ μž…λ ₯ ν•­λͺ©
	codef.SetClientInfoForDemo(demoClientID, demoClientSecret)

	// 정식 ν΄λΌμ΄μ–ΈνŠΈ 정보 μ„€μ •
	// - 정식 μ„œλΉ„μŠ€ κ°€μž… ν›„ μ½”λ“œμ—ν”„ ν™ˆνŽ˜μ΄μ§€μ— 확인 κ°€λŠ₯(https://codef.io/#/account/keys)
	// - 정식 μ„œλΉ„μŠ€λ‘œ μƒν’ˆ 쑰회 μš”μ²­μ‹œ ν•„μˆ˜ μž…λ ₯ ν•­λͺ©
	codef.SetClientInfo(clientID, clientSecret)

	// μš”μ²­ νŒŒλΌλ―Έν„° μ„€μ •
	// - 각 μƒν’ˆλ³„ νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •(https://developer.codef.io/products)
	parameter := map[string]interface{}{
		"connectedId":  "8PQI4dQ......hKLhTnZ",
		"organization": "0004",
	}

	// μ½”λ“œμ—ν”„ 정보 쑰회 μš”μ²­
	// - μ„œλΉ„μŠ€νƒ€μž…(0:정식, 1:데λͺ¨, 2:μƒŒλ“œλ°•μŠ€)
	// 개인 λ³΄μœ κ³„μ’Œ 쑰회 (https://developer.codef.io/products/bank/common/p/account)
	productURL := "/v1/kr/bank/p/account/account-list"
	result, err := codef.RequestProduct(productURL, ecg.TypeSandbox, parameter)
	if err != nil {
		log.Fatalln(err)
	}

	// κ²°κ³Ό 좜λ ₯
	fmt.Println(result)
}

μ‰¬μš΄ μ½”λ“œμ—ν”„ 객체 생성 ν›„ ν΄λΌμ΄μ–ΈνŠΈ 정보 등을 μ„€μ •ν•œ λ‹€μŒ 개인 λ³΄μœ κ³„μ’Œ 쑰회λ₯Ό μœ„ν•œ νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •ν•΄μ„œ μƒν’ˆ μš”μ²­μ„ ν•©λ‹ˆλ‹€. 라이브러리 μ‚¬μš©μžλŠ” 토큰 λ°œκΈ‰μ΄λ‚˜ 토큰 관리, μš”μ²­ νŒŒλΌλ―Έν„°μ˜ 인코딩, 응닡 λ°”λ””μ˜ λ””μ½”λ”© λ“± APIμ΄μš©μ„ μœ„ν•œ λΆ€μˆ˜μ μΈ μž‘μ—…μ„ 직접 ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. μƒν’ˆ μš”μ²­μ— ν•„μš”ν•œ νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •ν•˜κ³  RequestProduct λ©”μ„œλ“œ 호좜만으둜 Connected ID둜 λ“±λ‘λœ κ³„μ •μ˜ κΈ°κ΄€(0004 ꡭ민은행)의 λͺ©λ‘μ„ μ•„λž˜μ™€ 같이 μ‘λ‹΅λ°›κ²Œ λ©λ‹ˆλ‹€.

{
  "result":{
    "code":"CF-00000",
    "extraMessage":"",
    "message":"성곡",
    "transactionId":"5069429e367745baba92f5c12c4343de"
  },
  "data":{
    "resDepositTrust":[
      {
        "resAccount":"06170204000000",
        "resAccountBalance":"874890",
        "resAccountCurrency":"KRW",
        "resAccountDeposit":"11",
        "resAccountDisplay":"061702-04-000000",
        "resAccountEndDate":"",
        "resAccountLifetime":"",
        "resAccountName":"μ €μΆ•μ˜ˆκΈˆ",
        "resAccountNickName":"",
        "resAccountStartDate":"20120907",
        "resLastTranDate":""
      },
      {
        "resAccount":"23850204000000",
        "resAccountBalance":"0",
        "resAccountCurrency":"KRW",
        "resAccountDeposit":"11",
        "resAccountDisplay":"238502-04-000000",
        "resAccountEndDate":"",
        "resAccountLifetime":"",
        "resAccountName":"직μž₯μΈμš°λŒ€ν†΅μž₯-μ €μΆ•μ˜ˆκΈˆ",
        "resAccountNickName":"급여톡μž₯",
        "resAccountStartDate":"20060413",
        "resLastTranDate":""
      },
      {
        "resAccount":"54780300000000",
        "resAccountBalance":"13110000",
        "resAccountCurrency":"KRW",
        "resAccountDeposit":"12",
        "resAccountDisplay":"547803-00-000000",
        "resAccountEndDate":"",
        "resAccountLifetime":"",
        "resAccountName":"OOκ΅­λ―Όμž¬ν˜•μ €μΆ•",
        "resAccountNickName":"",
        "resAccountStartDate":"20151228",
        "resLastTranDate":""
      }
    ],
    "resForeignCurrency":[],
    "resFund":[],
    "resInsurance":[],
    "resLoan":[
      {
        "resAccount":"75260904000000",
        "resAccountBalance":"120000000",
        "resAccountCurrency":"KRW",
        "resAccountDeposit":"40",
        "resAccountDisplay":"752609-04-000000",
        "resAccountEndDate":"20210628",
        "resAccountLoanExecNo":"",
        "resAccountName":"μ„œμšΈνŠΉλ³„μ‹œμ‹ ν˜ΌλΆ€λΆ€μž„μ°¨λ³΄μ¦κΈˆλŒ€μΆœ",
        "resAccountNickName":"",
        "resAccountStartDate":"20190628"
      }
    ]
  }
}

μ΄λ²ˆμ—λŠ” μ‚¬μ—…μž νœ΄νμ—… μƒνƒœ 정보λ₯Ό μ‘°νšŒν•˜λŠ” μƒν’ˆμ˜ μ˜ˆμ œμž…λ‹ˆλ‹€.

// μ‚¬μ—…μžλ“±λ‘μƒνƒœ(νœ΄νμ—…μ‘°νšŒ)(Connected ID λ―Έμ‚¬μš©)

package main

import (
  "fmt"
  "log"

	ecg "github.com/codef-io/easycodefgo"
)

const (
	demoClientID     = ""
	demoClientSecret = ""

	clientID     = ""
	clientSecret = ""

	publicKey = ""
)

func main() {
	// μ½”λ“œμ—ν”„ μΈμŠ€ν„΄μŠ€ 생성
	codef := &ecg.Codef{
		PublicKey: publicKey,
	}

	// 데λͺ¨ ν΄λΌμ΄μ–ΈνŠΈ 정보 μ„€μ •
	// - 데λͺ¨ μ„œλΉ„μŠ€ κ°€μž… ν›„ μ½”λ“œμ—ν”„ ν™ˆνŽ˜μ΄μ§€μ— 확인 κ°€λŠ₯(https://codef.io/#/account/keys)
	// - 데λͺ¨ μ„œλΉ„μŠ€λ‘œ μƒν’ˆ 쑰회 μš”μ²­μ‹œ ν•„μˆ˜ μž…λ ₯ ν•­λͺ©
	codef.SetClientInfoForDemo(demoClientID, demoClientSecret)

	// 정식 ν΄λΌμ΄μ–ΈνŠΈ 정보 μ„€μ •
	// - 정식 μ„œλΉ„μŠ€ κ°€μž… ν›„ μ½”λ“œμ—ν”„ ν™ˆνŽ˜μ΄μ§€μ— 확인 κ°€λŠ₯(https://codef.io/#/account/keys)
	// - 정식 μ„œλΉ„μŠ€λ‘œ μƒν’ˆ 쑰회 μš”μ²­μ‹œ ν•„μˆ˜ μž…λ ₯ ν•­λͺ©
	codef.SetClientInfo(clientID, clientSecret)

	// μš”μ²­ νŒŒλΌλ―Έν„° μ„€μ •
	// - 각 μƒν’ˆλ³„ νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •(https://developer.codef.io/products)
	parameter := map[string]interface{}{
		"organization": "0004",
	}
	reqIdentityList := []map[string]string{
		map[string]string{
			"reqIdentity": "3333344444",
		},
		map[string]string{
			"reqIdentity": "1234567890",
		},
	}
	parameter["reqIdentityList"] = reqIdentityList

	// μ½”λ“œμ—ν”„ 정보 쑰회 μš”μ²­
	// - μ„œλΉ„μŠ€νƒ€μž…(0:정식, 1:데λͺ¨, 2:μƒŒλ“œλ°•μŠ€)
	productURL := "/v1/kr/public/nt/business/status"
	result, err := codef.RequestProduct(productURL, ecg.TypeSandbox, parameter)
	if err != nil {
		log.Fatalln(err)
	}

	// κ²°κ³Ό 좜λ ₯
	fmt.Println(result)
}

2개의 상폼 μš”μ²­ μ˜ˆμ‹œλ₯Ό 비ꡐ해 μ½”λ“œμ˜ λ‚΄μš©μ„ μ‚΄νŽ΄λ³΄λ©΄ 개인 λ³΄μœ μΉ΄λ“œ μ‘°νšŒμ™€ μ‚¬μ—…μžλ“±λ‘μƒνƒœ 쑰회의 μ°¨μ΄λŠ” μš”μ²­μ£Όμ†Œ(URL)와 νŒŒλΌλ―Έν„° μ„€μ •μ—λ§Œ μžˆλŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
μ‚¬μš©μžλŠ” 라이브러리 μ‚¬μš©μ„ 톡해 μΌκ΄€λœ ν˜•νƒœμ˜ μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ—¬ κ°œλ°œν•  수 있고 λ‹€λ₯Έ μ‚¬λžŒμ΄ μž‘μ„±ν•œ μƒν’ˆ μš”μ²­ μ½”λ“œλ₯Ό μ‰½κ²Œ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€.

{
  "result" : {
    "code" : "CF-00000",
    "extraMessage" : "",
    "message" : "성곡",
    "transactionId" : "786e01e459af491888e1f782d1902e40"
  },
  "data" : [ {
    "resBusinessStatus" : "μ‚¬μ—…μ„ν•˜μ§€μ•Šκ³ μžˆμŠ΅λ‹ˆλ‹€.",
    "resCompanyIdentityNo" : "3333344444",
    "code" : "CF-00000",
    "resTaxationTypeCode" : "98",
    "extraMessage" : null,
    "resClosingDate" : "",
    "resTransferTaxTypeDate" : "",
    "message" : "성곡"
  }, {
    "resBusinessStatus" : "λΆ€κ°€κ°€μΉ˜μ„ΈμΌλ°˜κ³Όμ„Έμžμž…λ‹ˆλ‹€.\n*κ³Όμ„Έμœ ν˜•μ „ν™˜λœλ‚ μ§œλŠ”2011λ…„07μ›”01μΌμž…λ‹ˆλ‹€.",
    "resCompanyIdentityNo" : "1234567890",
    "code" : "CF-00000",
    "resTaxationTypeCode" : "1",
    "extraMessage" : null,
    "resClosingDate" : "",
    "resTransferTaxTypeDate" : "20110701",
    "message" : "성곡"
  } ]
}

- μΆ”κ°€ 인증 μƒν’ˆ

μΆ”κ°€ 인증 μƒν’ˆμ΄λž€ API호좜 ν•œλ²ˆμœΌλ‘œ μš”μ²­ κ²°κ³Όλ₯Ό 받을 수 μžˆλŠ” 일반 μƒν’ˆκ³ΌλŠ” 달리 첫 μš”μ²­ 이후 λŒ€μƒκΈ°κ΄€μ΄ μš”κ΅¬ν•˜λŠ” μΆ”κ°€ 인증(이메일, SMS, λ³΄μ•ˆλ¬Έμž μž…λ ₯ λ“±)을 μˆ˜ν–‰ν•΄μ•Ό μš”μ²­ κ²°κ³Όλ₯Ό 받을 수 μžˆλŠ” μƒν’ˆμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 λ‘œκ·ΈμΈμ„ ν•˜λŠ” 경우 아이디와 λΉ„λ°€λ²ˆν˜Έ 외에 λŒ€μƒκΈ°κ΄€μ—μ„œ μΆ”κ°€μ μœΌλ‘œ μš”κ΅¬ν•˜λŠ” λ³΄μ•ˆλ¬Έμž μž…λ ₯이 μ§„ν–‰λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. κ³ μ • 값인 아이디, λΉ„λ°€λ²ˆν˜Έμ™€ λ‹€λ₯΄κ²Œ λ³΄μ•ˆλ¬Έμž μ΄λ―Έμ§€λŠ” λžœλ€ν•˜κ²Œ λ°˜ν™˜λ˜κΈ° λ•Œλ¬Έμ— μ—”λ“œ μœ μ €μ˜ 좔가적인 정보 μž…λ ₯이 ν•„μš”ν•©λ‹ˆλ‹€.

λ³΄μ•ˆλ¬Έμžμž…λ ₯ μ˜ˆμ‹œ

λŒ€μƒκΈ°κ΄€μ΄ μš”κ΅¬ν•˜λŠ” 인증방식에 따라 Nμ°¨ 좔가인증이 μš”κ΅¬ 될 수 있으며, μΆ”κ°€ 인증 정보 μž…λ ₯이 μ§„ν–‰λ˜μ–΄μ•Ό μ •μƒμ μœΌλ‘œ CODEF API μš”μ²­λ„ μ™„λ£Œλ©λ‹ˆλ‹€. 1μ°¨ μž…λ ₯λΆ€[κΈ°λ³ΈνŒŒλΌλ―Έν„°] -> nμ°¨ μΆ”κ°€ 인증[κΈ°λ³Έ νŒŒλΌλ―Έν„° + μΆ”κ°€ 인증 νŒŒλΌλ―Έν„°] μš”μ²­μœΌλ‘œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€. μΆ”κ°€ 인증은 μ‚¬μš©μž 인증을 μœ„ν•œ 정보가 λŒ€λΆ€λΆ„μ΄λ©° μΆ”κ°€ 인증 μš”μ²­μ‹œμ—λ„ Endpoint URL은 λ™μΌν•©λ‹ˆλ‹€.

μƒŒλ“œλ°•μŠ€ μ„œλ²„λ₯Ό 톡해 좔가인증 μƒν’ˆμ— λŒ€ν•œ ν…ŒμŠ€νŠΈλ₯Ό 진행 ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.

μΆ”κ°€ 인증에 ν•„μš”ν•œ νŒŒλΌλ―Έν„° μ„€λͺ…은 개발 κ°€μ΄λ“œμ˜ 각 μƒν’ˆ νŽ˜μ΄μ§€μ—μ„œ 확인할 수 있으며 μžμ„Έν•œ λ‚΄μš©μ€ κ°œλ°œκ°€μ΄λ“œ 좔가인증을 톡해 ν™•μΈν•˜μ„Έμš”.

μš”μ²­ νƒ€μž…

μ½”λ“œμ—ν”„ μš”μ²­μ‹œ μƒŒλ“œλ°•μŠ€ μ™Έ λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ μš”μ²­μ„ 보내싀 경우 μ•„λž˜ νƒ€μž…μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

type ServiceType int // μ½”λ“œμ—ν”„ 이용 μ„œλΉ„μŠ€ νƒ€μž… 정보

const (
	TypeProduct ServiceType = iota // 정식버전
	TypeDemo                       // 데λͺ¨ 버전
	TypeSandbox                    // μƒŒλ“œλ°•μŠ€
)

Ask us

easycodefgo 라이브러리 μ‚¬μš©μ— λŒ€ν•œ λ¬Έμ˜μ‚¬ν•­κ³Ό 개발 κ³Όμ •μ—μ„œμ˜ 였λ₯˜ 등에 λŒ€ν•œ 문의λ₯Ό ν™ˆνŽ˜μ΄μ§€ λ¬Έμ˜κ²Œμ‹œνŒμ— μ˜¬λ €μ£Όμ‹œλ©΄ μš΄μ˜νŒ€μ΄ 닡변을 λ“œλ¦½λ‹ˆλ‹€. λ¬Έμ˜κ²Œμ‹œνŒμ˜ μž‘μ„± 양식에 맞좰 문의 글을 λ‚¨κ²¨μ£Όμ„Έμš”. κ°€λŠ₯ν•œ λΉ λ₯΄κ²Œ 응닡을 λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.