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 alımları etkinleştirin — bunu önceden yapın, böylece moderasyonu açabilirsiniz.
- Geliştirici Konsolu'na satın alımları ekleyin.
- SDK'da satın alımlarla çalışma olanağını yapılandırın.
- Satın alımları test edin.
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.