원스토어 인앱결제 개요

구분내용

관리형 상품

구매 후 소비(consume)하기 전까지 재구매가 되지 않는 상품입니다. 해당 상품을 다시 구매하기 위해서는 소비(consume) 처리를 해야 합니다. 관리형 상품의 특성을 이용하면, 소비성/영구성/기간제 형태의 인앱상품을 서비스할 수 있습니다.

월정액 상품

한 번 가입하면 매월 일정 금액이 자동결제되는 상품으로, 자동결제 갱신(재결제)은 원스토어에서 처리합니다.

자동결제 해지 기능은 SDK 또는 서버 API를 이용하여 앱에서 직접 구현해주셔야 합니다. 서버 API를 활용한 월정액 상품 구매내역(상태) 조회 및 자동결제 해지/해지취소 기능은 원스토어 인앱결제 서버 API 페이지를 참고하시기 바랍니다.

​월정액 상품 갱신 주기

월정액 상품의 자동 결제는 구매한 날짜와 같은 날짜에 진행 됩니다. 단, 익월 같은 날짜가 없는 경우에는 마지막 날짜에 진행됩니다.

  • 1월 31일 첫 결제 시

  • 2월 28일 또는 29일 갱신

  • 3월 28일 또는 29일 갱신

원스토어 인앱결제란?

원스토어 인앱결제(In-App Purchase, IAP)는 안드로이드 앱 내에 구현된 상품을 원스토어의 인증 및 결제 시스템을 이용하여 사용자에게 판매, 청구하여 개발자에게 정산하는 서비스입니다.

인앱상품 결제를 위해 원스토어 서비스(ONE store service, OSS) 앱과 연동이 필요하며, 원스토어 서비스 앱은 원스토어 결제 서버와 연동하여 인앱상품의 결제를 수행합니다.

원스토어 인앱결제를 적용하기 위해서는 '원스토어 IAP SDK(In-App Purchase Software Development Kit)'를 적용하면 됩니다.

인앱상품의 유형

원스토어 인앱결제 API V6(SDK V19)는 관리형 상품과 월정액 상품. 두 가지 유형의 인앱상품을 제공 합니다. 우선, 각 타입이 어떤 특성을 가지고 있는지 확인하신 후 본인이 제공하는 상품에 맞게 인앱상품 목록을 구성해보시기 바랍니다.

구분내용

관리형 상품

구매 후 소비(consume)하기 전까지 재구매가 되지 않는 상품입니다. 해당 상품을 다시 구매하기 위해서는 소비(consume) 처리를 해야 합니다. 관리형 상품의 특성을 이용하면, 소비성/영구성/기간제 형태의 인앱상품을 서비스할 수 있습니다.

월정액 상품

한 번 가입하면 매월 일정 금액이 자동결제되는 상품으로, 자동결제 갱신(재결제)은 원스토어에서 처리합니다.

자동결제 해지 기능은 SDK 또는 서버 API를 이용하여 앱에서 직접 구현해주셔야 합니다. 서버 API를 활용한 월정액 상품 구매내역(상태) 조회 및 자동결제 해지/해지취소 기능은 원스토어 인앱결제 서버 API 페이지를 참고하시기 바랍니다.

월정액 상품 갱신 주기

월정액 상품의 자동 결제는 구매한 날짜와 같은 날짜에 진행 됩니다. 단, 익월 같은 날짜가 없는 경우에는 마지막 날짜에 진행됩니다.

  • 1월 31일 첫 결제 시

  • 2월 28일 또는 29일 갱신

  • 3월 28일 또는 29일 갱신

결제 프로세스

원스토어 인앱결제는 크게 다음의 네 가지 프로세스로 구성 되어있습니다.

원스토어 회원 로그인

원스토어 인앱결제 서비스를 이용하기 위해서는 원스토어 회원으로 가입 및 로그인되어 있는 상태이어야 합니다.

로그인 실패와 관련된 에러코드를 전달받는다면, 원스토어에 로그인할 수 있도록 로그인 프로세스를 호출해주시거나 고객에게 원스토어 앱을 실행하여 로그인하도록 유도해야 합니다.

  • 원스토어 앱을 실행하여 로그인 유도

다이얼로그 등을 이용하여 '원스토어 회원 로그인이 필요합니다' 를 고객에게 전달합니다. 해당 방법은 고객에게 단순 가이드를 제공, 직접 원스토어 어플리케이션을 실행하도록 유도하는 방식입니다.

  • launchLoginFlowAsync로 로그인 프로세스 호출

