UDN
Search public documentation:

MicroTransactionsKR
English Translation
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 플랫폼 인터페이스 프레임워크 > Micro-Transaction(소액 결제) 시스템

Micro-Transaction(소액-결제) 시스템


문서 변경내역: Jeff Wilson 작성. 홍성진 번역.

개요


Micro-Transaction(소액-결제)란 iOS 의 In-App Purchase(앱 안에서 구매) 등을 사용하여 게임 안에서 직접 (보너스 콘텐츠, 추가 레벨 등의) 아이템을 구매할 수 있도록 하는 것을 말합니다.

주: MicroTransaction 함수성은 현재 iOS 플랫폼에서 실행되는 게임으로만 제한되어 있습니다.

MicroTransactionBase


MicroTransactionBase (마이크로 트랜잭션 베이스) 클래스는 소액 결제를 담당하는 함수성이 들어있는 베이스 클래스입니다. PlatformInterfaceBase (플랫폼 인터페이스 베이스)를 상속한 다음 해당 클래스에 들어있는 델리게이트(delegate) 시스템을 활용합니다. (PC, iOS 등) 각 플랫폼 자체적으로 플랫폼별 구현이 들어있는 CloudStorageBase (클라우드 스토리지 베이스)를 확장하는 서브클래스를 갖고 있습니다.

프로퍼티

  • AvailableProducts 가용 제품 - 구매할 수 있는 제품 목록으로, MTD_PurchaseQueryComplete (구매 질의 완료) 콜백이 완료된 후 QueryForAvailablePurchases() (가용 구매 질의 함수)에 의해 채워집니다.
  • LastError 지난 에러 - 구매 과정에서 에러가 발생한 경우, 가장 최근 발생한 에러에 대한 설명 문자열(string) 입니다.
  • LastErrorSolution 지난 에러 솔루션 - 구매 과정에서 에러가 발생한 경우, 가장 최근 발생한 에러에 대한 해결책(이 있으면 그)에 대한 설명 문자열(string) 입니다.

함수

  • Init - 소액 결제 시스템을 initialize(초기화)시키기 위해 엔진이 호출하는 이벤트입니다.
  • QueryForAvailablePurchases - 시스템에 어떤 구매가 가능한지 질의하고, 그 질의가 성공적으로 착수되었는지를 반환합니다.
  • IsAllowedToMakePurchase - 사용자가 구매를 할 수 있도록 허용되었는지를 반환합니다.
  • BeginPurchase [Index] - AvailableProducts (가용 제품) 목록에서 제품을 구매하는 과정을 시작하고, 구매가 성공적으로 착수되었는지를 반환합니다.
    • Index - 구매할 제품의 AvailableProducts (가용 제품) 배열로의 인덱스를 나타내는 Int (정수형) 입니다.

델리게이트

EMicroTransactionDelegate enum (마이크로 트랜잭션 델리게이트 열거형)은 콜백을 받을 수 있는 델리게이트 종류에 대한 ID 를 정의합니다. 플랫폼 인터페이스 델리게이트 시스템을 사용하여 이들 각각에 델리게이트를 할당할 수 있습니다.

  • MTD_PurchaseQueryComplete - 이 ID 에 할당된 델리게이트는 QueryForAvailablePurchases() (가용 구매 질의 함수)를 통해 가용 제품에 대한 질의가 완료되면 실행됩니다.
    • bSuccessful - 참.
    • Data - 데이터를 담지 않습니다.
  • MTD_PurchaseComplete - 이 ID 에 할당된 델리게이트는 제품 구매 시도가 완료되면 실행됩니다.
    • bSuccessful - 참.
    • Data - IntValue (정수 값)은 EMicroTransactionResult enum (마이크로 트랜잭션 결과 열거형) 중 하나를, StringValue (문자열 값)는 BeginPurchase (구매 시작 함수)로 산 PurchaseInfo (구매 정보)의 Identifier (식별자)를 갖습니다. MTR_Failed (실패)가 반환되면, LastError (지난 에러)와 LastErrorSolution (지난 에러 솔루션)에는 가장 최근의 현지화되고 그럴싸한 솔루션이 채워집니다.

