결제

Classic/VPC 환경에서 이용 가능합니다. GAMEPOT SDK에서 제공하는 인앱 결제 기능을 사용하여 게임 내 아이템을 판매할 수 있습니다. 결제 전에 스토어 별 환경 설정에 해당 스토어에 맞도록 설정해야 합니다. 또한, 대시보드 > 결제 > 인앱에 아이템이 추가되지 않았을 경우 'ProductID not found' 라는 오류가 발생됩니다.

Android

(AOS) 인앱 정보 가져오기

결제하실 때에 화면에 결제 정보와 현지 통화 정보를 표시해야 합니다. 아래 함수를 통해서 현재 결제 통화나 이름 등을 가져올 수 있습니다. 만일 정상적으로 가져오지 못하는 경우 콘솔 세팅을 확인해 주시기 바랍니다.

import com.nbase.sdk.Store

NBase.getProductItems() {products, e -> 
    if (e != null) {
        Log.e("NBase", e.message)
    } else {
        // 인앱 아이템 정보
        Log.e("NBase", products)
    }
}
  • Callback

Key
Type
Description

id

String

제품 ID

productName

String

제품 이름

title

String

제품 타이틀

price

Float

제품 가격

localizedPrice

Float

현지화된 가격

productId

String

제품 고유 ID

productType

String

제품 타입

productDescription

String

제품 설명

currency

String

통화 단위

(AOS) 결제 요청

가져온 인앱 정보에 productId 로 결제를 요청하실 수 있습니다.

import com.nbase.sdk.Store

NBase.purchase(activity, Store.GOOGLE, productId, metadata, options) { purchase, e -> 
    if (e != null) {
        Log.e("NBase", e.message)
    } else {
        Log.e("NBase", purchase)
    }
}
  • Parameter

Key
Type
Description
Required

activity

Activity

현재 액티비티

O

storeId

Store

스토어 ID (아래 표 참고)

O

productId

String

상품ID (대시보드 → 결제 → 인앱 아이템)

O

metadata

String

메타데이터

X

options

String

결제 옵션 기능

X

Key
Description

Store.GOOGLE

구글 스토어

Store.ONE

원 스토어

Store.GALAXY

갤럭시 스토어

Store.AMAZON

아마존 스토어

Store.HUAWEI

화웨이 스토어

  • Callback

Key
Type
Description

id

String

ID

orderId

String

주문 ID

storeId

String

스토어 ID

productId

String

상품 ID

billingKey

String

결제 키

signature

String

서명

originalJson

String

원본 JSON

developerPayload

String

개발자 페이로드

packageName

String

패키지명

isAcknowledged

bool

확인 여부

purchaseState

String

구매 상태

purchaseTime

String

구매 시간

quantity

String

수량

recurringState

String

반복 결제 상태

currency

String

통화

country

String

국가

paymentId

String

결제 ID

price

Float

가격

iapVersion

String

인앱결제 버전

playerId

String

플레이어 ID

serverId

String

서버 ID

level

Int

레벨

userdata

String

사용자 데이터

metadata

String

메타데이터

options

String

옵션

authCode

String

인증 코드

iOS

(iOS) 인앱 정보 가져오기

결제하실 때에 화면에 결제 정보와 현지 통화 정보를 표시해야 합니다. 아래 함수를 통해서 현재 결제 통화나 이름 등을 가져올 수 있습니다. 만일 정상적으로 가져오지 못하는 경우 콘솔 세팅을 확인해 주시기 바랍니다.

let products = NBase.getProductItems()
  • Callback

Key
Type
Description

id

String

제품 ID

productId

String

제품 고유 ID

productName

String

제품 이름

productType

String

제품 타입

currency

String

통화

price

Float64

제품 가격

localizedPrice

String

현지화된 가격

productDescription

String

제품 설명

(iOS) 결제 요청

가져온 인앱 정보에 productId 로 결제를 요청하실 수 있습니다.

NBase.purchase(productId: productId, metadata: metadata, options: options) { result in
    switch result {
    case .success(let data):
        NBase.showToast(message: data?.encodeToJson() ?? "")
    case .failure(let error):
        NBase.showToast(message: error.errorDescription ?? "")
    }
}
  • Parameter

Key
Type
Description
Required

productId

String

상품 ID (대시보드 > 결제 > 인앱 아이템)

