# Bakiye ve Ödeme Tercihi Kancaları

https://dev.wisecp.com/tr/bakiye-kancalari

Cüzdan, bakiye düzeltmeleri ve otomatik ödeme zincirinin dört kancası.

## Genel Bakış

Müşteri cüzdanına para dört yoldan girer ya da çıkar: yükleme talebi, faturadan geçen alacak, yöneticinin elle düzeltmesi ve otomatik ödeme zincirinin değişmesi.

Para birimi burada bir tuzaktır: bakiye kendi biriminde tutulur ve fatura başka bir birimde olabilir. Tutarları taşırken hangi birimde olduklarına bakın.

## Referans

### Otomatik ödeme zincirini izleme

actionuser.autopay_changed

`AccountCards` zincirin başı

Hesabın otomatik ödeme zinciri değiştiğinde çalışır.

Parametreler 2

$uidintHesabın sahibi.

$autopayCtxarrayZincirin güncel başı. Zincir boşaldıysa bu değer **boş gelir**: hesabın artık otomatik ödeyecek kartı yoktur ve yenileme başarısız olacaktır.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:user.autopay_changed', 10, function ($uid, $autopayCtx) {
    // Zincir bosaldiysa yenileme basarisiz olacak.
    if (!($autopayCtx['backup_card'] ?? null)) Acme::warnNoCard($uid);
});
```

### Bakiyeye alacak geçmesini izleme

actionuser.balance_credited

`Invoices` dönüşüm sonrası

Bir faturadan müşteri bakiyesine alacak geçtiğinde çalışır.

Parametreler 4

$user_idintBakiyesi artan müşteri.

$amountfloatGeçen tutar, **kullanıcının bakiye para biriminde** ve döviz dönüşümünden sonra. Faturanın tutarıyla aynı olmayabilir: fatura başka bir para biriminde olabilir.

$currencyintBakiye para birimi.

$invoicearrayKaynak fatura.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:user.balance_credited', 10, function ($user_id, $amount, $currency, $invoice) {
    // Tutar bakiye para biriminde: faturaninkiyle karistirmayin.
    Acme::ledgerCredit($user_id, $amount, $currency);
});
```

### Bakiye düzeltmesini izleme

actionuser.credit_adjusted

`AdminUsers` iki yön

Yönetici bir hesabın bakiyesini elle düzelttiğinde çalışır.

Parametreler 5

$user_idintBakiyesi değişen müşteri.

$typestringYön: `up` alacak, `down` borç.

$amountfloatDüzeltme tutarı.

$new_balancefloatİşlem sonrası bakiye.

$cidintBakiye para birimi.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:user.credit_adjusted', 10,
    function ($user_id, $type, $amount, $new_balance, $cid) {
        Acme::ledgerAdjust($user_id, $type, $amount, $new_balance);
    });
```

### Para yükleme talebini izleme

actionuser.funds_added

`AccountBalance` net tutar

Müşteri cüzdanına para yüklemek istediğinde çalışır.

Parametreler 3

$uidintCüzdanın sahibi.

$amountfloatYüklenmek istenen **net** tutar. Vergi ve kuruluş komisyonu **dâhil değildir**: müşterinin ödeyeceği toplam bundan yüksektir. Muhasebeye bu sayıyı ödenen tutar diye yazmayın.

$fundsCtxarrayBağlam: talebin geldiği ekran ve alt sınır.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:user.funds_added', 10, function ($uid, $amount, $fundsCtx) {
    // NET tutar: vergi ve komisyon dahil degil.
    Acme::noteTopupIntent($uid, $amount);
});
```

## Tuzaklar

> **Bakiye tutarı faturanın tutarı değildir**
> 
> Bakiyeye geçen tutar **kullanıcının bakiye para biriminde** ve dönüşümden sonra gelir. Faturanın kendi tutarıyla eşit olmayabilir; ikisini aynı sayı sanmak muhasebede fark üretir.

> **Yükleme tutarı net tutardır**
> 
> Para yükleme kancasındaki tutar **net**: vergi ve kuruluş komisyonu dâhil değildir. Müşterinin ödediği toplam bundan yüksektir; bu sayıyı tahsil edilen tutar diye kaydetmeyin.

## İlgili Makaleler

- [Müşteri Hesabı Kancaları](https://dev.wisecp.com/tr/musteri-hesabi-kancalari)
- [Fatura Yaşam Döngüsü Kancaları](https://dev.wisecp.com/tr/fatura-yasam-dongusu-kancalari)
- [Kancalar Nasıl Çalışır](https://dev.wisecp.com/tr/kancalar-nasil-calisir)
