🎯 Gato GraphQL için AppSumo kampanyası yürütmek, Gato GraphQL ve Lemon Squeezy ile
Gato GraphQL bugün AppSumo'da yayına giriyor! 🙌
Bir gereklilik olarak, Gato GraphQL ekibinin AppSumo'ya 10.000 kullanım kodu göndermesi gerekiyordu. Bu kodlar, AppSumo (kullanıcının ürün için ödeme yaptığı yer) ile Gato GraphQL (kullanıcının eklentiyi indirdiği yer) arasındaki köprüdür.
Kullanıcı kodları kullanmak için gatographql.com'a geldiğinde, ilgili bir "%100 indirim kodu" üretiriz (yalnızca bir kez kullanılabilir ve yalnızca o belirli ürünle sınırlı) ve kullanıcının indirim kodunu kullanarak eklentiyi "satın almasını" sağlarız.
Binlerce indirim kodunun önceden oluşturulması ve marketplace sağlayıcımız Lemon Squeezy'de saklanması gerekiyordu.
Lemon Squeezy, API'si aracılığıyla indirim oluşturmaya olanak tanır. Gato GraphQL bir HTTP Client'a sahip olduğundan, Lemon Squeezy API'sine bağlanan ve binlerce indirim kodu oluşturan bir GraphQL query çalıştırdık. (Başka bir deyişle, Gato GraphQL kendi AppSumo kampanyasını yürütüyor 😆)
AppSumo için 10.000 kullanım kodu şu GraphQL query çalıştırılarak oluşturuldu:
İlgili indirim kodları şu GraphQL query çalıştırılarak oluşturuldu:
İlk query çok basittir. İkinci query biraz daha karmaşıktır. Daha ayrıntılı inceleyelim.
İndirim kodunun oluşturulması
GraphQL query, indirim kodunu ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 karakterlerini kullanarak rastgele bir dize olarak oluşturmak için _generateRandomString alanını kullanır.
Koda ayrıca belirli bir ürün ve katmanla eşleşmesi için bir namespace öneki eklenir ($codePrefix değişkeni aracılığıyla).
Örneğin, APSMV1T1 namespace'i şu anlama gelir:
- AppSumo kampanyası
- Variation 1 ürünü
- Tier 1
Tüm indirim kodlarına ayrıca Lemon Squeezy panosunda bulmamıza yardımcı olacak benzersiz bir açıklayıcı isim verilir:
Appsumo campaign #1Appsumo campaign #2Appsumo campaign #3- ...
Appsumo campaign #{recordNumber}
Ardından Appsumo campaign # araması yaparak kodları görüntüleyebiliriz:

Bunlardan herhangi birine tıklandığında, tek bir ürün ve varyasyona uygulandığını görürüz:

Bash betiği aracılığıyla query'yi birden fazla kez çalıştırma
Query, her biri tek bir indirim kodu oluşturan 100 asenkron HTTP isteğini (varsayılan olarak) LemonSqueezy API'sine karşı çalıştırır. Bu nedenle, query çalıştırıldığında 100 indirim kodu üretilir.
10.000 isteğin tamamını aynı anda çalıştırmıyoruz çünkü belirli bir noktada (kesinlikle 500 çağrıda) LemonSqueezy API'si "Too many requests" hatası üretiyor.
Bu nedenle query'nin çalıştırılmasını 100'er istek halinde toplu işlemlere bölüyoruz ve aralarına bir gecikme ekliyoruz.
İlk adım, WordPress sitemizde bir persisted query oluşturmak, query'yi kopyalayıp yapıştırmak ve yayımlamaktır:

Yayımlandıktan sonra, GraphQL değişkenlerini persisted query URL'sine parametre olarak sağlayarak curl kullanarak bir bash betiği içinde persisted query'yi istediğimiz zaman çalıştırabiliriz.
Bu toplu betik, persisted query'yi 100 kez çalıştırır (100 x 100 = 10.000), her isteğe uygun değişkenleri iletir ve aralarında 30 saniye bekler (ilk 300 indirim kodu için kod şu şekildedir):
curl --user "{username}:{applicationPassword}" "https://my-wp-site.com/graphql-query/create-redemption-codes-for-appsumo-in-lemonsqueezy/?codePrefix=APSMV1T1&storeID={storeId}&variantIDs[]={productVariantId}&lemonSqueezyAccessToken={accessToken}&postId={postId}"
sleep 30
curl --user "{username}:{applicationPassword}" "https://my-wp-site.com/graphql-query/create-redemption-codes-for-appsumo-in-lemonsqueezy/?firstRecordNumber=101&codePrefix=APSMV1T1&storeID={storeId}&variantIDs[]={productVariantId}&lemonSqueezyAccessToken={accessToken}&postId={postId}"
sleep 30
curl --user "{username}:{applicationPassword}" "https://my-wp-site.com/graphql-query/create-redemption-codes-for-appsumo-in-lemonsqueezy/?firstRecordNumber=201&codePrefix=APSMV1T1&storeID={storeId}&variantIDs[]={productVariantId}&lemonSqueezyAccessToken={accessToken}&postId={postId}"
# ...Oluşturulan tüm kodların toplanması
WordPress sitemizde çalıştığımız için, yeni oluşturulan tüm indirim kodlarını toplamak amacıyla kolaylıkla bir gönderi oluşturabiliriz.
Bir $postId parametresi sağlandığında, query her çalıştırıldığında yeni 100 kodu o gönderinin sonuna ekler.

Bash betiğinin çalıştırılması tamamlandığında, gönderi 10.000 kodun tamamını içerecektir.
Görev tamamlandı
İlk query'yi çalıştırdım, 10.000 rastgele dizenin tamamını kopyaladım, yeni bir codes.csv dosyasına yapıştırdım ve AppSumo'ya gönderdim.
İkinci query'yi çalıştırdım, 10.000 indirim kodunu kopyaladım ve kullanıcının eklentiyi indirebilmesi için uygulamamın mantığına yapıştırdım.
Gato GraphQL, AppSumo kampanyasına hazır.
Bize şans dilerin 🙏