# Satış Ortaklığı Ayarları

https://dev.wisecp.com/tr/satis-ortakligi-ayarlari

Komisyon oranını, dönemini, bekleme süresini ve ödeme eşiğini tutan iki uç.

## Genel Bakış

Program ayarları komisyonun **ne kadar**, **ne zaman** ve **ne kadar süre** vereceğinizi belirler. İki uç aynı yapıyı okur ve yazar.

Üç ayar birlikte çalışır: oran komisyonun büyüklüğünü tutar, dönem komisyonu bir kez mi her yenilemede mi vereceğinizi söyler, bekleme günü de kazancın ne zaman ödenebilir hâle geleceğini belirler.

Çerez süresi ayrı bir soruyu yanıtlar: ziyaretçi bağlantıya tıkladıktan kaç gün sonrasına kadar müşteri olursa sistem yönlendirmeyi o ortağa yazar.

## Referans

### Program Ayarlarını Okuma

get/api/v1/admin/affiliates/config

`Affiliates/GetAffiliateConfig` admin

Satış ortaklığı programının bütün ayarlarını döndürür.

Dönen alanlar data — 11

enabledboolProgram açık mı. Kapalıyken hizmet ataması geçmez.

view_without_membershipboolProgram sayfası üye olmayana da açık mı.

show_commission_ratesboolKomisyon oranları ürün sayfasında görünsün mü.

commission_periodstringKomisyon bir kez mi çıkar, her yenilemede mi: `onetime` ya da `lifetime`.

commission_delayintKazancın ödenebilir hâle gelmesi için geçmesi gereken gün.

ratefloatVarsayılan komisyon oranı. Ürün kendi oranını taşıyabilir.

min_paymentobject min_paymentÖdeme talebi için asgari tutar.

amountfloatAsgari tutar.

currency_idintAsgari tutarın para birimi numarası.

cookie_durationintSistemin bir yönlendirmeyi kaç gün hatırlayacağı.

redirectstringBağlantıya tıklayanın gideceği adres. Boşsa ana sayfa.

payment_gatewaysobject[]Ortağın seçebileceği ödeme yöntemleri. Her eleman dil başına ad taşıyan bir nesnedir.

contentobjectProgram sayfasının dil başına metni.

Hatalar 1

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl 'https://panel.ornek.com/api/v1/admin/affiliates/config' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
const res  = await fetch('https://panel.ornek.com/api/v1/admin/affiliates/config', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();

const rate = data.rate;
const floor = data.min_payment.amount;
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/config');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
```

```php
// Kaydetmeden ONCE buradan okuyun: kaydetme eksik alani varsayilanla ezer.
$cfg = Api::Affiliates()->GetAffiliateConfig()['data'];
$cfg['rate'] = 15;
```

### Program Ayarlarını Kaydetme

put/api/v1/admin/affiliates/config

`Affiliates/SaveAffiliateConfig` admin tam yazım

Program ayarlarının tamamını yazar ve güncel hâlini döndürür.

Gövde 11

enabledboolProgram açık mı. Kapalıyken hizmet ataması geçmez.

view_without_membershipboolProgram sayfası üye olmayana da açık mı.

show_commission_ratesboolKomisyon oranları ürün sayfasında görünsün mü.

commission_periodstringKomisyon bir kez mi çıkar, her yenilemede mi: `onetime` ya da `lifetime`.

commission_delayintKazancın ödenebilir hâle gelmesi için geçmesi gereken gün.

ratefloatVarsayılan komisyon oranı. Ürün kendi oranını taşıyabilir.

min_paymentobject min_paymentÖdeme talebi için asgari tutar.

amountfloatAsgari tutar.

currency_idintAsgari tutarın para birimi numarası.

cookie_durationintSistemin bir yönlendirmeyi kaç gün hatırlayacağı.

redirectstringBağlantıya tıklayanın gideceği adres. Boşsa ana sayfa.

payment_gatewaysobject[]Ortağın seçebileceği ödeme yöntemleri. Her eleman dil başına ad taşıyan bir nesnedir.

contentobjectProgram sayfasının dil başına metni.

Dönen alanlar data — 11

dataobjectGüncel ayarlar. Okuma ucuyla aynı şekildedir.

Hatalar 1

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl -X PUT 'https://panel.ornek.com/api/v1/admin/affiliates/config' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"enabled":true,"commission_period":"lifetime","commission_delay":30,"rate":10,"cookie_duration":30,"min_payment":{"amount":50,"currency_id":840}}'
```

```javascript
const read = await fetch('https://panel.ornek.com/api/v1/admin/affiliates/config', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const { data: cfg } = await read.json();

const res = await fetch('https://panel.ornek.com/api/v1/admin/affiliates/config', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ ...cfg, rate: 15 }),
});
```

```php
$cfg = $current;                 // GET /affiliates/config yaniti
$cfg['rate'] = 15;

$ch = curl_init('https://panel.ornek.com/api/v1/admin/affiliates/config');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($cfg),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
```

```php
// TAM YAZIM: gondermediginiz her alan varsayilana doner (metinler ve odeme yontemleri BOSALIR).
$cfg = Api::Affiliates()->GetAffiliateConfig()['data'];
$cfg['rate'] = 15;

Api::Affiliates()->SaveAffiliateConfig($cfg);
```

## Tuzaklar

> **Kaydetme bir yama değil, tam yazımdır**
> 
> Kaydetme ucu gövdedeki **her alanı** yazar. Göndermediğiniz alanı korumaz, varsayılanına döndürür: sayılar sıfıra, metinler boşa, ödeme yöntemleri ile program metinleri boş listeye. Yalnız oranı değiştirmek için önce okuyup dönen nesnenin üzerine yazın.

> **Ödeme yöntemleri bir dil haritası değil, liste**
> 
> Program metni dil başına anahtar taşıyan bir nesnedir. Ödeme yöntemleri ise **listedir** ve her elemanı kendi içinde dil başına ad taşır. İkisini aynı şekilde yazmak yöntem listesini boşaltır ve ortaklar ödeme talebi açarken seçenek göremez.

> **Komisyon dönemi doğrulanmaz**
> 
> Dönem alanını yalnız temizler, bilinen değerlere karşı **denetlemez**. Yazım hatası taşıyan bir değeri sessizce kaydeder, hata döndürmez ve dönem beklediğiniz gibi çalışmaz. Kaydettikten sonra okuma ucuyla değeri doğrulayın.

> **Programı kapatmak var olan kazancı silmez**
> 
> Program kapalıyken sistem yeni hizmet atamasını geri çevirir, ama var olan bakiyeler ve bekleyen ödeme talepleri yerinde durur. Kapatma bir dondurma değil, yeni komisyon üretimini durdurmadır.

## İlgili Makaleler

- [Satış Ortakları](https://dev.wisecp.com/tr/satis-ortaklari)
- [Satış Ortaklığı Atamaları](https://dev.wisecp.com/tr/satis-ortakligi-atamalari)
- [Satış Ortağı Ödeme Talepleri](https://dev.wisecp.com/tr/satis-ortagi-odeme-talepleri)
