# Olaylara Tepki Verme

https://dev.wisecp.com/tr/olaylara-tepki-verme

Entegrasyonunuza hiçbir şey gönderilmez; ya tekrar sorarsınız ya da kendi kodunuzu olayın olduğu yerde çalıştırırsınız.

## Genel Bakış

Webhook teslimi yok. Bu bilinçli bir sınır: kurulum sizin uçlarınızın kuyruğunu tutmaz, onlara yeniden denemez ve doğrulayamadığı bir adrese işini sızdırmaz.

Onun yerine iki yaklaşım var ve farklı sorulara cevap veriyorlar.

- **Tekrar sorun**: Belirli aralıklarla bir liste ucunu çağırın ve değişene göre davranın. Anahtardan başka bir şey gerekmez, her yerden çalışır, aralığınız kadar gecikir.
- **Olduğu anda orada olun**: Bir kancaya dinleyici kaydedin; kodunuz olaya sebep olan isteğin içinde çalışır. Anında ve kesin, ama sunucuya kurulmuş kod ister.

Seçimi kodunuzun nerede yaşayabileceği belirler. Kurulumun dışındaki entegrasyon yoklama yapar. Kurulumla birlikte gelen bir modül, ek hizmet ya da tema dinler.

## Ön Koşullar

- Dinleyici yolu için: kurulumun içine PHP koyabileceğiniz bir yer, ki bu pratikte kendi modülünüz demek.
- İstediğiniz kancanın tam adı. Adlar katalogludur ve var olmayan bir ad sessizce başarısız olur.

## Adım Adım

### Kancayı Seçin

1. Önemsediğiniz anı bu dokümanın Kancalar bölümündeki katalogda bulun.
2. Aldığı değerleri ve mekanizmasını okuyun. Bazı kancalar olanı bildirir, bazıları bir değeri değiştirmenize izin verir, üçüncü tür ise bir işlemi tamamen reddedebilir.
3. Kaç değer aldığına dikkat edin. Kancanın gönderdiğinden fazlasını tanımlamak dinleyicinizi devre dışı bırakır.

### Dinleyici Kaydedin

1. Modülünüze bir `hooks.php` koyun ve dinleyiciyi oraya ekleyin.
2. Gövdeyi hafif tutun. Birinin isteğinin içinde çalışır; oradaki yavaş iş, bekleyen kişi tarafından hissedilir.
3. Yavaş olan her şeyi bir kuyruğa, dosyaya ya da zamanlanmış göreve devredin; dışarıya çağrıyı o yapsın.

### Çalıştığını Doğrulayın

1. Olayı bir kez gerçekten oluşturun ve sizin tarafınızın gördüğünü onaylayın.
2. Hiçbir şey olmadıysa koda dokunmadan önce hata kaydında iki mesaj arayın: biri çalışıp hata veren dinleyiciyi, diğeri sınıf ya da metot adı çözülemeyen dinleyiciyi bildirir.
3. İkisi de yoksa ya kanca adı yanlıştır ya da dinleyici bilerek hiçbir şey döndürmüştür.

## Örnek

Yeni siparişe tepki veren, onu aynı süreç içinde API üzerinden geri okuyan ve dışarıya çağrıyı kuyruğa bırakan bir dinleyici.

```php
\Hook::add('action:order.created', 10, function (array $order) {
    $id = (int) ($order['id'] ?? 0);
    if (!$id) return;

    // HTTP adresinin sundugu kaynagin ayni: anahtar da ag turu da gerekmez
    $full = \WISECP\Api\Kernel::internal('Orders/GetOrder', ['id' => $id]);
    if (isset($full['error'])) return;

    // kuyruga birakin; birinin odeme adiminin icinden kendi ucunuzu cagirmayin
    \Acme\Sync::enqueue('order.created', $full['data']);
});
```

- **action:order.created**: Sipariş satırı yazıldıktan sonra, onay bildiriminden önce çalışır. Sipariş içeriğini yeni kimliğiyle birleştirilmiş olarak alır. Dönüş yoksayılır; yukarıdaki dinleyicideki erken çıkışlar da sadece kendi kodunuzu bitirir.
- **action:invoice.status_changed**: Para tarafındaki karşılığı: bir fatura durumlar arasında her geçtiğinde, ödendi durumuna geçiş dahil, çalışır. Yeniden yüklenmiş faturayı, yeni durumu, önceki durumu ve geçiş seçeneklerini alır. Dönüş yoksayılır.

## Tuzaklar

> **Bozuk dinleyici atlanır, size bildirilmez**
> 
> Motor, dinleyicinin fırlattığı her şeyi yakalar, hata kaydına yazar ve sıradakine geçer. Bunun olduğu sayfa, hiçbir dinleyici kayıtlı değilmiş gibi devam eder. "Kodum hiç çalışmıyor" ile "kodum her seferinde hata veriyor" dışarıdan aynı görünür; ikisini ayıran tek yer hata kaydıdır.

> **Boş bir değer, sonrakileri kaydırır**
> 
> Değerler sıraya göre bağlanır ve boş olan atlanır, dolayısıyla sonraki değer onun yerine kayar. İki değer tanımlamış bir dinleyici, hiçbir uyarı almadan ikinci değeri ilk sırada alabilir. Gerçekte ne gönderildiğini katalog kaydından okuyun.

> **Yoklamanın bir tabanı var: istek bütçeniz**
> 
> Saniyede bir yoklama, bir anahtarın bütün dakikalık bütçesini bir dakikada harcar. Entegrasyonunuzun kaldırabileceği bir aralık seçin, her çağrı küçük kalsın diye sunucu tarafında süzün ve `429` aldığınızda döngüyü sıkmak yerine durun.

## İlgili Makaleler

- [WISECP API'si](https://dev.wisecp.com/tr/wisecp-apisi)
- [API Kaynakları](https://dev.wisecp.com/tr/api-kaynaklari)
- [Kancalar Nasıl Çalışır](https://dev.wisecp.com/tr/kancalar-nasil-calisir)
- [Kanca Dinleyicisi Yazma](https://dev.wisecp.com/tr/kanca-dinleyicisi-yazma)
- [Kanca Alanları](https://dev.wisecp.com/tr/kanca-alanlari)