개발사는 launchLoginFlowAsync API를 이용하여 로그인 화면을 호출합니다.

사용자가 로그인을 완료하면 API 를 호출할 때 parameter 로 넣는 IapResultLIstener 를 통해 결과값을 전달 받을 수 있습니다.

결과 코드값을 검증한 후에 성공으로 확인되면 이후에는 원스토어 인앱결제 SDK의 API를 이용 할 수 있습니다.

아래 그림은 개발사 앱과 원스토어 간에 로그인 프로세스를 나타낸 것입니다.

인앱상품 구매

상품을 구매하려면 먼저 상품 상제정보(queryProductDetailAsync) API 호출하여 상품의 정보을 가지고 launchPurchaseFlow API 를 통해 구매화면을 호출합니다.

결제가 완료 되면 PurchaseClient 객체를 초기화할 때 입력한 PurchasesUpdatedListener 를 통해 구매정보를 전달 받을 수 있습니다.

결과 코드값을 검증한 후에 성공으로 확인되면 인앱상품에 해당하는 아이템을 지급하는 프로세스를 진행합니다.

아래 그림은 개발사 앱과 원스토어 사이의 인앱상품을 구매하는 프로세스를 나타낸 것입니다.

구매 확인

원스토어 IAP 라이브러리 V6 이상을 사용하는 경우 3일 이내에 구매 확인을 진행해야 합니다. 구매 확인이 되지 않으면, 고객에게 구매 금액이 환불됩니다.

다음 두 가지 방법을 사용하면 구매를 확인 할 수 있습니다.

  • 소비하기 (consume)

    • 관리형 상품의 특징은 구매 후 소비(consume) 하기 전까지 재구매가 되지 않는 것입니다. 따라서, 관리형 상품 중 반복 구매가 가능한 소비성 상품을 제공할 경우에는 반드시 PurchaseClient.consumeAsync() 를 사용하여 소비 처리를 해야 고객이 해당 상품을 다시 구매할 수 있습니다.

    • 소비성 형태의 상품을 구현할 때 는 구매 프로세스 완료 후 바로 구매한 상품을 소비시키고, 소비가 완료된 후에 아이템을 지급합니다.

    • 사용자가 앱(게임)을 실행하는 시점 또는 앱(게임)에 로그인하는 시점에 위의 API들을 호출하여, 미지급된 상품이 있는지 사전에 체크하고 상품을 지급하는 프로세스를 추가하는 것을 권장합니다.

  • 구매 확인 (acknowledge)

    • 소비성 상품이 아닌 경우, PurchaseClient.acknowledgeAsync() 를 사용합니다. 소비 처리를 하지않고, 구매 확인만 하는 방법으로 영구성 상품을 구현할 수 있습니다.

    • 영구성 형태의 상품을 구현할 때는, 소비가 아닌 구매 확인 (acknowledge)을 해야합니다.

    • 월정액 상품의 경우에도 구매 확인이 필요하며, 최초 결제에 대해서만 구매 확인을 진행하면 됩니다.

네트워크 단절이나 앱의 갑작스러운 비정상 종료 등으로 인해, 고객은 결제를 완료하였으나 개발사에 결제정보 전달이 누락되어 인앱상품이 지급되지 않는 경우가 발생할 수 있습니다. 구매정보 가져오기(queryPurchases) 및 소비(consume) 기능을 활용하여 구매가 완료되었으나 미지급된 내역이 있는지 확인 후 미지급된 상품이 지급처리될 수 있도록 프로세스를 구현하는 것을 권장합니다.

월정액 상품 관리(상태변경)

월정액 상품(subscription)은 최초 1회만 구매(가입)하면 원스토어가 매월 자동으로 결제를 갱신합니다.

고객이 가입한 월정액 상품 정보 및 가입상태 조회, 월정액 가입 해지 기능은 개발사의 앱에서 제공하여야 합니다.

월정액 상품을 해지할 경우 요청 즉시 해지되지 않고 '해지 예약' 상태로 변경되며, 다음 결제 시점에 재결제되지 않고 해지 완료처리 됩니다.

즉, 결제 당월까지는 상품을 사용할 수 있으며 queryPurchases API 호출 시 purchase list에 포함되어 전달됩니다.

권장 개발 환경

원스토어 IAP SDK를 적용하기 위해 다음과 같은 개발 환경이 필요합니다.

Last updated