Product


각 가용 제품은 PurchaseInfo (구매 정보) 형태로 AvailableProducts (가용 제품) 배열에 저장됩니다. 이 구조체는 사용자에게 제품을 표시하고 구매할 수 있도록 하는 데 필요한 정보가 모두 담겨 있습니다.

  • Identifier - 제품에 대한 고유 식별자를 나타내는 문자열(string) 입니다.
  • DisplayName - 사용자에게 표시할 제품 이름을 담는 문자열(string) 입니다.
  • DisplayDescription - 사용자에게 표시할 제품 설명을 담는 문자열(string) 입니다.
  • DisplayPrice - 사용자에게 표시할 제품 가격을 담는 문자열(string) 입니다.

구현 세부사항


언리얼 엔진 3 iOS 게임용 In-App Purchase 를 셋업하고 사용하기 위한 일반적인 작업방식은 개략적으로 다음과 같습니다:

  1. iOS Provisioning Portal 에서 게임이 micro-transaction 을 사용하도록 되어 있는지 확인하고, iTunes Connect 어플리케이션을 통해 게임에 사용가능한 제품을 구성합니다. 자세한 정보는 Apple Developer Site 를 참고하시기 바랍니다.
  2. PlatformInterfaceBase (플랫폼 인터페이스 베이스) 클래스의 static GetMicroTransacrtionInterface() (마이크로 트랜잭션 인터페이스 구하기 함수)를 호출하여 MicroTransactionBase (마이크로 트랜잭션 베이스) 오브젝트로의 리퍼런스를 구하고, 제품 질의와 구매 콜백에 대한 델리게이트를 구성합니다. 이는 보통 PostBeginPlay() (플레이 시작 이후 함수)에 있거나, micro-transaction(소액 결제) 함수성이 위치한 곳에 따라 달라지는 initialization(초기화) 함수에 있습니다.
       var MicroTransactionBase MicroTrans;
    
       ...
    
       MicroTrans = class'PlatformInterfaceBase'.static.GetMicroTransactionInterface();
       MicroTrans.AddDelegate(MTD_PurchaseQueryComplete, OnProductQueryComplete);
       MicroTrans.AddDelegate(MTD_PurchaseComplete, OnProductPurchaseComplete);
       
    OnProductQueryComplete (제품 질의 완료시)와 OnProductPurchaseComplete (제품 구매 완료시)는 예제일 뿐으로, PlatformInterfaceDelegate (플랫폼 인터페이스) 델리게이트의 시그너처에 일치하는 함수 이름이면 무엇이든 될 수 있습니다.
       delegate PlatformInterfaceDelegate(const out PlatformInterfaceDelegateResult Result);
       
  3. 게임의 가용 제품 목록을 구하려면, MicroTransactionBase (마이크로 트랜잭션 베이스) 오브젝트에서 QueryForAvailablePurchases() (가용 구매 질의 함수)를 호출한 다음, 원하는 (, 거의 메뉴같은) 방법으로 사용자에게 AvailableProducts (가용 제품) 목록을 표시하는 작업을 처리하는 곳인 MTD_PurchaseQueryComplete (구매 질의 완료) 콜백을 기다립니다.
       MicroTrans.QueryForAvailablePurchases();
       
  4. 제품 목록을 얻고 나면, MicroTransactionBase (마이크로 트랜잭션 베이스) 오브젝트에서 BeginPurchase() (구매 시작 함수)를 호출, 구매할 제품의 인덱스를 전달하여 구매할 수 있습니다. 이 작업은 보통 사용자가 메뉴의 버튼을 탭하면 이루어 집니다.
       MicroTrans.BeginPurchase(0);
       
    이렇게 하면 AvailableProducts (가용 제품) 목록의 첫 (인덱스 0) 제품을 구매 시도합니다.

기본 구현은 UDKBase\Classes\CloudMenuMicroTransaction.uc 스크립트에서 찾아보실 수 있습니다.