쪽지발송 성공
Click here
재능넷 이용방법
재능넷 이용방법 동영상편
가입인사 이벤트
판매 수수료 안내
안전거래 TIP
재능인 인증서 발급안내

🌲 지식인의 숲 🌲

🌳 디자인
🌳 음악/영상
🌳 문서작성
🌳 번역/외국어
🌳 프로그램개발
🌳 마케팅/비즈니스
🌳 생활서비스
🌳 철학
🌳 과학
🌳 수학
🌳 역사
구매 만족 후기
추천 재능
























해당 지식과 관련있는 인기재능

 운영하는 사이트 주소가 있다면 사이트를 안드로이드 앱으로 만들어 드립니다.기본 5000원은 아무런 기능이 없고 단순히 html 페이지를 로딩...

안녕하세요. 경력 8년차 프리랜서 개발자 입니다.피쳐폰 2g 때부터 지금까지 모바일 앱 개발을 전문적으로 진행해 왔으며,신속하 정확 하게 의뢰하...

안녕하세요.신호처리를 전공한 개발자 입니다. 1. 영상신호처리, 생체신호처리 알고리즘 개발2. 안드로이드 앱 개발 3. 윈도우 프로그램...

소개안드로이드 기반 어플리케이션 개발 후 서비스를 하고 있으며 스타트업 경험을 통한 앱 및 서버, 관리자 페이지 개발 경험을 가지고 있습니다....

안드로이드 인앱 결제 시스템 구현

2025-02-05 05:27:32

재능넷
조회수 13 댓글수 0

안드로이드 인앱 결제 시스템 구현하기 🚀💰

콘텐츠 대표 이미지 - 안드로이드 인앱 결제 시스템 구현

 

 

안녕하세요, 개발자 여러분! 오늘은 정말 흥미진진한 주제로 찾아왔어요. 바로 안드로이드 앱에서 인앱 결제 시스템을 구현하는 방법에 대해 알아볼 거예요. 이거 완전 꿀팁이에요! 🍯

요즘 모바일 앱 시장에서 인앱 결제는 필수죠. 사용자들이 앱 내에서 편리하게 구매할 수 있게 해주면, 수익도 쑥쑥 올라가고 사용자 경험도 좋아지니까요. 그래서 오늘은 여러분들이 이 멋진 기능을 여러분의 앱에 추가할 수 있도록 상세하게 설명해드릴게요!

아, 그리고 잠깐! 여러분, 혹시 재능넷이라는 사이트 아세요? 개발자들끼리 재능을 공유하고 거래할 수 있는 플랫폼인데, 여기서 인앱 결제 구현 관련 도움을 받을 수도 있어요. 나중에 한 번 들러보세요!

자, 이제 본격적으로 시작해볼까요? 준비되셨나요? 그럼 고고씽! 🏃‍♂️💨

1. 인앱 결제, 뭐가 그렇게 좋은데? 🤔

먼저, 인앱 결제가 왜 중요한지 알아볼까요? 이거 진짜 대박이에요!

  • 💰 수익 증대: 사용자들이 앱 내에서 바로 구매할 수 있으니까 매출이 쑥쑥 올라가요.
  • 😊 사용자 경험 개선: 앱을 나가지 않고도 결제할 수 있어서 편리해요.
  • 🔒 보안: Google Play의 안전한 결제 시스템을 이용하니까 안심할 수 있어요.
  • 📊 데이터 분석: 구매 패턴을 분석해서 마케팅 전략을 세울 수 있어요.
  • 🌐 글로벌 시장 진출: 다양한 국가의 결제 방식을 지원해요.

와, 이렇게 보니까 인앱 결제 없는 앱은 상상도 못하겠죠? ㅋㅋㅋ

🚀 꿀팁: 인앱 결제를 구현하면 앱의 가치가 올라가요. 특히 재능넷같은 플랫폼에서 여러분의 개발 실력을 뽐내기에 딱이에요!

자, 이제 본격적으로 구현 방법을 알아볼까요? 준비되셨나요? 긴장하지 마세요, 제가 친절하게 설명해드릴게요! 😉

2. 준비물: 뭐가 필요할까요? 🧰

