Müşteri Kredisi

1.7k görüntülenme Markdown

Müşterinin ön ödemeli bakiyesini okuyan, düzelten ve otomatik ödemeye bağlayan beş uç.

Genel Bakış

Kredi, müşterinin hesabında duran ön ödemeli bakiyedir. Bu uçlar o bakiyeye yapılan elle düzeltmeleri yönetir; ödeme sağlayıcısından gelen tahsilatlar buradan geçmez.

Her kayıt bir yön taşır: up bakiyeyi artırır, down azaltır. Tutar her zaman pozitiftir.

Referans

Kredi Kayıtlarını Listeleme

get/api/v1/admin/clients/{id}/credits
Clients/GetClientCredits admin

Müşterinin bakiyesinde yapılan elle düzeltmelerin defterini döndürür.

Dönen alanlar data[] — 7
idintKredi kaydının kimliği.
typestringup bakiyeyi artırır, down azaltır.
amountnumberTutar. İki ondalığa yuvarlanır ve her zaman pozitiftir; yönü type taşır.
currency_idintKaydın para birimi kimliği.
descriptionstringAçıklama.
added_byintKaydı ekleyen yöneticinin kimliği.
created_atstringOluşturma zamanı.
Hatalar 2
not_found404Müşteri ya da kredi kaydı bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/clients/42/credits' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/credits', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/credits');
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()->GetClientCredits(['id' => 42]);

$added = 0.0;
foreach ($response['data'] as $entry) {
    if ($entry['type'] === 'up') {
        $added += (float) $entry['amount'];
    }
}

Kredi Ekleme

post/api/v1/admin/clients/{id}/credits
Clients/CreateClientCredit admin bakiyeyi değiştirir

Bakiyeye elle bir düzeltme yazar ve işlem sonrası bakiyeyi döndürür.

Gövde 3
typestringzorunluup ya da down.
amountnumberzorunluSıfırdan büyük olmalı. Müşterinin bakiye para biriminde okunur.
descriptionstringAçıklama. Defterde görünür.
Dönen alanlar data — 2
creditobjectOluşturulan kayıt; listedeki şemanın aynısı.
new_balancenumberİşlemden sonraki bakiye.
Hatalar 4
not_found404Müşteri ya da kredi kaydı bulunamadı.
type_invalid422type up ya da down değil.
amount_invalid422Tutar sıfır ya da negatif.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/clients/42/credits' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"type":"up","amount":50,"description":"Elle yukleme"}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/credits', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"type":"up","amount":50,"description":"Elle yukleme"}),
});

const body = await res.json();
console.log(body.data.new_balance);
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/credits');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'type'        => 'up',
        'amount'      => 50,
        'description' => 'Elle yukleme',
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->CreateClientCredit([
    'id'          => 42,
    'type'        => 'up',
    'amount'      => 50,
    'description' => 'Elle yukleme',
]);

$balance = $response['data']['new_balance'] ?? null;
Yanıt
{
  "data": {
    "credit": {
      "id": 10,
      "type": "up",
      "amount": 50.00,
      "currency_id": 1,
      "description": "Elle yukleme",
      "added_by": 1,
      "created_at": "2026-06-21 12:00:00"
    },
    "new_balance": 150.00
  }
}
{
  "error": {
    "code": "amount_invalid",
    "message": "Amount must be greater than zero."
  }
}

Kredi Kaydını Güncelleme

patch/api/v1/admin/clients/{id}/credits/{log_id}
Clients/UpdateClientCredit admin

Var olan bir kaydı düzeltir. Tutar ya da yön değişirse bakiye yeniden hesaplanır.

Gövde en az biri
typestringup ya da down.
amountnumberSıfırdan büyük tutar.
descriptionstringAçıklama.
Dönen alanlar data — 2
creditobjectGüncellenen kayıt; listedeki şemanın aynısı.
new_balancenumberYeniden hesaplanan bakiye.
Hatalar 4
not_found404Müşteri ya da kredi kaydı bulunamadı.
type_invalid422type up ya da down değil.
amount_invalid422Tutar sıfır ya da negatif.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/clients/42/credits/10' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"amount":75}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/credits/10', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ amount: 75 }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/credits/10');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['amount' => 75]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->UpdateClientCredit([
    'id'     => 42,
    'log_id' => 10,
    'amount' => 75,
]);

Kredi Kaydını Silme

delete/api/v1/admin/clients/{id}/credits/{log_id}
Clients/DeleteClientCredit admin bakiyeyi geri alır

Kaydı siler ve etkisini bakiyeden geri alır.

Dönen alanlar data — 3
deletedboolSilme başarılı mı.
idintSilinen kredi kaydının ID'si.
new_balancenumberGeri alma sonrası bakiye.
Hatalar 2
not_found404Müşteri ya da kredi kaydı bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/clients/42/credits/10' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/credits/10', {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/credits/10');
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);
$response = Api::Clients()->DeleteClientCredit([
    'id'     => 42,
    'log_id' => 10,
]);

Krediyle Otomatik Ödeme

put/api/v1/admin/clients/{id}/credit-autopay
Clients/SetClientCreditAutopay admin

Faturaların bakiyeden kendiliğinden ödenip ödenmeyeceğini belirler.

Gövde 1
enabledboolzorunluAçıksa vadesi gelen fatura bakiyeden düşülür.
Dönen alanlar data
enabledboolÇağrı sonrasındaki otomatik ödeme durumu.
Hatalar 2
not_found404Müşteri bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/clients/42/credit-autopay' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"enabled":true}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/credit-autopay', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ enabled: true }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/credit-autopay');
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]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->SetClientCreditAutopay([
    'id'      => 42,
    'enabled' => true,
]);

Tuzaklar

Silmek bakiyeyi geri alır

Bir kaydı silmek yalnız satırı kaldırmaz; tutar bakiyeden de geri alınır. Yanlış bir düzeltmeyi kapatmak için ters yönde ikinci bir kayıt açmak, silmekten daha izlenebilir bir yoldur.

Tutar müşterinin para biriminde okunur

Gönderdiğiniz sayı müşterinin bakiye para birimindedir; istekte para birimi belirtilmez. Farklı para birimlerinde çalışan bir entegrasyon çevrimi kendi yapmalıdır.

Otomatik ödeme geçmişe dokunmaz

Ayarı açmak bekleyen faturaları o anda ödemez; bundan sonra vadesi gelenler için çalışır.

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.