Mobile Service > IAP > 개요

[공지] 구독 결제를 지원하는 신규 IAP SDK가 TOAST SDK로 출시됐습니다. 기존 IAP SDK는 더 이상 신규 기능을 개발하지 않을 예정입니다. 본 문서는 TOAST SDK 가이드입니다.

In-App Purchase (이하 IAP) 서비스는 통합 인앱 결제 서비스입니다.

주요 기능

TOAST IAP는 다음과 같은 기능을 제공합니다.

  • Google Play, Apple AppStore , ONEstore 의 인앱 결제를 단일 인터페이스로 연동했습니다. 각각의 스토어별 결제 연동 스펙을 학습하지 않아도 됩니다.
  • IAP에서 제공하는 결제 검증 서버를 통해 결제 보안 및 안정성을 높입니다.
  • Google과 Apple은 구독 결제 및 Promotion 기능을 지원합니다.
  • 고객 지원을 위해 웹콘솔에서 결제내역 조회기능을 제공합니다.

지원 스토어

플랫폼 스토어
Android Google
Android ONEstore
iOS Apple

지원 상품 유형

Store 스토어 상품유형 IAP 상품유형
Google Play Store One-time, Subscriptions CONSUMABLE, AUTO_SUBSCRIPTION
App Store Consumable, Auto-Renewable CONSUMABLE, AUTO_SUBSCRIPTION
ONEStore Managed product CONSUMABLE

서비스 용어

용어 설명
AppKey TOAST Cloud 사용자 프로젝트와 상품간 1:1 매칭키. 프로젝트당 하나의 IAP용 AppKey를 발급함
스토어(Store) App Store, Google Play같은 앱을 판매하는 곳
결제내역(Payment) 사용자가 결제한 내역
결제요청(Purchase) 앱 내에서 혹은 스토어에서 아이템을 구매함
결제소비(Consume) 사용자에게 아이템을 생성하기 전 결제를 소비하는 것
Payment Access Token 사용자 애플리케이션 서버가 결제를 소비할 때 사용하는 인증토큰

서비스 구조

IAP 서비스는 다음 그림과 같이 IAP SDK, User Application Server, IAP Server, Store 4가지로 구성됩니다.

[그림 1 IAP 서비스 구조 - Server To Server Model]

[그림 1 IAP 서비스 구조 - Server To Server Model]

[그림 2 IAP 서비스 구조 - Build-in Model]

[그림 2 IAP 서비스 구조 - Build-in Model]

컴포넌트 설명
IAP SDK IAP Android SDK입니다. 인앱 결제를 위하여 사용자ID 등록, 결제요청을 수행합니다.
결제 수행시 스토어(Android의 경우 Google Store)의 인앱 결제 화면으로 이동합니다.
User Application Server 사용자 애플리케이션 서버입니다.
IAP 서버를 통하여 클라이언트가 요청한 결제내역을 확인한 후 결제소비를 진행하고 아이템 전달을 수행합니다.
User Application Client 사용자 애플리케이션에 서버가 존재하지 않는다면, 애플리케이션의 클라이언트에서 결제소비를 진행하고 아이템에 대한 권한을 부여하게 됩니다.
IAP Server TOAST Cloud에서 제공하는 인앱 결제 서버입니다.
Store Google Store, Apple App Store 등의 다양한 스토어입니다. 플랫폼별 스토어는 IAP 서버와 연동되어 있습니다.

IAP 결제 흐름도

[그림 3 Server To Server Model 결제 흐름도]

[그림 3 Server To Server Model 결제 흐름도]

[그림 4 Build-in model 결제 흐름도]

[그림 4 Build-in model 결제 흐름도]

Step Description
[1] 결제 사용자 ID를 등록합니다.
결제 사용자는 개발사에서 사용자를 식별하고 아이템을 지급하는 대상이며 Google play나 App Store 계정이 아닙니다.
[참조]
API Step
Android : InternalInAppPurchase.InAppPurchase.registerUserId
iOS : TIAPurchase registerUserId: error:
[2] 클라이언트에서 결제를 요청합니다.
[참조]
API Step
Android : InternalInAppPurchase..InAppPurchases.requestPurchase
iOS : TIAPurchase startPurchaseWithViewController: itemId: completionHandler
[3] 스토어에서 결제를 진행합니다.
[4] 스토어에서 결제를 마치고 결제 결과를 전달받습니다.
전달받은 결과를 이용해 User Application Server에서 item consume 진행을 합니다.
[주의]
애플리케이션 서버가 존재 하지 않는 모델은 결제 소비를 클라이언트에서 직접 검증 할 수 있으나,
보안 상의 이슈로 인해 Server To Server로 결제 소비후 아이템에 대한 권한을 부여하는 것을 강력 권장 합니다.
[4-1] 스토어에서 전달받은 결과를 통해 IAP Server에 Consume 요청을 합니다.
[5] Consume을 성공하면 사용자에게 item을 전달합니다.
[6] 결제를 완료합니다.