Bayilik
Bir müşterinin bayi durumunu ve bayi programının kurulum genelindeki ayarlarını yöneten beş uç.
Genel Bakış
Bayilik, bir müşterinin sizden indirimli alıp kendi müşterilerine satmasıdır. Bu uçlar iki ayrı katmanı yönetir ve karıştırılmamalıdır.
İlk üç uç tek bir müşteriye bakar: o müşterinin bayi durumu, kredi eşiği ve indirim kademeleri. Son iki uç programın kendisini yönetir: başvurular nasıl onaylanır, doğrulama zorunlu mudur, bayilere API erişimi verilir mi. Adres içinde müşteri kimliği olup olmaması bu ayrımı gösterir.
Yapı
İndirim Kademeleri
Müşteriye özel discounts ile program geneli discount_rates aynı biçimi paylaşır. Her kademe anahtarı from, to ve rate taşıyan satırların listesine karşılık gelir.
| Kademe anahtarı | Neye uygulanır | Örnek |
|---|---|---|
default | Tüm ürünler, alan adları ve eklentiler | default |
<grup> | Bir grubun tamamı: hosting, server, software, ssl, domain (tüm uzantılar) ya da addon (tüm eklentiler) | hosting |
special/<grup_id> | Bir özel ürün grubu | special/446 |
<grup>/<kategori_id> | Bir ürün kategorisi, alt kategorilerindeki ürünler dahil | hosting/550 |
<grup>/0 | Grubun hiçbir kategoriye bağlı olmayan ürünleri | hosting/0 |
special-<grup_id>/0 | Bir özel grubun kategorisiz ürünleri; special/0 tüm özel grupları kapsar | special-445/0 |
<tip>-<ürün_id> | Tek bir ürün; özel grup ürünü special-<ürün_id> biçimindedir | hosting-15 |
domain-<uzantı> | Tek bir alan adı uzantısı | domain-com |
addon-<eklenti_id> | Tek bir eklenti | addon-8 |
Önceki sürümlerin yazdığı anahtarlar da çözülür. special-<grup_id>, o id'de özel grup ürünü yoksa özel grup olarak okunur. domain-<uzantı_id>, uzantının sayısal id'si olarak okunur. Hiçbir biçime uymayan anahtar gönderildiği gibi saklanır ama hiçbir satıra uygulanmaz. Üç değeri de 0 olan satır kayıtta düşürülür.
Bayi hangi kademeleri alır. Program geneli discount_rates her aktif bayiye uygulanır. Bayinin kendi kademesi olan anahtar, programdaki aynı anahtarın kademelerinin bütünüyle yerine geçer. İki satır listesi birleştirilmez. Programdaki diğer her anahtar uygulanmaya devam eder; kendine özel kademesi olmayan bayi program oranlarıyla fiyatlanır.
Satırı hangi kademe fiyatlar. Eşleşen satırı olan en dar hedef kazanır: ürün, eklenti, alan adı uzantısı, kategori, kategorisiz, grup ve son olarak default. Kategoride önce ürünün kendi kategorisine, sonra ağaçta yukarı doğru her üst kategoriye bakılır. Bir anahtarın içinde, aralığı sayıyı kapsayan ilk satır uygulanır. Eşleşen satırı olmayan ya da satırının oranı 0 olan anahtar bir sonraki hedefe bırakır.
Ne sayılır. Kademe, müşterinin o kademenin düzeyindeki hizmetleriyle seçilir. Ürün kademesi o ürünü, kategori kademesi kategoriyi alt kategorileriyle birlikte sayar. Kategorisiz kademe grubun kategorisiz ürünlerini, grup kademesi grubun tamamını sayar. addon grubu müşterinin eklentilerini, default tüm hizmetleri sayar. Alan adı kademesi o uzantıyı, eklenti kademesi o eklentiyi sayar. Sipariş, sepet ve bayi panosu iptal edilmemiş her hizmeti sayar; bekleyenler de dahildir. Fatura satırları yalnız aktif hizmetleri sayar: yenileme, yükseltme ve fatura ekranlarında yazılan satırlar.
Referans
Bayi Durumunu Getirme
Müşterinin bayi durumunu ve kendisine özel bayi ayarlarını döndürür.
active ya da inactive.default, hosting, hosting/550, hosting-15, domain-com, addon-8) indirim kademelerine eşleme.0 üst sınır yok demektir.curl 'https://panel.ornek.com/api/v1/admin/clients/42/reseller' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/reseller', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
// Bayi kaydi yoksa yanit tek alanlidir.
if (!body.data.is_reseller) return;$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/reseller');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);$response = Api::Clients()->GetClientReseller(['id' => 42]);
// Diger alanlar yalnizca bayi kaydi varken gelir — null-safe okuyun.
$minCredit = $response['data']['min_credit']['amount'] ?? 0;{
"data": {
"is_reseller": true,
"status": "active",
"activation_time": "2026-02-01 12:00:00",
"min_credit": { "amount": 100.00, "currency_id": 840 },
"min_discount": { "amount": 50.00, "currency_id": 840 },
"only_credit_payment": false,
"discounts": {
"hosting": [{ "from": 1, "to": 10, "rate": 15.0 }, { "from": 11, "to": 0, "rate": 17.5 }]
}
}
}{
"data": {
"is_reseller": false
}
}Bayi Ayarlarını Kaydetme
Müşteriye özel bayi ayarlarını kaydeder ve bayiliği açıp kapatır.
default, hosting, hosting/550, hosting-15, domain-com, addon-8) indirim kademelerine eşleme.0 ya da boş, üst sınır yok demektir.curl -X PATCH 'https://panel.ornek.com/api/v1/admin/clients/42/reseller' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"active":true,"min_credit":{"amount":100,"currency_id":840},"only_credit_payment":true}'const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/reseller', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
active: true,
min_credit: { amount: 100, currency_id: 840 },
only_credit_payment: true,
discounts: {
5: [{ from: 1, to: 10, rate: 15 }],
},
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/reseller');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'active' => true,
'min_credit' => ['amount' => 100, 'currency_id' => 840],
'only_credit_payment' => true,
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bayilik acikken gondermediginiz ayar KISITI KALDIRIR — once mevcut hali okuyun.
$current = Api::Clients()->GetClientReseller(['id' => 42])['data'];
$response = Api::Clients()->UpdateClientReseller([
'id' => 42,
'active' => true,
'min_credit' => $current['min_credit'],
'min_discount' => $current['min_discount'],
'only_credit_payment' => true,
'discounts' => $current['discounts'],
]);Bayi Durumunu Değiştirme
Var olan bir bayi kaydını açıp kapatır. Ayarlar olduğu gibi kalır.
activate ya da terminate.action iki değerden biri değil.curl -X PUT 'https://panel.ornek.com/api/v1/admin/clients/42/reseller/status' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"action":"activate"}'const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/reseller/status', {
method: 'PUT',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ action: 'activate' }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/reseller/status');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['action' => 'activate']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);$response = Api::Clients()->SetClientResellerStatus([
'id' => 42,
'action' => 'activate',
]);Program Ayarlarını Getirme
Bayi programının kurulum genelindeki ayarlarını döndürür. Tek bir müşteriye bakmaz.
manuel ya da auto.default, hosting, hosting/550, hosting-15, domain-com, addon-8) indirim kademelerine eşleme.0 üst sınır yok demektir.curl 'https://panel.ornek.com/api/v1/admin/clients/reseller/config' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/reseller/config', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/reseller/config');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);$response = Api::Clients()->GetResellerConfig();Program Ayarlarını Kaydetme
Bayi programının kurulum genelindeki ayarlarını kaydeder.
manual, automatic ya da auto. Tanınmayan değer elle onaya düşer.default, hosting, hosting/550, hosting-15, domain-com, addon-8) indirim kademelerine eşleme. Tam seti gönderin; gönderilmeyen kademe silinir.0 ya da boş, üst sınır yok demektir.curl -X PUT 'https://panel.ornek.com/api/v1/admin/clients/reseller/config' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"enabled":true,"activation":"manual","api_access":true}'const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/reseller/config', {
method: 'PUT',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
enabled: true,
activation: 'manual',
api_access: true,
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/reseller/config');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'enabled' => true,
'activation' => 'manual',
'api_access' => true,
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);$response = Api::Clients()->SaveResellerConfig([
'enabled' => true,
'activation' => 'manual',
'api_access' => true,
]);Tuzaklar
Bayilik açıkken ayarları kaydederseniz, gönderilmeyen bir kısıt silinir; eski değeri korunmaz. Yalnız ödeme kısıtını değiştirmek isterken kredi eşiğini göndermeyi unutmak o eşiği kaldırır. Önce mevcut ayarları okuyun, üzerinde değişikliği yapın, tamamını geri gönderin.
Müşterinin bayi kaydı yoksa durum ucu yalnız is_reseller döndürür; diğer alanlar hiç gelmez. Bunları doğrudan okumak yerine null-safe erişin, yoksa bayi olmayan her müşteride hata alırsınız.
Hızlı açma ucu yalnız var olan bir kaydı değiştirir; kaydı olmayan müşteride not_reseller döner. Yeni bir bayi açmak ayarlar ucunun işidir.
to değeri 0 olan (ya da boş gönderilen) kademenin üst sınırı olmaz: from ve üzerini kapsar. Bunu boş bir aralık saymayın. Kademe anahtarı olarak hosting ya da hosting-15 gibi metinler kullanılır; yalın bir sayı hiçbir ürünle eşleşmez.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.