O

metadata

String

메타데이터

X

options

String

결제 옵션 기능

X

  • Callback

Key
Type
Description

orderId

String

주문 ID

receipt

String

영수증

signature

String

서명

productId

String

상품 ID

storeId

String

스토어 ID

country

String

국가

quantity

Int

수량

paymentId

String

결제 ID

currency

String

통화

serverId

String

서버 ID

playerId

String

플레이어 ID

userdata

String

사용자 데이터

metadata

String

메타데이터

options

String

결제 옵션

authCode

String

인증 코드

level

Int

레벨

price

Float64

가격

Unity

(Unity) 인앱 정보 가져오기

결제하실 때에 화면에 결제 정보와 현지 통화 정보를 표시해야 합니다. 아래 함수를 통해서 현재 결제 통화나 이름 등을 가져올 수 있습니다. 만일 정상적으로 가져오지 못하는 경우 콘솔 세팅을 확인해 주시기 바랍니다.

NBaseSDK.NBase.getProductItems(Store.google.ToString(), (products, error) => 
{
    if (products != null && products.Count > 0)
    {
        // 제품 목록을 순회합니다.
        foreach (var product in products)
        {
            // 각 제품의 정보를 토스트 메시지로 보여줍니다.
            // 예시에서는 product.ToString()을 호출하고 있지만,
            // 실제로는 product의 구체적인 속성(예: 이름, 가격 등)을 표시할 수 있습니다.
            NBaseSDK.NBase.showToast(product.ToString());
        }
    }
    else
    {
        // 제품 목록이 비어있는 경우, 사용자에게 알립니다.
        NBaseSDK.NBase.showToast("제품 목록이 비어있습니다.");
    }
});
  • Callback

Key
Type
Description

Products[].id

string

제품 ID

Products[].title

string

제품 타이틀

Products[].productId

string

제품 고유 ID

Products[].productType

string

제품 타입

Products[].productName

string

제품 이름

Products[].productDescription

string

제품 설명

Products[].currency

string

통화 단위

Products[].price

float

제품 가격

(Unity) 결제 요청

가져온 인앱 정보에 productId 로 결제를 요청할 수 있습니다.

NBaseSDK.NBase.purchase(Store.google.ToString(), productId, metadata, options, (purchase, error) => 
{
    if (error != null)
    {
        Debug.Log(error.Message.ToString());
        return;
    }
    // 결제 성공
});
  • Parameter

Key
Type
Description
Required

storeId

string

스토어 ID (아래 표 참고)

O

productId

string

상품ID (대시보드 → 결제 → 인앱 아이템)

O

metadata

string

Metadata

X

options

string

결제 옵션 기능

X

Key
Description

Store.google.ToString()

구글 스토어

Store.one.ToString()

원 스토어

Store.galaxy.ToString()

갤럭시 스토어

Store.amazon.ToString()

아마존 스토어

Store.huawei.ToString()

화웨이 스토어

  • Callback

Key
Type
Description

storeId

string

상점의 고유 ID

paymentId

string

결제 ID

iapVersion

string

인앱 결제 버전

productId

string

제품 ID

billingKey

string

청구 키

signature

string

서명

originalJson

string

원본 JSON

orderId

string

주문 ID

developerPayload

string

개발자 페이로드

packageName

string

패키지 이름

isAcknowledged

bool

확인 여부

purchaseState

int

구매 상태

purchaseTime

long

구매 시간

price

float

가격

quantity

int

수량

currency

string

통화 단위

문제 해결

Q. ProductID not found 오류가 발생합니다. A. 대시보드 > 결제 > 인앱에 해당 상품 ID가 등록되어 있는지 확인해 주십시오.

Q. 결제가 진행되지 않습니다. A. 스토어별 환경 설정을 참고하여 해당 스토어에 맞는 설정이 완료되었는지 확인해 주십시오.

Q. (Android) java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/billingclient/api/BillingClient; A. 아래 코드를 추가해 주십시오.

<androidPackage spec="com.android.billingclient:billing:6.1.0" /> 

Q. (iOS) 인앱 정보를 가져올 수 없습니다. A. Apple Connect에 등록된 인앱 상품 정보와 앱 환경(Production/Sandbox)이 일치하는지 확인해 주십시오.

Last updated