游戏内购买

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

门户货币

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 —— 可选参数。用于防止游戏作弊。

示例

 1function buy_item(id)
 2  ysdk.payments.create_purchase(
 3    function(self, purchase, signature)
 4      if purchase then
 5        print(purchase.product_id, signature)
 6      end
 7    end,
 8    { id, signed = true }
 9  )
10end

获取已购项目列表

要了解玩家已经进行了哪些购买,请使用以下方法:

1ysdk.payments.getPurchases(
2    callback: function,
3    options : {
4        signed: boolean|nil
5    }
6)

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 —— 关于购买的数据以及用于验证玩家真实性的签名。

示例

1function display_puchases()
2  ysdk.payments.get_purchases(function(self, purchases)
3    if purchases then
4      for k, v in pairs(purchases) do print(k, v) end
5    end
6  end)
7end

获取所有产品的目录

要获取可用购买项及其价格的列表,请使用方法 ysdk.payments.getCatalog().

ysdk.payments.getCatalog(callback: function)

callback —— function —— 被调用方法的回调。格式如下:

function(self, products: Product[]|nil): nil
  • products: table[] —— 商品信息。包含以下属性:
 1products = [
 2    {
 3        id: string,
 4        title: string,
 5        description: string,
 6        image_uri: string,
 7        price: string,
 8        price_value: string,
 9        price_currency_code: string,
10        price_currency_image: {
11            small: string,
12            medium: string,
13            svg: string
14        }
15    },
16    ...
17]

示例

1function display_shop()
2  ysdk.payments.get_catalog(function(self, products)
3    if products then
4      for k, v in pairs(products) do print(v.title, v.price, v.description) end
5    end
6  end)
7end

处理购买并扣除游戏货币

有两种类型的购买:永久性(例如为了禁用广告的购买)和消耗性(例如消耗游戏货币的购买)。

要处理永久性购买,请使用 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()方法编辑玩家数据,然后再处理购买。

示例

 1function buy_item(id)
 2  ysdk.payments.create_purchase(
 3    function(self, purchase)
 4      if purchase then
 5        ysdk.payments.consume_puchase(purchase.purchase_token)
 6      end
 7    end,
 8    { id }
 9  )
10end

存储库
上一篇
下一篇