본문 바로가기

unity3d

Amazon In-App Purchasing 모듈 붙이기

아마존 모바일 앱을 등록하고, 인앱 구매 모듈을 붙이시려는 분들께 도움이 되고자 남겨봅니다.

티스토어 인앱모듈을 붙여보신 분이라면 이클립스 작업으로 플러그인을 만들어야 하는 게 아닌가 생각하실 수 있습니다만, 아마존 모바일 인앱모듈은 구현이 상당히 쉽습니다. (유니티용 패키지를 따로 제공하기 때문에 꼼꼼히 적재적소에 코딩하시는 일만 남거든요~)


그럼, 간단하게 Consumable 상품을 하나 추가해 테스트 하는 과정까지 살펴보도록 하겠습니다.


1. In-App 상품 등록

어플을 등록 후 In-App Items 탭을 눌러 인앱상품을 등록합니다.



인앱상품은 Consumable(일반 소비성 아이템-게임머니 등), Entitlement(영구 구매 등 권한부여 아이템), Subscription(구독 등 기간제 아이템) 3가지 종류 중 선택하여 추가하실 수 있습니다.

그리고 SKU (인앱상품 식별코드) 는 어플 내에서 상품 구매시 호출할 때 사용되니 상품별로 네이밍을 잘 하시면 됩니다. (상품별 로직을 짜실 수 있게 규칙성을 주시면 좋겠죠.)


2. Amazon Mobile Apps-SDK 다운

Apps-SDK.zip 파일을 다운 받으시면 됩니다. (개발자 등록과정 등은 생략할게요. 개발자 등록이 안되도 SDK는 다운 받으실 수 있습니다. 다만, 인앱 상품등록을 하려면 개발자 등록, 앱 등록이 필수겠죠 ㅎ)


3. In-App Purchasing Unity Plug-In 설치

다운 받으신 파일을 압축해제 해 보면 DeviceMessaging, GameCircle, In-App-Purchasing 등 아마존에서 제공되는 SDK가 모두 포함 되 있습니다. 이 중 In-App-Purchasing/plugins/unity/AmazonIAP.unitypackage 를 해당 프로젝트에서 Import 합니다.


4. AndroidManifest.xml 파일 생성 및 설정



패키지를 Import 하면, 유니티 상단 메뉴에 Amazon 탭이 생깁니다. Amazon 탭에서 Generate AndroidManifest.xml File... 을 선택하시면 Assets 폴더 내에 Plugins/Android/AndroidManifest.xml 파일이 생성됩니다. 이 작업은 아마존 인앱구매 창의 액티비티를 AndroidManifest.xml 에 추가하기 위함입니다. Plugins/Android/AndroidManifest.xml 파일이 있으면 안드로이드 빌드 시 해당 파일로 AndroidManifest.xml 이 생성됩니다. 

(이 때, 다른 작업으로 이미 AndroidManifest.xml 파일을 생성하셨다면 필요한 퍼미션이나 액티비티들을 복사 해 두셨다가 Generate AndroidManifest.xml File... 후에 다시 추가 해 주셔야 합니다.)


그리고 혹시나 AndroidManifest.xml 파일에 다음 퍼미션이 추가 되 있지 않다면 반드시 추가 해 주시기 바랍니다. (이게 없으면, 구매 완료를 알려주지 않아요.)

<receiver android:name="com.amazon.inapp.purchasing.ResponseReceiver">
    <intent-filter>
        <action android:name="com.amazon.inapp.purchasing.NOTIFY" android:permission="com.amazon.inapp.purchasing.Permission.NOTIFY"/>
    </intent-filter>
</receiver>



5. 인앱상품 모듈 구현

- 상품 목록 호출

AmazonIAP.initiateItemDataRequest(string[인앱상품 식별코드 리스트]);


- 상품 호출 이벤트

성공시

void itemDataRequestFinishedEvent( List<string> unavailableSkus, List<AmazonItem> availableItems )


AmazonItem.description ( 상품설명 )

AmazonItem.type ( Consumable, Entitlement, Subscription )

AmazonItem.price ( 상품 가격 )

AmazonItem.sku ( 인앱상품 식별코드 )

AmazonItem.smallIconUrl ( 상품 대표아이콘 ; 인앱상품 등록시 업로드 한 이미지 url )

AmazonItem.title ( 상품명 )


실패시

itemDataRequestFailedEvent()


- 상품 구매 요청

AmazonIAP.initiatePurchaseRequest(인앱상품 식별코드(SKU))


- 상품 구매 이벤트

성공시

void purchaseSuccessfulEvent( AmazonReceipt receipt )


AmazonReceipt.type ( Consumable, Entitlement, Subscription )

AmazonReceipt.token ( 인증 토큰 - 개별 인앱 인증 서버 구현시 필요 )

AmazonReceipt.sku ( 인앱상품 식별코드 )

AmazonReceipt.subscriptionStartDate ( Subscription 상품 시작일 )

AmazonReceipt.subscriptionEndDate ( Subscription 상품 종료일 )


실패시

void purchaseFailedEvent( string reason )



Entitlement, Subscriptions 모듈 구현은 해당 페이지를 참고하세요~ 너무 쉽게 잘 설명 되 있어서 추가로 설명드리지 않아도 되겠네요~

(사실 Consumable 상품만 해봐서 ^^)


Overview of Entitlements


Overview of Subscriptions




6. 인앱구매 테스트

Amazon In-App Purchasing 테스트의 경우, 실제로 앱이 등록되기 이전에 인앱상품 테스트를 해 볼 수 있도록 AmazonSDKTest 앱을 제공합니다. 구현하신 앱상에서 인앱 상품 구매를 요청하면 AmazonSDKTest 앱에서 특정폴더에 저장 된 json 파일을 읽어 상품을 확인하고 상품 화면을 보여주고, 구매가 이뤄지면 구매 성공여부도 AmazonSDKTest 에서 해당 앱으로 알려주게 됩니다.

- AmazonSDKTest를 설치

테스트 앱은 2. Amazon Mobile Apps-SDK 다운 때 받으신 파일 내에 있습니다. In-App-Purchasing/tools/AmazonSDKTest.apk

- json 파일을 설정

상품명, SKU, 가격 등의 정보가 입력 된 json 파일을 SD카드 Root 에 json 파일을 저장하시면 됩니다. (파일명은 amazon.sdktester.json)

json 파일의 형식대로 직접 입력하셔도 되지만 아마존 인앱상품 등록화면에서 추출하셔서 사용하면 더 편합니다.