게임 내 구매

사용자에게 게임 내 구매 옵션을 제공하여 수익을 올릴 수 있습니다. 예를 들어, 레벨을 완료하는 데 필요한 추가 시간이나 캐릭터의 액세서리를 구매할 수 있습니다. 이렇게 하려면 다음과 같이 하세요.

포털 화폐

얀(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

저장소