인앱 결제 구현을 위해 필요한 것들을 알아볼까요? 이거 완전 요리 레시피 같죠? ㅋㅋㅋ

  • 🍳 Android Studio: 우리의 주방이에요!
  • Java 또는 Kotlin: 요리 재료죠.
  • 🎭 Google Play 개발자 계정: 요리사 자격증이라고 생각하면 돼요.
  • 📱 테스트용 안드로이드 기기: 시식 도구예요!
  • 🔑 Google Play Billing Library: 우리의 비밀 소스!

이 정도면 충분해요. 이제 요리... 아니, 개발을 시작해볼까요? 😆

💡 참고: Google Play 개발자 계정이 없다면, 먼저 만들어야 해요. 비용이 들긴 하지만, 장기적으로 봤을 때 완전 이득이에요!

자, 이제 재료... 아니, 준비물은 다 모았네요. 다음 단계로 넘어갈 준비 되셨나요? 가보자고요! 🚀

3. 프로젝트 세팅: 첫 단추 끼우기 🧵

자, 이제 본격적으로 시작해볼까요? 첫 단추를 잘 끼워야 나중에 안 헷갈리겠죠?

  1. Android Studio 열기: 여러분의 개발 놀이터를 열어주세요!
  2. 새 프로젝트 만들기: File > New > New Project 선택
  3. 프로젝트 이름 정하기: 뭐가 좋을까요? "MyAwesomeApp"은 어때요? ㅋㅋ
  4. 타겟 SDK 선택: API 레벨 16 이상으로 설정해주세요.
  5. 빌드 구성: Gradle 스크립트에 다음 종속성을 추가해주세요.

dependencies {
    implementation 'com.android.billingclient:billing:5.0.0'
}

이렇게 하면 Google Play Billing Library를 사용할 수 있어요. 완전 꿀템이죠? 🍯

🚨 주의: 버전 번호는 계속 업데이트되니까, 최신 버전을 확인하고 사용하세요!

자, 이제 기본 세팅은 끝났어요. 어때요? 생각보다 쉽죠? 다음 단계로 넘어갈 준비 되셨나요? 가즈아~! 🏃‍♂️💨

4. BillingClient 초기화: 결제의 심장을 만들자! ❤️

이제 진짜 중요한 부분이에요. BillingClient를 초기화해야 하는데, 이게 바로 우리 인앱 결제 시스템의 심장이에요! 떨리지 않나요? ㅋㅋㅋ

자, 코드를 볼까요?


private lateinit var billingClient: BillingClient

private fun initializeBillingClient() {
    billingClient = BillingClient.newBuilder(this)
        .setListener(purchasesUpdatedListener)
        .enablePendingPurchases()
        .build()
}

우와, 이게 뭔가 싶죠? 하나씩 설명해드릴게요!

  • BillingClient.newBuilder(this): 새로운 BillingClient를 만들어요.
  • .setListener(purchasesUpdatedListener): 구매 업데이트 리스너를 설정해요.
  • .enablePendingPurchases(): 대기 중인 구매를 활성화해요.
  • .build(): 모든 설정을 적용하고 BillingClient를 만들어요.

그런데 잠깐, purchasesUpdatedListener가 뭐냐고요? 이건 구매가 업데이트될 때마다 호출되는 콜백이에요. 이렇게 만들어주면 돼요:


private val purchasesUpdatedListener =
    PurchasesUpdatedListener { billingResult, purchases ->
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && purchases != null) {
            for (purchase in purchases) {
                handlePurchase(purchase)
            }
        } else if (billingResult.responseCode == BillingClient.BillingResponseCode.USER_CANCELED) {
            // 사용자가 구매를 취소했을 때의 처리
        } else {
            // 구매 실패 처리
        }
    }

이 리스너는 구매가 성공했는지, 취소됐는지, 아니면 실패했는지를 알려줘요. 완전 똑똑하죠?

💡 꿀팁: handlePurchase() 함수는 실제 구매 처리를 하는 함수예요. 이건 나중에 구현할 거니까 걱정하지 마세요!

자, 이제 BillingClient 초기화는 끝났어요. 어때요? 생각보다 어렵지 않죠? 다음 단계로 넘어갈 준비 되셨나요? 고고씽! 🚀

5. 구매 가능한 상품 목록 가져오기: 쇼핑 리스트 만들기 🛒

