Satış Ortağı Ödeme Talepleri

1.6k görüntülenme Markdown

Ortakların açtığı ödeme taleplerini gören ve sonuçlandıran üç uç.

Genel Bakış

Satış ortağı kazandığı komisyonu doğrudan alamaz; bir ödeme talebi açar ve ekip bunu onaylar. Bu makale o talepleri gören ve sonuçlandıran üç ucu anlatır.

Talep beş durumdan birindedir: bekliyor, işlemde, tamamlandı, reddedildi, iptal edildi. Yalnız tamamlandı durumu paranın gerçekten çıktığı andır ve ortağın bakiyesinden düşer.

Bakiye hareketi bu yüzden kritiktir: onay parayı düşürür, silme geri verir, ret ise bakiyeye dokunmaz. Üçünü aynı sanmak ortağa yanlış borç gösterir.

Referans

Ödeme Taleplerini Listeleme

get/api/v1/admin/affiliates/withdrawals
Affiliates/GetWithdrawals admin

Satış ortaklarının açtığı ödeme taleplerini döndürür.

Sorgu 4
pageintKaçıncı sayfa.
limitintSayfa başına kayıt. En çok 100.
searchstringAd, şirket, e-posta, ödeme yöntemi ve talep numarasında arar.
statusstringDurum süzgeci: awaiting, process, completed, rejected ya da cancelled.
Dönen alanlar data[] — 15 + meta — 4
idintTalebin numarası.
affiliate_idintTalebi açan satış ortağının kayıt numarası.
owner_idintOrtağın arkasındaki müşteri numarası.
user_idintAynı müşteri numarası. Sorgu birleştirmesinden gelen ikinci ad.
full_namestringMüşterinin adı soyadı.
company_namestringŞirket adı.
emailstringE-posta adresi.
amountstringİstenen tutar. Dört ondalıklı metin.
currencyintTutarın para birimi numarası.
gatewaystringOrtağın seçtiği ödeme yöntemi.
gateway_infostringYönteme ait bilgi. Hesap numarası ya da e-posta gibi.
statusstringTalebin durumu.
status_msgstringDuruma yazılmış açıklama.
ctimestringTalebin açıldığı an.
updated_atstringSon değişiklik anı.
totalintToplam talep. Meta altında döner.
pageintBulunulan sayfa.
limitintSayfa boyutu.
next_pageintSonraki sayfa. Son sayfada sıfır.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/affiliates/withdrawals?status=awaiting' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/affiliates/withdrawals?status=awaiting', {
  headers: { Authorization: `Bearer ${apiKey}` },
});

const { data, meta } = await res.json();
const owed = data.reduce((s, w) => s + Number(w.amount), 0);
$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/withdrawals?status=awaiting');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Tutarlar HER TALEBIN kendi para biriminde; toplamadan once cevirmeniz gerekir.
$rows = Api::Affiliates()->GetWithdrawals([], ['status' => 'awaiting'])['data'];
$byCurrency = [];
foreach ($rows as $w) $byCurrency[$w['currency']] = ($byCurrency[$w['currency']] ?? 0) + (float) $w['amount'];

Talepleri Toplu İşleme

post/api/v1/admin/affiliates/withdrawals/bulk
Affiliates/BulkWithdrawals admin bakiyeye dokunur

Birden çok ödeme talebini onaylar, reddeder ya da siler.

Gövde 2
actionstringreqYapılacak iş: approve, reject ya da delete.
idsint[]reqİşlenecek talep numaraları. Bulunamayan numara sessizce atlanır.
Dönen alanlar data — 2
actionstringUygulanan iş.
processedint[]Gönderdiğiniz numaralar. Gerçekten değişenler değil.
Hatalar 3
action_invalid422İş adı üç değerden biri değil.
ids_required422Talep numarası verilmedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/affiliates/withdrawals/bulk' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"action":"approve","ids":[3,5]}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/affiliates/withdrawals/bulk', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ action: 'approve', ids: [3, 5] }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/withdrawals/bulk');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['action' => 'approve', 'ids' => [3, 5]]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// ONAY bakiyeden duser, RET bakiyeyi GERI VERMEZ; parayi iade eden tek is silmedir.
Api::Affiliates()->BulkWithdrawals(['action' => 'approve', 'ids' => [3, 5]]);
// yanlis onayladiysaniz: reject degil delete
Api::Affiliates()->BulkWithdrawals(['action' => 'delete', 'ids' => [3]]);

Tek Talebi Silme

delete/api/v1/admin/affiliates/withdrawals/{wid}
Affiliates/DeleteWithdrawal admin

Tek bir ödeme talebini siler ve gerekiyorsa tutarı geri verir.

Dönen alanlar data — 2
deletedboolSilme çalıştı mı.
idintSilinen talebin numarası.
Hatalar 2
not_found404Talep bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/affiliates/withdrawals/3' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch(`https://panel.ornek.com/api/v1/admin/affiliates/withdrawals/${wid}`, {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/withdrawals/' . $wid);
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);
// Toplu silmeden tek farki: bulunamayan numara burada 404 verir, toplu iste sessizce atlanir.
Api::Affiliates()->DeleteWithdrawal(['wid' => $wid]);

Tuzaklar

Ret bakiyeyi geri vermez

Onay tutarı ortağın bakiyesinden düşer. Ret ise yalnız durumu yazar ve düşülen tutarı geri koymaz; bu yüzden onaylanmış bir talebi reddetmek parayı ortağın bakiyesinden kalıcı olarak eksiltir. Yanlış onaydan dönmenin yolu ret değil silmedir.

Onay, ret, tekrar onay iki kez düşer

Onay yalnız talep tamamlanmış değilken bakiyeden düşer. Onayladığınız bir talebi reddedip yeniden onaylarsanız durum tamamlanmış olmaktan çıktığı için ikinci kez düşer ve ortak aynı ödeme için iki kez eksilir. Böyle bir turdan sonra bakiyeyi elle doğrulayın.

Dönen liste ne işlendiğini söylemez

processed alanı gönderdiğiniz numaraların aynısıdır. Bulunamayan bir talep sessizce atlanır, ama numarası yine bu listede görünür. Toplu bir işin gerçekten oturduğunu görmek için listeleme ucundan durumları geri okuyun.

Bakiye sıfırın altına inmez

Bakiyeden düşen her iş sonucu sıfırda tutar. Bakiyeden büyük bir talebi onaylarsanız bakiye sıfır olur ve aradaki fark kaybolur; hata dönmez. Onaydan önce talep tutarını ortağın bakiyesiyle karşılaştırın.

İki silme yolu, tek fark

Tek talep silme ile toplu silme aynı işi yapar ve tamamlanmış talepte tutarı ikisi de geri verir. Tek fark bulunamayan numaradadır: tek silme 404 döndürür, toplu silme sessizce atlar. Var olduğundan emin olmadığınız numarada tek uç daha güvenlidir.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.