Satış Ortaklığı Atamaları
Müşteri ve hizmetleri satış ortağına bağlayan, listeleyen ve ayıran altı uç.
Genel Bakış
Bir satış ortağı iki yoldan kazanır. Müşteri bağlantısı "bu müşteriyi o getirdi" der; hizmet bağlantısı ise belirli bir satıştan komisyon yazar.
İki yol ayrı yerlerde durur. Müşteri bağlantısı müşteri kaydında bir alandır, hizmet bağlantısı ise kendi komisyon kaydını açar. Bu yüzden kaldırma uçları da farklı numaralarla konuşur.
Hizmet bağlaması beş koşul arar: program açık olmalı, hizmet türü uygun olmalı, ürün komisyona kapalı olmamalı, ortak devre dışı olmamalı ve hizmet başka bir ortağa bağlı olmamalı.
Referans
Bağlı Müşterileri Listeleme
Bir satış ortağına bağlanmış müşterileri döndürür.
curl 'https://panel.ornek.com/api/v1/admin/affiliates/assigned-clients?search=jane' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/affiliates/assigned-clients', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const perPartner = Object.groupBy(data, (c) => c.aff_user_id);$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/assigned-clients');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// aff_id ORTAGIN MUSTERI numarasidir; ortak kayit numarasiyla eslestirmeye calismayin.
$rows = Api::Affiliates()->GetAssignedClients()['data'];
$mine = array_filter($rows, fn ($c) => (int) $c['aff_user_id'] === $partnerClientId);Müşteriyi Ortağa Bağlama
Bir müşteriyi satış ortağının yönlendirmesi olarak işaretler.
curl -X POST 'https://panel.ornek.com/api/v1/admin/affiliates/assigned-clients' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"affiliate_id":7,"client_id":88}'const res = await fetch('https://panel.ornek.com/api/v1/admin/affiliates/assigned-clients', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ affiliate_id: 7, client_id: 88 }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/assigned-clients');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['affiliate_id' => 7, 'client_id' => 88]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Baska bir ortaga bagli musteri SESSIZCE devralinir; onceki ortak yonlendirmeyi kaybeder.
$rows = Api::Affiliates()->GetAssignedClients()['data'];
$owned = array_column($rows, 'aff_user_id', 'id');
if (! isset($owned[$clientId])) Api::Affiliates()->AssignClient(['affiliate_id' => $aid, 'client_id' => $clientId]);Müşteri Bağlantısını Kaldırma
Bir ya da daha çok müşterinin ortak bağlantısını kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/affiliates/assigned-clients' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"ids":[88,90]}'const res = await fetch('https://panel.ornek.com/api/v1/admin/affiliates/assigned-clients', {
method: 'DELETE',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ ids: [88, 90] }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/assigned-clients');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['ids' => [88, 90]]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Hicbir denetim YOK: gonderilen her musterinin bagi silinir, bagli olmayanlar da yaniti doldurur.
Api::Affiliates()->UnassignClients(['ids' => [88, 90]]);Bağlı Hizmetleri Listeleme
Ortaklara komisyon getiren hizmet kayıtlarını döndürür.
curl 'https://panel.ornek.com/api/v1/admin/affiliates/assigned-services?limit=50' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/affiliates/assigned-services', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const earned = data.reduce((s, t) => s + Number(t.commission), 0);$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/assigned-services');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kaldirma ucu HIZMET numarasini degil, buradaki KAYIT numarasini (id) ister.
$rows = Api::Affiliates()->GetAssignedServices()['data'];
$recordId = array_column($rows, 'id', 'service_id')[$serviceId] ?? 0;Hizmeti Ortağa Bağlama
Bir hizmeti ortağa bağlar ve komisyon kaydını açar.
curl -X POST 'https://panel.ornek.com/api/v1/admin/affiliates/assigned-services' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"affiliate_id":7,"service_id":305}'const res = await fetch('https://panel.ornek.com/api/v1/admin/affiliates/assigned-services', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ affiliate_id: 7, service_id: 305 }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/assigned-services');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['affiliate_id' => 7, 'service_id' => 305]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bes kosul birden aranir; en cok atlanan ikisi kapali program ve zaten bagli hizmettir.
try { Api::Affiliates()->AssignService(['affiliate_id' => $aid, 'service_id' => $sid]); }
catch (\Throwable $e) { $skipped[$sid] = $e->getMessage(); }Hizmet Bağlantısını Kaldırma
Komisyon kaydını kaldırır ve gerekiyorsa komisyonu geri alır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/affiliates/assigned-services/12' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/affiliates/assigned-services/${tid}`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/assigned-services/' . $tid);
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);// Tamamlanmis kayitta komisyon bakiyeden DUSER; odeme talepleri silmesinin tam TERSI yonde.
Api::Affiliates()->UnassignService(['tid' => $recordId]);Tuzaklar
Müşteri bağlantısını kaldıran uç gövdede müşteri numaraları ister; hizmet bağlantısını kaldıran uç ise adreste komisyon kaydının numarasını ister. İkincisine hizmet numarası vermek ya bulunamadı der ya da yanlış kaydı siler. Kayıt numarasını listeleme ucundan alın.
Bu uç gönderdiğiniz her müşteri numarasının bağlantısını siler. Numaranın bir ortağa bağlı olup olmadığına, hatta o müşterinin var olup olmadığına bakmaz; hepsini yanıtta kaldırıldı diye sayar. Yanlış bir liste sessizce başka müşterilerin bağlantılarını koparır.
Bir müşteri zaten başka bir ortağa bağlıysa yeni bağlama hata vermez; bağı üstüne yazar ve önceki ortak o yönlendirmeyi kaybeder. Hizmet tarafında aynı durum already_assigned ile reddedilir. Müşteri bağlamadan önce mevcut bağı listeleme ucundan denetleyin.
Tamamlanmış bir komisyon kaydını kaldırmak tutarı ortağın bakiyesinden düşürür. Ödeme talebi silmenin bakiyeyi artırdığını hatırlayın: iki silme ters yönlerde çalışır. Bakiye sıfırın altına inmez, yani düşülemeyen fark sessizce kaybolur.
Listedeki aff_id ortağın arkasındaki müşteri numarasıdır, ortak kaydının numarası değil. Bağlama ucu ise gövdede ortak kaydının numarasını ister. Bir listeden okuduğunuz numarayı doğrudan bağlama ucuna vermek başka bir ortağa atama yapar.
Komisyon yalnız barındırma, sunucu, yazılım ve özel türdeki hizmetlere yazılır; alan adı gibi diğer türler type_unsupported alır. Ürünün kendi ayarı da komisyonu kapatabilir. Toplu bir bağlama işinde bu iki durumu ayrı toplayı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.