소셜 로그인/수업내용

Unity 수업내용 21.07.21. Unity IAP(인 앱 결제)

HappyFrog 2021. 7. 21. 15:25

IAP는 In App Purchase, 인 앱 결제(구매)를 뜻한다.

 

해당 수업은 GPGS로그인이 필요하므로 먼저 구현해둔 프로젝트를 사용하겠다.

 


  • 우선 Unity - General - Services를 눌러보자.
  • 그러면 유니티 에디터에 위 사진과 같은 탭이 뜰 것이다.

그리고 In-App Purchasing을 눌러주자. 그러면 팝업이 하나 뜰 것이다.

 

 

 

  • 이런식으로 진행이 되는데, 자신의 계정을 선택해주고 질문에 맞게 선택지를 골라주면 된다.

 

 

  • 마지막까지 왔다면 다음과 같은 창이 뜰텐데 In-App Purchasing Settings가 OFF상태일 것이다.
  • 클릭하여 On으로 바꿔주자.
  • 클리하면 여러가지 세팅이 바뀌고 임포팅되며 로딩시간이 있을것이다

 

 

1
2

 

  • 임포트가 완료되었다면 해당 창으로 바뀔것이다. 여기서 맨 위에 있는 Dashboard를 타고 들어가자.
  • Unity Dashboad - 내 앱 - Settings - Analytics Settings로 들어가자.
  • 그러면 상단에 Google License Key가 있을 것이다. 해당 키를 1번 사진의 빨간색으로 도배된 칸에 넣어주자.

 

 

  • 그리고 씬에서 오브젝트들을 생성해보자.
  • 여기서 게임오브젝트를 만들 때 IAP버튼을 달아야 한다.
    • => 해당 IAP버튼을 누르면 인 앱 결제로 인식하여 데이터를 앱스토어(애플이던 구글이던)쪽으로 보내기 때문.

 

 

  • 그리고 IAP컴포넌트의 IAP catalog를 누르면 위 사진과 같은 팝업이 뜬다.
  • 해당 팝업에서 결제 정보를 입력해야한다.
  • 여기서 ID는 구글 개발자 계정(Google Play Console)에서 결제정보의 ID와 일치해야한다.
    • =>나는 패키지 이름 + 상품 이름으로 작성했다.
  • 사진과 같이 간단하게 작성해주고 씬에서 Product ID를 눌러 생성해둔 카탈로그를 골라서 할당해주자.
  • 광고제거와 코인의 차이는 Consumable(소모품)과 Non Consumable(소모 불가)인데, 쉽게 말해서 여러번 살 수 있는 상품 or 한 번만 구매가능한 상품 의 차이일 뿐이다.
  • Type에서 상품에 맞게 설정해주면 된다.

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Purchasing;
using UnityEngine.Events;

public class IAPMain : MonoBehaviour
{
    public IAPButton btnCoin500;
    public IAPButton btnRemoveAds;

    void Start()
    {
        this.btnCoin500.onPurchaseComplete.AddListener(new UnityAction<Product>((product) =>
        {
            Debug.LogFormat("Success : Coin 500 : {0}", product.transactionID);
        }));

        this.btnCoin500.onPurchaseFailed.AddListener(new UnityAction<Product, PurchaseFailureReason>((product, reason) =>
        {
            Debug.LogFormat("Failed : Coin 500 : {0} // {1}", product.transactionID, reason);
        }));

        this.btnRemoveAds.onPurchaseComplete.AddListener(new UnityAction<Product>((product) =>
        {
            Debug.LogFormat("Success : Remove Ads : {0}", product.transactionID);
        }));

        this.btnRemoveAds.onPurchaseFailed.AddListener(new UnityAction<Product, PurchaseFailureReason>((product, reason) =>
        {
            Debug.LogFormat("Failed : Remove Ads : {0} // {1}", product.transactionID, reason);
        }));
    }


    void Update()
    {

    }
}
  • 그리고 코드는 굉장히 간단하게 작성했다.
  • 샀으면 샀다고, 실패했으면 실패했다고 뜨게 했다.

 

 

  • 그리고 Google Play Console에서 수익 창출 설정을 해준다.
    • =>나는 이미 한 상태이기 때문에 해당 창이 뜬다.

 

 

인앱 상품
상품 만들기

  • 이어서 제품 - 인앱 상품을 설정해준다.
  • 인앱상품 - 상품 만들기를 누르면 상품 만들기 창으로 넘어가는데, 여기서 제품 ID는 우리가 Unity Editor - IAP Button - IAP catalog 에서 만들어둔 ID를 입력해주고(일치해야한다.)
  • 이름과 설명을 모두 적어준 뒤 기본 가격을 설정해주면 된다.
  • 가격은 가격 설정을 눌러주면 가격 수정 창이 나오는데 여기서 설정해주면 된다.

 

자 이제 연동이 끝났으니 에디터에서 테스트해보자.

 

 

  • 상품을 누르면 FakeStore에서 코인 500을 살 것이냐고 물어보고 사겠다고 하면
  • 상품구매에 성공했다고 뜬다.

 


이제 빌드해서 테스트해보자.

빌드할 때는 결제자의 정보가 필요하므로 이전에 구현했던 GPGS의 로그인씬을 붙여서 빌드했다.


 

 

  • 로그인에 성공했다면 IAP씬으로 넘어갈 것이다.
  • IAP씬에서 구매버튼을 누르면 결제창이 뜨고 구매를 하면 오른쪽과 같이 개발자인 나에게 결제메일이 날아온다.
  • RemoveAds도 마찬가지.