자, 이제 우리 앱에서 판매할 상품 목록을 가져와볼 거예요. 마치 온라인 쇼핑몰에서 상품 목록을 보는 것처럼요! 재밌겠죠? ㅋㅋㅋ

먼저, BillingClient와 연결해야 해요. 이렇게 하면 돼요:


billingClient.startConnection(object : BillingClientStateListener {
    override fun onBillingSetupFinished(billingResult: BillingResult) {
        if (billingResult.responseCode ==  BillingClient.BillingResponseCode.OK) {
            // 연결 성공! 이제 상품 목록을 가져올 수 있어요.
            querySkuDetails()
        }
    }
    override fun onBillingServiceDisconnected() {
        // 연결이 끊겼을 때의 처리
    }
})

연결이 성공하면 querySkuDetails() 함수를 호출해서 상품 목록을 가져올 거예요. 이 함수는 이렇게 구현하면 돼요:


private fun querySkuDetails() {
    val skuList = ArrayList<string>()
    skuList.add("premium_upgrade")
    skuList.add("gas")
    val params = SkuDetailsParams.newBuilder()
    params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP)
    billingClient.querySkuDetailsAsync(params.build()) { billingResult, skuDetailsList ->
        // 상품 정보 처리
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
            for (skuDetails in skuDetailsList) {
                // 각 상품의 정보를 처리
                val sku = skuDetails.sku
                val price = skuDetails.price
                // 여기서 UI를 업데이트하거나 상품 정보를 저장할 수 있어요.
            }
        }
    }
}
</string>

우와, 이게 뭔가 싶죠? 하나씩 설명해드릴게요!

  • skuList: 이건 우리가 판매할 상품의 ID 목록이에요. Google Play Console에서 설정한 ID를 여기에 넣어주면 돼요.
  • SkuDetailsParams: 이건 상품 정보를 요청할 때 필요한 파라미터예요.
  • BillingClient.SkuType.INAPP: 이건 일회성 구매 상품을 의미해요. 정기 구독은 SUBS를 사용해야 해요.
  • querySkuDetailsAsync: 이 함수로 실제로 상품 정보를 요청해요.

🚀 꿀팁: 상품 ID는 Google Play Console에서 미리 설정해야 해요. 여기서 설정한 ID와 코드의 ID가 일치해야 해요!

자, 이제 우리 앱의 쇼핑 리스트가 완성됐어요! 어때요? 생각보다 쉽죠? 이제 사용자들에게 이 멋진 상품들을 보여줄 수 있어요! 👀

다음 단계에서는 실제로 구매를 진행하는 방법을 알아볼 거예요. 기대되지 않나요? 가즈아~! 🏃‍♂️💨

6. 구매 진행하기: 드디어 돈 벌 시간이다! 💰

자, 이제 진짜 핵심이에요! 사용자가 상품을 구매하도록 만드는 거죠. 이 부분만 잘 구현하면 여러분은 앱으로 돈방석에 앉을 수 있어요! (농담이에요, ㅋㅋㅋ)

구매 과정을 시작하려면 이런 함수를 만들면 돼요:


private fun launchBillingFlow(skuDetails: SkuDetails) {
    val flowParams = BillingFlowParams.newBuilder()
        .setSkuDetails(skuDetails)
        .build()
    val responseCode = billingClient.launchBillingFlow(this, flowParams).responseCode
    if (responseCode != BillingClient.BillingResponseCode.OK) {
        // 구매 시작 실패 처리
    }
}

이 함수는 뭘 하는 걸까요? 간단히 설명해드릴게요!

  • BillingFlowParams: 이건 구매 과정을 시작할 때 필요한 파라미터예요.
  • setSkuDetails: 구매할 상품의 정보를 설정해요.
  • launchBillingFlow: 실제로 구매 화면을 띄우는 함수예요.

이 함수를 호출하면 사용자에게 Google Play의 결제 화면이 나타나요. 완전 쿨하죠? 😎

💡 꿀팁: 사용자가 구매 버튼을 눌렀을 때 이 함수를 호출하면 돼요. 예를 들어, "프리미엄으로 업그레이드" 버튼 같은 거요!

그런데 잠깐, 여기서 끝이 아니에요! 구매가 완료되면 우리가 아까 설정한 purchasesUpdatedListener가 호출돼요. 기억나시죠? 그럼 거기서 이렇게 처리해주면 돼요:


private fun handlePurchase(purchase: Purchase) {
    if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
        if (!purchase.isAcknowledged) {
            val acknowledgePurchaseParams = AcknowledgePurchaseParams.newBuilder()
                .setPurchaseToken(purchase.purchaseToken)
                .build()
            billingClient.acknowledgePurchase(acknowledgePurchaseParams) { billingResult ->
                if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
                    // 구매 인정 완료! 이제 사용자에게 컨텐츠를 제공하면 돼요.
                }
            }
        }
    }
}

이 함수는 정말 중요해요! 구매가 완료되면 반드시 인정(acknowledge)해줘야 해요. 안 그러면 3일 후에 자동으로 환불돼버려요! 😱

자, 이제 구매 과정이 완성됐어요! 어때요? 생각보다 복잡하지 않죠? 이제 여러분의 앱은 돈을 벌 준비가 된 거예요! 🤑

다음 단계에서는 구매한 아이템을 어떻게 관리하고 복원하는지 알아볼 거예요. 기대되지 않나요? 고고씽! 🚀

7. 구매 아이템 관리 및 복원: 잃어버린 보물을 찾아서 🗺️

자, 이제 우리 앱의 사용자들이 열심히 아이템을 구매했어요. 근데 만약에 앱을 지웠다가 다시 깔면 어떻게 될까요? 그래서 우리는 구매한 아이템을 관리하고 복원하는 기능이 필요해요. 마치 잃어버린 보물을 찾는 것처럼요! 🏴‍☠️

먼저, 구매 기록을 조회하는 함수를 만들어볼게요:


private fun queryPurchases() {
    billingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP) { billingResult, purchases ->
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
            for (purchase in purchases) {
                handlePurchase(purchase)
            }
        } else {
            // 오류 처리
        }
    }
}

이 함수는 뭘 하는 걸까요? 간단히 설명해드릴게요!

  • queryPurchasesAsync: 이 함수로 사용자의 모든 구매 기록을 가져와요.
  • BillingClient.SkuType.INAPP: 일회성 구매 아이템을 조회한다는 뜻이에요. 구독은 SUBS를 사용해야 해요.
  • handlePurchase: 각 구매 아이템에 대해 처리를 해줘요. 아까 만든 그 함수 기억나시죠?

이 함수를 앱이 시작될 때마다 호출하면, 사용자가 예전에 구매한 아이템을 모두 복원할 수 있어요. 완전 꿀기능이죠? 🍯

🚀 꿀팁: 이 기능은 특히 비소모성 아이템(예: 프리미엄 업그레이드)에 유용해요. 소모성 아이템은 조금 다르게 처리해야 해요!

그리고 사용자가 직접 구매 복원을 요청할 수 있는 버튼도 만들어주면 좋아요. 이렇게요:


fun onRestorePurchasesClicked() {
    queryPurchases()
}

이 함수를 "구매 복원" 버튼에 연결해주면 돼요. 사용자가 새 폰을 샀거나 앱을 재설치했을 때 유용하겠죠?

자, 이제 우리 앱은 구매한 아이템을 완벽하게 관리하고 복원할 수 있어요! 사용자들이 얼마나 좋아할까요? 😍

다음 단계에서는 구독 상품을 어떻게 다루는지 알아볼 거예요. 정기적으로 돈이 들어오는 구독... 생각만 해도 설레지 않나요? 가보자고요! 🏃‍♂️💨

8. 구독 상품 다루기: 정기적인 수입의 꿈 💸

자, 이제 대망의 구독 상품이에요! 구독은 개발자들의 로망이죠. 매달 쏙쏙 들어오는 수입... 아~ 생각만 해도 좋네요! ㅋㅋㅋ

구독 상품을 다루는 건 일회성 구매와 비슷하지만, 몇 가지 다른 점이 있어요. 한번 살펴볼까요?

먼저, 구독 상품 목록을 가져오는 함수를 만들어볼게요:


private fun querySubscriptionSkuDetails() {
    val skuList = ArrayList<string>()
    skuList.add("monthly_sub")
    skuList.add("yearly_sub")
    val params = SkuDetailsParams.newBuilder()
    params.setSkusList(skuList).setType(BillingClient.SkuType.SUBS)
    billingClient.querySkuDetailsAsync(params.build()) { billingResult, skuDetailsList ->
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
            for (skuDetails in skuDetailsList) {
                // 각 구독 상품의 정보를 처리
                val sku = skuDetails.sku
                val price = skuDetails.price
                // 여기서 UI를 업데이트하거나 구독   정보를 저장할 수 있어요.
            }
        }
    }
}
</string>

