Satış Ortakları
Programdaki satış ortaklarını gören, arayan, açıp kapatan ve silen dört uç.
Genel Bakış
Satış ortaklığı, bir müşterinin kendi bağlantısıyla getirdiği müşteriler üzerinden komisyon kazandığı programdır. Bu makale programdaki kişileri yönetir: kimler var, hangisi açık, hangisi silinecek.
Her kaydın iki numarası vardır. id satış ortağı kaydına, owner_id ise arkasındaki müşteriye aittir. Atama uçları müşteri numarasıyla konuşur; ikisini karıştırmak sessiz bir yanlış atamaya yol açar.
Arama ucu ayrı durur çünkü atama ekranlarını besler: numarayı bilmeyen bir arayüz önce burada ad yazar, sonra dönen numarayı atamaya verir.
Referans
Satış Ortaklarını Listeleme
Programdaki satış ortaklarını kazanç ve yönlendirme özetleriyle döndürür.
active ya da inactive.curl 'https://panel.ornek.com/api/v1/admin/affiliates?status=active&limit=50' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/affiliates?status=active', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const owing = data.filter((a) => Number(a.balance) > 0);$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates?status=active');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// id ORTAGIN numarasi, owner_id ARKASINDAKI musteriye ait; atamalar owner_id ile konusur.
$rows = Api::Affiliates()->GetAffiliates([], ['status' => 'active'])['data'];
$byClient = array_column($rows, 'balance', 'owner_id');Ortak, Müşteri ve Hizmet Arama
Atama ekranlarını besleyen arama; numara yerine ad yazmanızı sağlar.
affiliate, client ya da service. Öntanımlı olarak ortak aranır.search adını da kabul eder.curl 'https://panel.ornek.com/api/v1/admin/affiliates/select?type=client&q=jane' \
-H "Authorization: Bearer $API_KEY"const url = new URL('https://panel.ornek.com/api/v1/admin/affiliates/select');
url.searchParams.set('type', 'client');
url.searchParams.set('q', term);
const res = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();$qs = http_build_query(['type' => 'client', 'q' => $term]);
$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/select?' . $qs);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// En cok 10 sonuc doner: bu bir arama kutusudur, liste degil.
$hits = Api::Affiliates()->SelectForAffiliate([], ['type' => 'client', 'q' => $term])['data'];
$exact = count($hits['results']) === 1 ? $hits['results'][0]['id'] : 0;Ortağı Açma ve Kapatma
Satış ortağını etkinleştirir ya da devre dışı bırakır.
curl -X PUT 'https://panel.ornek.com/api/v1/admin/affiliates/7/status' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"enabled":false}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/affiliates/${aid}/status`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ enabled: false }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/' . $aid . '/status');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['enabled' => false]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kapatmak kazanci SILMEZ: bakiye durur, odeme talebi acilabilir.
Api::Affiliates()->SetAffiliateStatus(['aid' => $aid, 'enabled' => false]);Ortağı Silme
Satış ortağını ve ona bağlı bütün kayıtları siler.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/affiliates/7' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/affiliates/${aid}`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/' . $aid);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Panel bu adimda yonetici sifresi ister; API'de kapsam yeter. Once kapatmayi dusunun.
Api::Affiliates()->SetAffiliateStatus(['aid' => $aid, 'enabled' => false]);
// Api::Affiliates()->DeleteAffiliate(['aid' => $aid]); // kazanc gecmisi de giderTuzaklar
Listede id satış ortağı kaydının, owner_id arkasındaki müşterinin numarasıdır. Müşteri kaydında tutulan bağlantı alanı da müşteri numarasını saklar, ortak numarasını değil. Atama ve durum uçları farklı numara beklediği için ikisini ayırt edin.
Liste disabled alanını verir ve orada 0 açık demektir. Durum ucu ise enabled alır ve orada true açık demektir. İkisi aynı şeyin ters adlarıdır; birini diğerine kopyalamak durumu tersine çevirir.
Ortağı silmek komisyon işlemlerini, ödeme taleplerini, tıklamaları, geçmişi ve yönlendirme kayıtlarını da siler; bağlı müşterilerin bağlantısı sıfırlanır. Panel bu adımda yönetici parolası ister, API ise kapsamla yetinir. Bir ortağı ayırmak istiyorsanız silmek yerine kapatın.
Arama ucu bir liste değil, arama kutusudur: kaç kayıt eşleşirse eşleşsin en çok on sonuç döner ve sayfalama yoktur. Toplu bir işi bu uca dayandırırsanız onuncudan sonrasını sessizce kaçırırsınız. Tam liste için listeleme ucunu kullanın.
total_paid alanı tamamlanmış ödeme taleplerinin toplamıdır. Bekleyen ya da işlemdeki bir talep bu sayıya girmez, ama balance alanından da düşmez. İki rakamı toplayarak "ortağa ne borçluyuz" sorusunu yanıtlamayın.
İ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.