유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

  • Unity 사용자 매뉴얼 2021.2
  • Unity 서비스
  • Unity IAP
  • 크로스 플랫폼 가이드
  • 구매 실패 처리

구매 처리

거래 복구

구매 실패 처리

네트워크 장애, 결제 오류, 기기 설정 등 다양한 이유로 구매가 실패할 수 있습니다. 모든 스토어에서 실패에 대한 상세한 정보를 제공하지는 않지만, 구매 실패 이유를 확인하여 사용자에게 조치를 취하도록 안내하는 것이 좋습니다.

/// <summary>
/// Called when a purchase fails.
/// </summary>
public void OnPurchaseFailed (Product i, PurchaseFailureReason p)
{
    if (p == PurchaseFailureReason.PurchasingUnavailable) {
        // IAP may be disabled in device settings.
    }
}

구매 처리

거래 복구

다이렉트 포팅으론 IAP Product 가 초기화 되지않는다.

Google Play Store  알파테스트 링크를 받아 앱설치해야 정상 작동한다.

Unity - Manual: Configuring for Google Play Store

Configuring for Apple App Store and Mac App Store Configuring for Windows Store Configuring for Google Play Store Introduction This guide describes the process of establishing the digital records and relationships necessary for a Unity game to interact wit

docs.unity3d.com

사용 유니티 버전 : 2019.2.18f1

유니티에서 IAP (인앱결제)를 적용하는 방법입니다. 

예전에는 인앱결제를 만들려면 해당 코드를 작성해야 했지만 

지금은 코드리스 IAP라는 것이 생겨서 손쉽게 IAP를 적용 할 수 있게되었습니다. 

1. 유니티에서 In-App Purchasing 활성화 하기 

먼저 유니티 Services 에서 In-App Purchasing 을 선택합니다.

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu
유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

처음 Services 에 있는 항목의 사용을 선택하면 13세 이하 어린이를 대상으로 하는 앱인지에 대한 확인을 합니다. 

만들려는 앱의 성격에 맞게 체크 또는 체크 없이 Continue를 눌러줍니다.

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

이제 중간쯤에 있는 import 버튼을 눌러 IAP 플러그인을 설치합니다. 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

Import를 누르면 설치할거냐고 묻는 창이 나오고 Install을 누르면 설치 창이 나타납니다. 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

Next 클릭

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

Import 클릭 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

Install Now 클릭

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

2/2 단계 - Next 클릭 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

Import 클릭 후 인스톨 한번더 클릭

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

설치 후 인스톨러 스크립트를 지우고 닫기 클릭

여기까지 하면 일단 필요한 설치는 끝났습니다. 

이제 IAP 관련된 설정을 해줘야 합니다. 

2. IAP 설정 하기 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

유니티 -> Window -> Unity IAP -> Receipt Validation Obfuscator 를 선택합니다. 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

위 스샷과 같은 창이 뜨는데 2번 부분에 Public Key를 입력해줘야 합니다. 

Public Key는 구글 플레이 콘솔에서 가져와야 합니다. 

구글 플레이 콘솔에서 애플리케이션 만들기를 통해 인앱결제를 넣을려고 하는 앱을 만들어 줍니다. 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

왼쪽 카테고리에서 서비스 및 API 를 선택 위 스샷에 붉은색 박스안에 보시면 자신의 라이센스 키가 있습니다. 

라이센스 키를 복사하여 아까 유니티의 Receipt Validation Obfuscator 에 붙여넣기 합니다.

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

키를 붙여넣기 한 후 Obfuscate Google Play License Key 버튼을 클릭합니다. 

Receipt Validation Obfuscator 창에 4번의 Open Analytics Dashboard를 클릭해서 유니티 대쉬보드로 들어갑니다.

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

Analytics Settings에 라이센스 키를 붙여넣고 저장

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

다시 유니티로 돌아와서 Sevices -> In-App Purchasing 의 Options 에 라이센스 키를 붙여넣기 한 후 Verify 클릭

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

위 스샷처럼 되었으면 IAP 설정은 완료되었습니다. 

3. 결제 상품 설정 및 IAP 버튼 만들기 

여기부터 진행을 하려면 구글 플레이 콘솔에 개발하려는 앱의 

스토어 등록정보, 컨텐츠 등급, 가격 및 배포에 필수 항목을 입력한 상태여야 합니다. 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

구글 플레이 콘솔에서 인앱 상품 - > 관리되는 제품 카테고리를 선택합니다. 

관리되는 제품 만들기를 통해 인앱 상품을 만들어 줍니다. 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

제품 ID는 해당 상품을 불러오는 코드입니다. 

상품의 이름과 설명을 입력하고 상태를 활성 APK 상태로 변경, 하단의 가격을 설정한 후 저장합니다. 

다시 유니티로 돌아와서 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

Window -> Unity IAP -> IAP Catalog 를 선택합니다. 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

ID에 아까 구글 플레이 콘솔에서 만든 인앱 상품의 제품 ID를 입력해 줍니다. 

만든 상품이 여러개 일 경우 Add Product 버튼을 눌러 Product 개수를 늘려 하나하나 입력해주면 됩니다. 

하단의 Automatically initialize UnityPurchasing 을 체크합니다. 

입력이 끝났으면 창을 닫고 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

Window -> Unity IAP -> Create IAP Button 눌러 버튼을 생성합니다. 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

생성한 버튼의 Inspector를 보면 IAP Button에 Product ID가 있습니다. 

선택하보면 아까 Catalog에 입력한 ID를 확인 할 수 있습니다. 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

해당 상품의 구입 완료 또는 구입 실패시에 따른 처리는 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

위 부분에서 처리하면 됩니다. 

유니티 인앱결제 오류 - yuniti in-aebgyeolje olyu

유니티에서 실행 후 버튼을 눌러보면 위 그림과 같이 에디터 상태에서의 상품 구입 또는 취소를 선택할 수 있고 

구입 완료 시 처리에 대한 부분을 확인 할 수 있습니다. 

모바일에서는 해당 앱에 테스터로 등록되어 있는 계정으로 테스트 시 결제 화면에 테스트 결제임이 표시됩니다.