이 함수는 아까 본 querySkuDetails와 비슷하지만, BillingClient.SkuType.SUBS를 사용한다는 점이 달라요. 이렇게 하면 구독 상품만 가져올 수 있어요.

구독 구매 과정을 시작하는 함수도 만들어볼까요?


private fun launchSubscriptionFlow(skuDetails: SkuDetails) {
    val flowParams = BillingFlowParams.newBuilder()
        .setSkuDetails(skuDetails)
        .build()
    val responseCode = billingClient.launchBillingFlow(this, flowParams).responseCode
    if (responseCode != BillingClient.BillingResponseCode.OK) {
        // 구독 시작 실패 처리
    }
}

이 함수는 일회성 구매와 거의 똑같아요. 차이점은 사용자에게 보여지는 화면이 구독에 맞게 변경된다는 거예요.

💡 꿀팁: 구독은 자동으로 갱신되기 때문에, 사용자에게 구독 조건을 명확히 설명해주는 게 중요해요!

구독 상태를 확인하는 함수도 필요해요. 이렇게 만들어볼까요?


private fun checkSubscriptionStatus() {
    billingClient.queryPurchasesAsync(BillingClient.SkuType.SUBS) { billingResult, purchases ->
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
            for (purchase in purchases) {
                when (purchase.purchaseState) {
                    Purchase.PurchaseState.PURCHASED -> {
                        // 구독 활성 상태
                        if (!purchase.isAcknowledged) {
                            acknowledgePurchase(purchase.purchaseToken)
                        }
                    }
                    Purchase.PurchaseState.PENDING -> {
                        // 구독 대기 중
                    }
                    else -> {
                        // 구독 없음
                    }
                }
            }
        }
    }
}

이 함수는 현재 사용자의 구독 상태를 확인해요. 구독이 활성 상태인지, 대기 중인지, 아니면 없는지를 알 수 있죠.

마지막으로, 구독 취소나 만료 처리도 해줘야 해요. 이건 서버에서 실시간 개발자 알림을 받아 처리하는 게 가장 좋아요. 하지만 클라이언트에서도 기본적인 처리는 할 수 있어요:


private fun handleExpiredSubscription() {
    // 구독 혜택 제거
    // 사용자에게 구독 만료 알림
    // 재구독 유도 등
}

이렇게 하면 구독 상품 처리의 기본적인 틀이 완성돼요! 어때요? 생각보다 복잡하지 않죠?

구독은 앱의 지속적인 수입원이 될 수 있어요. 사용자에게 지속적인 가치를 제공하면서, 개발자도 안정적인 수입을 얻을 수 있는 win-win 전략이죠! 👍

자, 이제 우리 앱은 일회성 구매와 구독 모두를 완벽하게 지원해요. 앱스토어를 평정할 준비가 된 거예요! 🚀

9. 마무리: 이제 당신은 인앱 결제의 달인! 🏆

우와, 정말 긴 여정이었죠? 하지만 여러분, 축하해요! 이제 여러분은 안드로이드 인앱 결제의 달인이 되었어요! 👏👏👏

우리가 함께 배운 내용을 정리해볼까요?

  • BillingClient 초기화
  • 상품 목록 가져오기
  • 구매 프로세스 구현
  • 구매 아이템 관리 및 복원
  • 구독 상품 다루기

이 모든 것을 마스터했다니, 정말 대단해요! 🎉

🚀 마지막 꿀팁: 인앱 결제는 계속 발전하고 있어요. Google의 공식 문서를 주기적으로 확인하고, 새로운 기능이나 변경사항이 있는지 체크하는 습관을 들이세요!

자, 이제 여러분의 앱에 인앱 결제를 적용할 시간이에요. 어려워 보일 수 있지만, 천천히 하나씩 적용해보세요. 분명 멋진 결과가 있을 거예요!

그리고 잊지 마세요. 개발은 끝이 없는 여정이에요. 항상 새로운 것을 배우고, 도전하세요. 여러분의 앱이 대박날 때까지 화이팅! 💪

