본문 바로가기

렌파이/모바일

렌파이로 인앱결제 시스템 만들기

이 글은 렌파이의 인앱 구매 매뉴얼을 번역한 것입니다.

2015년 9월 24일 기준으로 렌파이는 구글 플레이, 아마존 앱스토어와 함께 애플 앱스토어 구매를 지원하고 있습니다.


(2014년 10월 25일 이 항목을 처음 번역한 이후에 추가된 내용이 애플 앱스토어 관련 내용 몇 줄 뿐이라 15년 9월 24일 추가로 갱신했습니다.

참고로 총 매뉴얼은 번역 중이고 10월 중에 한번에 업데이트할 예정입니다.)


인앱 구매


렌파이에는 고급 인앱 구매 시스템 제작틀이 있습니다. 이 틀은 현재 애플 앱 스토어, 구글 플레이와 아마존 앱스토어용 잠금 해제 스타일의 구매 형태만 지원합니다.
이 틀을 사용하는 방법은 꽤 간단하며 다음과 같은 기능으로 이루어져있습니다.

- 게임 초기화 단계에서 iap.register() 함수를 사용해 사용 가능한 구매 항목을 모두 등록합니다.
- 게임이 한 번 시작되면 iap.has_purchased() 함수를 사용해 구매가 이루어졌는지 확인합니다.
- iap.purchase() 함수나 iap.Purchase() 액션을 사용해 사용자가 아이템을 구매할 수 있도록 합니다.
- iap.restore() 함수나 iap.Restore() 액션으로 구매 내역을 복원할 수 있도록 합니다.

인앱 구매 시스템을 제공하려면 구매 항목 (및 해당 항목 가격)은 여러 마켓에 반드시 설정되어야 합니다. 안드로이드 빌드를 만들 때 렌파이는 패키지 설정 시 이용하려는 마켓이 무엇인지 물을 것입니다.


애플 앱 스토어

애플 앱 스토어는 패키지 이름을 기반으로 하여 특별한 설정이 필요하지 않습니다.


구글 플레이
구글 플레이를 사용하기 전에 반드시 구글 플레이 키와 솔트를 프로젝트에 추가해야합니다. 확장 apk 항목에서 이에 대한 내용을 확인할 수 있습니다.

아마존 앱 스토어
아마존 앱스토어는 패키지 이름을 기반으로 하여 특별한 설정이 필요하지 않습니다.

iap 함수


iap.get_stroe_name()
인앱구매 시스템이 활성화된 스토어 이름을 반환합니다. 현재는 "amazon", "google", "ios" 또는 설정된 스토어가 없는 경우 None을 반환합니다.

iap.has_purchased(product)
사용자가 과거에 product를 구매했다면 True 를 반환하며 아니면 False를 반환합니다.

iap.purchse(product, interact=True)
이 함수는 product 구매를 요청합니다. 과거의 구매든 현재의 구매든 구매에 성공하면 True 를 반환하며 아니면 False를 반환합니다.

iap.register(product, identifier=None, amazon = None, google=None)
인앱 구매 시스템으로 제품을 등록합니다.

product
상품의 이름이 적힌 문자열. iap.purchase(), iap.Purchase(), iap.has_purchased() 로 전달되는 제품을 대표하는 문자열입니다.
identifier
내부에서 상품을 식별할 때 사용하는 문자열. 한 번 상품을 대표하여 사용되고 나면 이 값은 절대 바뀌어서는 안 됩니다. 이 문자열은 일반적으로 "com.domain.game.product" 형태입니다. None이라면 product 값을 받습니다.
amazon
아마존 앱스토어에서 상품을 식별하기 위해 사용되는 문자열. 값이 주어지지 않으면 identifier 의 값을 받습니다.
google
구글 플레이 스토어에서 상품을 식별하기 위해 사용되는 문자열. 값이 주어지지 않으면 identifier 의 값을 받습니다.

iap.restore(interact=True)
앱스토어와 접촉하여 사라진 상품을 복원합니다.


interact
True면 스토어의 응답을 기다리는 동안 renpy.pause 를 호출합니다.

IAP 액션


iap.Purchase(product)
product 의 구매를 시도하는 액션. 이 액션은 상품을 구매할 수 있는 경우에만 가능한 액션입니다. (스토어가 활성화되어있으며 해당 상품이 이미 구매된 경우가 아닌 경우)

iap.Restore()
스토어에 접촉해 사라진 상품을 복원합니다.