Oyun içi satın alma

Oyuna satın alımlar ekleyin (örneğin, bir seviyeyi tamamlamak için ek süre veya oyun karakteri için aksesuarlar) ve gelir elde edin. Bunun için:

Satın Alma Süreci

Bir uygulama içi satın alımı şu yöntemle etkinleştirebilirsiniz:

ysdk.payments.create_purchase(callback, options)

callback — function — çağrılan metodun geri çağrımı. Şu şekilde görünür:

function(self, purchase: table|nil, signature: string|nil): nil
  • purchase: table — satın alma hakkında bilgi. Şu özellikleri içerir:
    • product_id: string — ürün ID'si.
    • purchase_token: string — satın alımın kullanımı için belirteç.
    • developer_payload: string|nil — satın alma ile ilgili ek veriler.
  • signature: string|nil — satın alma verileri ve oyuncunun kimliğinin doğrulanması için imza.

options — yöntemin parametreleri. Şu özellikleri içerir:

  • id: string — ürünün geliştirici konsolunda belirlenen kimliği.
  • developer_payload: string — isteğe bağlı parametre. Sunucunuza iletmek istediğiniz satın alma hakkında ek bilgi (signature parametresi ile iletilecektir).
  • signed: boolean|nil — isteğe bağlı parametre. Oyunun hilelere karşı korunması için tasarlanmıştır.

Örnek

 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 = id, signed = true }
 9    )
10end

Satın alınan ürünlerin listesini alma

Bir oyuncunun zaten hangi satın alımları yaptığını öğrenmek için şu yöntemi kullanın:

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

callback — function — çağrılan metodun callback'i. Şu şekilde görünür:

function(self, purchase: Purchase[]|nil, signature: string|nil): nil
  • Purchase — satın alma hakkında bilgi. Şu özellikleri içerir:

    • product_id: string — ürün ID'si.
    • purchase_token: string — satın almanın kullanılabilmesi için token.
    • developer_payload: string|nil — satın alma ile ilgili ek veriler.
  • signature: string|nil — oyuncunun kimliğinin doğrulanması için satın alma verileri ve imza.

Örnek

 1function display_purchases()
 2    ysdk.payments.get_purchases(
 3        function(self, purchases)
 4            if purchases then
 5                for k, v in pairs(purchases) do print(k, v) end
 6            end
 7        end,
 8        { signed = false }
 9    )
10end

Tüm ürünlerin kataloğunu alma

Mevcut satın alımların listesini ve fiyatlarını almak için şu yöntemi kullanın:

ysdk.payments.get_catalog(callback: function)

callback — function — çağrılan metodun callback'i. Şu şekilde görünür:

function(self, products: Product[]|nil): nil
  • products: table[] — ürünler hakkında bilgi. Şu özellikleri içerir:
 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]

Örnek

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

Satın almaların işlenmesi ve oyun içi para biriminin hesaba yüklenmesi

İki tür satın alma vardır:

  • Kalıcı (örneğin, reklamları devre dışı bırakma). Bunları işlemek için ysdk.payments.get_purchases() yöntemini kullanın.
  • Tüketilebilir (örneğin, oyun içi para birimi). Bunları işlemek için ysdk.payments.consume_purchase() yöntemini kullanın.
ysdk.payments.consume_purchase(purchase_token: string)

Dikkat

ysdk.payments.consume_purchase() yöntemi çağrıldıktan sonra, işlenen satın alma işlemi hiçbir kurtarma olasılığı olmadan silinir. Bu nedenle önce oyuncu verilerini ysdk.player.set_stats() veya ysdk.player.increment_stats() yöntemleriyle değiştirin ve ardından satın alma işlemini gerçekleştirin.

Kullanılan satın alma için ysdk.payments.consume_purchase() yöntemi, yalnızca tahakkuk eden ürün başarıyla kaydedildikten sonra çağrılmalıdır. Eklentinin güncel sürümü kaydetme sonucunu Lua'ya iletmez, bu nedenle bu işlem sırası geçici olarak eklenti API'si aracılığıyla uygulanamaz.

Satın almayı yeniden işlerken, ürünü iki kez tahakkuk ettirmemek için purchase_token değerini kontrol edin.

Kalıcı satın alımlar için, örneğin reklamları devre dışı bırakmak için, ysdk.payments.consume_purchase() yöntemini çağırmanıza gerek yoktur.


Depo