게임 내 구매
사용자에게 게임 내 구매 옵션을 제공하여 수익을 올릴 수 있습니다. 예를 들어, 레벨을 완료하는 데 필요한 추가 시간이나 캐릭터의 액세서리를 구매할 수 있습니다. 이렇게 하려면 다음과 같이 하세요.
- Yandex Games 개발자 대시보드에서 게임 내 구매를 활성화합니다.
- 구매와 함께 작동하도록 SDK를 구성합니다.
포털 화폐
얀(Yan)은 Yandex Games 플랫폼의 포털 화폐로, 인앱구매 결제에 사용됩니다. 얀은 모든 게임에서 통합된 플레이어 잔고에 보관되며, 신용카드로 충전할 수 있습니다. 얀과 루블 간의 환율은 변동형입니다.
참고
국제 결제의 경우, 얀의 환율은 플레이어의 국가에 따라 다릅니다.
잔고는 다음에서 충전할 수 있습니다:
- 카탈로그 상단에서
- 플레이어 프로필에서
- 게임 내 구매 중
사용자들은 프로모션에 참여하거나 고정 패키지를 구매하여 추가로 얀을 받을 수도 있습니다.
Yandex에 로그인한 사용자뿐만 아니라 비로그인 사용자도 인앱 결제를 할 수 있습니다. 사용자는 게임을 하는 도중, 특히 결제를 진행하는 순간에도 로그인할 수 있습니다.
포털 화폐 도입과 관련하여 개발자에게 지급되는 라이선스 보상의 절차 및 조건은 변경되지 않습니다.
조건
구매 연결 요구 사항은 귀하의 법인 거주지에 따라 다릅니다.
구매를 설정하고 테스트하려면 "Deed of Transfer of Non-exclusive Rights to Use the Game"에 서명해야 합니다.
구매 추가 및 게임 초안 게시 후, 확인서 양식 요청 이메일을 games-partners@yandex-team.com으로 보내주세요. 이메일에는 반드시 게임 이름과 식별자(ID)를 기재해야 합니다.
회신으로 "Deed of Transfer of Non-exclusive Rights to Use the Game" 양식을 받게 됩니다. 이 양식을 작성, 서명한 뒤 고해상도 스캔본(또는 사진)을 회신 메일로 보내주셔야 합니다.
서명된 확인서를 받은 후에만 인앱 구매의 설정 및 테스트가 가능합니다.
구매 추가 및 게임 초안 게시 후, 구매 연결 요청 이메일을 games-partners@yandex-team.com으로 보내주세요. 이메일에는 반드시 게임 이름, 식별자(ID), 그리고 귀하 법인의 거주 국가를 기재해야 합니다.
구매 프로세스
인앱 결제를 활성화하려면 다음 메서드를 사용하세요:
ysdk.payments.create_purchase(callback, options)
callback
— function — 호출된 메서드의 콜백입니다. 형태는 다음과 같습니다:
function(self, purchase: table|nil, signature: string|nil): nil
purchase: table
— 구매 정보입니다. 다음과 같은 속성을 포함합니다:product_id: string
— 상품 식별자.purchase_token: string
— 구매자에게 구매를 사용할 수 있는 권한을 부여하는 토큰입니다.developer_payload: string|nil
— 구매에 대한 추가 정보입니다.
signature: string|nil
— 구매 데이터와 서명은 플레이어의 진위 확인을 위해 사용됩니다.
options
— 메서드의 파라미터입니다. 다음과 같은 속성을 포함합니다:
id: string
— 개발자 콘솔에 설정된 상품 식별자입니다.developer_payload: string
— 선택적 파라미터입니다. 구매와 관련된 추가 정보를 입력할 수 있으며, 이 값은 signature 파라미터에 포함되어 서버로 전송됩니다.signed: boolean|nil
— 선택적 파라미터입니다. 게임에서 해킹이나 부정 행위로부터 보호하기 위한 용도입니다.
예시
function buy_item(id)
ysdk.payments.create_purchase(
function(self, purchase, signature)
if purchase then
print(purchase.product_id, signature)
end
end,
{ id, signed = true }
)
end
구매한 아이템 목록 가져오기
플레이어가 이미 어떤 구매를 했는지 확인하려면 다음 메소드를 사용하세요:
ysdk.payments.getPurchases(
callback: function,
options : {
signed: boolean|nil
}
)
callback
— function — 호출된 메소드의 콜백. 형태는 다음과 같습니다:
function(self, purchase: Purchase[]|nil, signature: string|nil): nil
-
Purchase
— 구매 정보입니다. 다음과 같은 속성을 포함합니다:product_id: string
— 상품 식별자입니다.purchase_token: string
— 구매를 사용하는 토큰입니다.developer_payload: string|nil
— 구매에 대한 추가 데이터입니다.
-
signature: string|nil
— 구매 데이터와, 플레이어의 신뢰성을 검증하기 위한 서명입니다.
예시
function display_puchases()
ysdk.payments.get_purchases(function(self, purchases)
if purchases then
for k, v in pairs(purchases) do print(k, v) end
end
end)
end
모든 제품 카탈로그 가져오기
구매 가능한 항목과 각각의 가격 목록을 가져오려면 ysdk.payments.getCatalog()
메서드를 사용하세요.
ysdk.payments.getCatalog(callback: function)
callback
— function — 호출된 메서드의 콜백입니다. 형태는 다음과 같습니다:
function(self, products: Product[]|nil): nil
products: table[]
— 상품 정보. 다음 속성을 포함합니다:
products = [
{
id: string,
title: string,
description: string,
image_uri: string,
price: string,
price_value: string,
price_currency_code: string,
price_currency_image: {
small: string,
medium: string,
svg: string
}
},
...
]
예시
function display_shop()
ysdk.payments.get_catalog(function(self, products)
if products then
for k, v in pairs(products) do print(v.title, v.price, v.description) end
end
end)
end
구매 처리 및 게임 내 통화 적립하기
구매에는 영구 구매(예: 광고 비활성화)와 소모성 구매(예: 게임 내 화폐)의 두 가지 유형이 있습니다.
영구 구매를 처리하려면 ysdk.payments.get_purchases()
메서드를 사용합니다.
소모성 구매를 처리하려면 ysdk.payments.consume_purchase()
메서드를 사용합니다.
ysdk.payments.consume_purchase(purchase_token: string)
알림
ysdk.payments.consume_purchase()
메서드를 호출하면 처리된 구매는 영구 삭제됩니다. 따라서 먼저 ysdk.player.set_stats()
또는 ysdk.player.increment_stats()
메서드를 사용하여 플레이어 데이터를 수정한 후 구매를 처리해야 합니다.
예시
function buy_item(id)
ysdk.payments.create_purchase(
function(self, purchase)
if purchase then
ysdk.payments.consume_puchase(purchase.purchase_token)
end
end,
{ id }
)
end