Mua hàng trong trò chơi

Bạn có thể tạo doanh thu bằng cách cung cấp cho người dùng tùy chọn mua hàng trong trò chơi. Ví dụ: họ có thể mua thêm thời gian để hoàn thành cấp độ hoặc phụ kiện cho nhân vật của mình. Để làm việc này:

Tiền tệ cổng thông tin

Yan là tiền tệ cổng thông tin của nền tảng Yandex Games, dùng để thanh toán các giao dịch mua trong trò chơi. Yan được lưu trữ trên một số dư chung cho tất cả các trò chơi mà người chơi có thể nạp thông qua thẻ ngân hàng. Tỷ giá của Yan so với rúp là tỷ giá động.

Ghi chú

Đối với các khoản thanh toán quốc tế, hệ số quy đổi giữa Yan và đơn vị tiền tệ sẽ phụ thuộc vào quốc gia của người chơi.

Bạn có thể nạp số dư:

  • ở đầu danh mục;
  • trong hồ sơ người chơi;
  • trong quá trình mua hàng trong trò chơi.

Người dùng cũng có thể nhận Yan dưới dạng thưởng tham gia các chương trình khuyến mãi hoặc mua các gói cố định.

Cả người dùng đã đăng nhập vào Yandex lẫn chưa đăng nhập đều có thể thực hiện mua hàng trong trò chơi. Người dùng có thể đăng nhập ngay trong khi chơi, kể cả ngay lúc tiến hành thanh toán.

Trình tự và điều kiện trả thù lao bản quyền cho nhà phát triển sẽ không thay đổi liên quan đến việc giới thiệu tiền tệ cổng thông tin.

Điều kiện

Yêu cầu kết nối mua hàng phụ thuộc vào nơi đăng ký pháp lý của doanh nghiệp bạn.

Để thiết lập và kiểm thử mua hàng, bạn cần ký "Deed of Transfer of Non-exclusive Rights to Use the Game".

Sau khi thêm tính năng mua hàng và xuất bản bản nháp trò chơi, hãy gửi email yêu cầu mẫu biên bản đến games-partners@yandex-team.com. Trong thư, nhất định phải ghi rõ tên và mã định danh (ID) của trò chơi.

Chúng tôi sẽ gửi cho bạn mẫu "Deed of Transfer of Non-exclusive Rights to Use the Game". Bạn cần điền thông tin, ký tên và gửi lại bản scan (hoặc ảnh chất lượng tốt) để xác nhận.

Chỉ sau khi chúng tôi nhận được biên bản đã ký, bạn mới có thể thiết lập và kiểm thử mua hàng trong game.

Sau khi thêm tính năng mua hàng và xuất bản bản nháp trò chơi, hãy gửi email yêu cầu kết nối mua hàng đến games-partners@yandex-team.com. Trong email, nhất định phải ghi rõ tên và mã định danh (ID) của trò chơi, cũng như quốc gia nơi doanh nghiệp bạn đăng ký.

Quy trình mua hàng

Bạn có thể kích hoạt mua hàng trong trò chơi bằng phương thức sau:

ysdk.payments.create_purchase(callback, options)

callback — function — callback của phương thức đã được gọi. Có dạng:

function(self, purchase: table|nil, signature: string|nil): nil
  • purchase: table — thông tin về giao dịch mua. Bao gồm các thuộc tính:
    • product_id: string — mã định danh sản phẩm.
    • purchase_token: string — token dùng cho giao dịch mua.
    • developer_payload: string|nil — dữ liệu bổ sung về giao dịch mua.
  • signature: string|nil — dữ liệu giao dịch mua và chữ ký dùng để kiểm tra tính xác thực của người chơi.

options — các tham số của phương thức. Bao gồm các thuộc tính:

  • id: string — mã định danh sản phẩm, được chỉ định trong bảng điều khiển nhà phát triển.
  • developer_payload: string — tham số tùy chọn. Thông tin bổ sung về giao dịch mua mà bạn muốn gửi đến máy chủ của mình (sẽ được truyền trong tham số signature).
  • signed: boolean|nil — tham số tùy chọn. Được sử dụng để bảo vệ trò chơi khỏi gian lận.

Ví dụ

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

Lấy danh sách các mặt hàng đã mua

Để kiểm tra những giao dịch mà người chơi đã thực hiện, hãy sử dụng phương thức sau:

ysdk.payments.getPurchases(
    callback: function,
    options : {
        signed: boolean|nil
    }
)

callback — function — callback của phương thức đã được gọi. Có dạng:

function(self, purchase: Purchase[]|nil, signature: string|nil): nil
  • Purchase — thông tin về giao dịch mua. Bao gồm các thuộc tính:

    • product_id: string — mã định danh sản phẩm.
    • purchase_token: string — token dùng để xác nhận giao dịch mua.
    • developer_payload: string|nil — dữ liệu bổ sung về giao dịch mua.
  • signature: string|nil — dữ liệu về giao dịch mua và chữ ký dùng để xác minh tính xác thực của người chơi.

*Ví dụ

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

Lấy danh mục tất cả các sản phẩm

Để lấy danh sách các mua hàng có sẵn và giá của chúng, hãy sử dụng phương thức ysdk.payments.getCatalog().

ysdk.payments.getCatalog(callback: function)

callback — function — callback của phương thức được gọi. Có dạng:

function(self, products: Product[]|nil): nil
  • products: table[] — thông tin về sản phẩm. Bao gồm các thuộc tính:
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
        }
    },
    ...
]

Ví dụ

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

Có hai loại giao dịch mua hàng: hàng không tiêu hao (chẳng hạn như để tắt quảng cáo) và hàng tiêu hao (chẳng hạn như để mua tiền trong trò chơi).

Để xử lý các giao dịch mua hàng không tiêu hao, hãy sử dụng phương thức ysdk.payments.get_purchases().

Để xử lý các giao dịch mua hàng tiêu hao, hãy sử dụng phương thức ysdk.payments.consume_purchase().

ysdk.payments.consume_purchase(purchase_token: string)

Chú ý

Sau khi gọi phương thức ysdk.ayments.consume_purchase() giao dịch mua hàng đã xử lý sẽ bị xóa vĩnh viễn. Để thực hiện việc này, trước tiên bạn nên sửa đổi dữ liệu người chơi thông qua phương thức ysdk.player.set_stats() hoặc ysdk.player.increment_stats() và sau đó xử lý giao dịch mua hàng.

Ví dụ

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

Kho lưu trữ