游戏内购买

您可以通过为用户提供游戏内购买的选项来赚取收入。例如,他们可通过购买额外的时间来完成关卡或获得人物装饰。为此,您需要:

门户货币

Yan(扬)是 Yandex 游戏平台的门户货币,用于支付游戏内购买。扬币存储在玩家的统一账户余额中,可以通过银行卡充值。扬币与卢布的汇率是动态变化的。

备注

对于国际支付,扬币与本币的汇率会根据玩家所在的国家而定。

您可以通过以下方式充值余额:

  • 在目录顶部栏;
  • 在玩家个人资料页;
  • 在游戏内购买时。

用户也可以通过参与促销活动或购买固定礼包获得扬币奖励。

无论玩家是否在 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.ayments.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

存储库
上一篇
下一篇