Backend'inizden abonelik erişimini kontrol edin ve izin verin

Arka ucunuzdan, bir kullanıcının aktif aboneliğinin olup olmadığını kontrol etmek ve erişimi manuel olarak vermek için Adapty sunucu tarafı API’sini kullanın. Bu kılavuz en yaygın iki çağrıyı — getProfile ve grantAccessLevel — ele alır ve bir AI kodlama ajanının sizin için entegrasyonu nasıl yazabileceğini gösterir.

Tip

Bir AI kodlama ajanı mı kullanıyorsunuz? Başlığın altındaki Copy for LLM seçeneğine tıklayın ve bu sayfanın tamamını ajanınıza yapıştırın — ihtiyaç duyduğu çağrılar, alanlar ve dikkat edilmesi gereken noktalar orada mevcut.

Başlamadan önce

  • Gizli API anahtarı: App settings → General sayfasında, Secret key alanında bulabilirsiniz. Anahtarlar uygulamaya özeldir. Bir ortam değişkeninde saklayın (örneğin ADAPTY_SECRET_KEY) ve Authorization: Api-Key {key} olarak gönderin.
  • Temel URL: Tüm istekler https://api.adapty.io adresine gider.
  • Kullanıcıyı tanımlamanın bir yolu: adapty-customer-user-id (kendi kullanıcı kimliğiniz — yalnızca uygulamada kullanıcıları tanımlıyorsanız çalışır) veya adapty-profile-id (Adapty profil kimliği) gönderin. İkisi birbirinin yerine kullanılabilir; birini seçin.

Abonelik durumunu kontrol etme

Durumu kontrol etmek için GET yöntemiyle getProfile çağrısı yapın ve kullanıcı tanımlayıcısını header olarak geçirin — istek gövdesi gerekmez.

const res = await fetch("https://api.adapty.io/api/v2/server-side-api/profile/", {
  headers: {
    "Authorization": `Api-Key ${process.env.ADAPTY_SECRET_KEY}`,
    "adapty-customer-user-id": userId,
  },
});
const { data } = await res.json();

function hasActiveAccess(profile, accessLevelId = "premium") {
  const level = profile.access_levels?.find(a => a.access_level_id === accessLevelId);
  if (!level) return false;
  if (level.is_in_grace_period) return true;
  if (!level.expires_at) return true;             // lifetime / non-expiring
  return new Date(level.expires_at) > new Date(); // not expired yet
}

if (hasActiveAccess(data)) {
  // unlock premium features
}

SDK profilinin aksine, sunucu tarafı yanıtında is_active alanı bulunmaz. Durumu access_levels[].expires_at alanından kendiniz türetmeniz gerekir: null değeri süresiz erişim anlamına gelir, gelecekteki bir tarih aktif olduğunu, geçmişteki bir tarih ise sona erdiğini gösterir. is_in_grace_period durumunu hâlâ aktif olarak değerlendirin. Profil ve access level alanlarının tamamı için getProfile sayfasına bakın.

Erişimi manuel olarak ver

Satın alma olmaksızın ücretli özelliklerin kilidini açmak için — promosyon kodları, yatırımcı veya beta erişimi, destek talepleri — grantAccessLevel metodunu POST ile çağırın.

await fetch("https://api.adapty.io/api/v2/server-side-api/purchase/profile/grant/access-level/", {
  method: "POST",
  headers: {
    "Authorization": `Api-Key ${process.env.ADAPTY_SECRET_KEY}`,
    "adapty-customer-user-id": userId,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ access_level_id: "premium" }), // geçici erişim için "expires_at" ekleyin
});
  • Access level’ın kontrol panelinizde zaten mevcut olması gerekir (Access levels) — access_level_id yeni bir isim değil, mevcut access level’ın tanımlayıcısıdır.
  • Manuel olarak verilen erişimler analitikte görünmez. Yalnızca webhook entegrasyonunuza ve Event Feed’e iletilir; bu nedenle gelir ve dönüşüm grafikleri bunları yansıtmaz.

İstek ve yanıt ayrıntıları için grantAccessLevel sayfasına bakın.

AI kodlama ajanınızla geliştirin

AI kodlama ajanınıza bu kılavuzu ve API spesifikasyonunu Markdown olarak verin (herhangi bir sayfa URL’sine .md ekleyin), kullandığınız stack’i belirtin ve çağrıları yazdırmasına izin verin:

Örnek prompt:

Using the Adapty server-side API spec, write backend functions to check whether a
user has an active "premium" access level (GET /profile/, derive status from
expires_at — there's no is_active field) and to grant it (grantAccessLevel).
Authenticate with ADAPTY_SECRET_KEY and identify users by adapty-customer-user-id.

The agent writes the code, but it can’t run your backend or set your keys — you provide the secret key and the user identifiers.

Sınırlar

  • Oran sınırı: API anahtarı başına uygulanır ve uygulama başına atanır; bu nedenle her uygulama için geçerli tek bir değer yoktur — bkz. Oran sınırları. Bu, dakika başına bir bütçe değil, sürekli bir orandır ve bazı endpoint’ler daha düşük sınırlara sahiptir: createVirtualCurrencyTransaction varsayılan olarak uygulama başına dakikada 600 isteğe izin verir. Agentınıza 429 durumunda geri çekilme ile yeniden deneme yapmasını ve mevcut olduğunda Retry-After başlığını dikkate almasını söyleyin.
  • Uygulamaya özel anahtarlar: Her anahtar yalnızca bir uygulama için geçerlidir; uygulama başına doğru anahtarı kullanın.
  • Bir tanımlayıcı zorunludur: Her istek için adapty-customer-user-id veya adapty-profile-id gereklidir.