마지막으로, 이 글이 여러분에게 도움이 되었길 바라요. 혹시 추가로 궁금한 점이 있다면 언제든 물어보세요. 그리고 여러분의 성공 스토리도 꼭 들려주세요! 👂

그럼, 다음에 또 만나요! 안녕~ 👋

관련 키워드

  • 안드로이드
  • 인앱결제
  • Google Play Billing
  • BillingClient
  • 구독
  • 아이템 구매
  • 결제 시스템
  • 앱 수익화
  • 구매 복원
  • 개발자 콘솔

지적 재산권 보호

지적 재산권 보호 고지

  1. 저작권 및 소유권: 본 컨텐츠는 재능넷의 독점 AI 기술로 생성되었으며, 대한민국 저작권법 및 국제 저작권 협약에 의해 보호됩니다.
  2. AI 생성 컨텐츠의 법적 지위: 본 AI 생성 컨텐츠는 재능넷의 지적 창작물로 인정되며, 관련 법규에 따라 저작권 보호를 받습니다.
  3. 사용 제한: 재능넷의 명시적 서면 동의 없이 본 컨텐츠를 복제, 수정, 배포, 또는 상업적으로 활용하는 행위는 엄격히 금지됩니다.
  4. 데이터 수집 금지: 본 컨텐츠에 대한 무단 스크래핑, 크롤링, 및 자동화된 데이터 수집은 법적 제재의 대상이 됩니다.
  5. AI 학습 제한: 재능넷의 AI 생성 컨텐츠를 타 AI 모델 학습에 무단 사용하는 행위는 금지되며, 이는 지적 재산권 침해로 간주됩니다.

재능넷은 최신 AI 기술과 법률에 기반하여 자사의 지적 재산권을 적극적으로 보호하며,
무단 사용 및 침해 행위에 대해 법적 대응을 할 권리를 보유합니다.

© 2025 재능넷 | All rights reserved.

댓글 작성
0/2000

댓글 0개

해당 지식과 관련있는 인기재능

 안녕하세요. 안드로이드 기반 개인 앱, 프로젝트용 앱부터 그 이상 기능이 추가된 앱까지 제작해 드립니다.  - 앱 개발 툴: 안드로이드...

------------------------------------만들고 싶어하는 앱을 제작해드립니다.------------------------------------1. 안드로이드 ( 자바 )* 블루...

애플리케이션 서비스 안녕하세요. 안드로이드 개발자입니다.여러분들의 홈페이지,블로그,카페,모바일 등 손쉽게 어플로 제작 해드립니다.요즘...

📚 생성된 총 지식 13,710 개

  • (주)재능넷 | 대표 : 강정수 | 경기도 수원시 영통구 봉영로 1612, 7층 710-09 호 (영통동) | 사업자등록번호 : 131-86-65451
    통신판매업신고 : 2018-수원영통-0307 | 직업정보제공사업 신고번호 : 중부청 2013-4호 | jaenung@jaenung.net

    (주)재능넷의 사전 서면 동의 없이 재능넷사이트의 일체의 정보, 콘텐츠 및 UI등을 상업적 목적으로 전재, 전송, 스크래핑 등 무단 사용할 수 없습니다.
    (주)재능넷은 통신판매중개자로서 재능넷의 거래당사자가 아니며, 판매자가 등록한 상품정보 및 거래에 대해 재능넷은 일체 책임을 지지 않습니다.

    Copyright © 2025 재능넷 Inc. All rights reserved.
ICT Innovation 대상
미래창조과학부장관 표창
서울특별시
공유기업 지정
한국데이터베이스진흥원
콘텐츠 제공서비스 품질인증
대한민국 중소 중견기업
혁신대상 중소기업청장상
인터넷에코어워드
일자리창출 분야 대상
웹어워드코리아
인터넷 서비스분야 우수상
정보통신산업진흥원장
정부유공 표창장
미래창조과학부
ICT지원사업 선정
기술혁신
벤처기업 확인
기술개발
기업부설 연구소 인정
마이크로소프트
BizsPark 스타트업
대한민국 미래경영대상
재능마켓 부문 수상
대한민국 중소기업인 대회
중소기업중앙회장 표창
국회 중소벤처기업위원회
위원장 표창