# Hizmet Yaşam Döngüsü Kancaları

https://dev.wisecp.com/tr/hizmet-yasam-dongusu-kancalari

Satılan bir hizmetin ömrü boyunca açılan 101 kanca: kurulum, askı, iptal, yenileme, paket değişikliği ve sağlayıcı modülüyle konuşma.

## Genel Bakış

Hizmet, müşterinin satın aldığı şeydir: barındırma paketi, sunucu, yazılım lisansı. Bu alandaki kancalar onun **ömrünü** izler ve çoğu ikili gelir: bir işlemin önünde bir kapı, ardında bir olay.

Bir bölümü ise hizmeti gerçekten sağlayan **modülle** ilgilidir. Sunucuda hesap açan, askıya alan, parola değiştiren kod modüldedir; buradaki kancalar o çağrının girdisine ve çıktısına dokunmanızı sağlar.

## Referans

### Ömür olayları

- **action:service.created**: Hizmet açıldı. Dönüşe bakılmaz.
- **action:service.status_changed**: Durumu değişti. Dönüşe bakılmaz.
- **action:service.suspended**: Askıya alındı. Dönüşe bakılmaz.
- **action:service.terminated**: Sonlandırıldı. Dönüşe bakılmaz.
- **action:service.cancelled**: İptal edildi. Dönüşe bakılmaz.
- **action:service.deleted**: Kaydı silindi. Dönüşe bakılmaz.
- **action:service.renewed**: Yenilendi. Dönüşe bakılmaz.
- **action:service.updowngrade.applied**: Paket değişikliği uygulandı. Dönüşe bakılmaz.
- **action:service.updated**: Kaydı panelden ya da API'den düzenlendi; yazılan kolonlar eski değerleriyle gelir. Dönüşe bakılmaz.

### Kapılar

On sekiz kapı. İkisi aynı işin iki yolunu ayırır: modül işlemi panelden çağrıldığında bir kapı, müşteri panelinden çağrıldığında başka bir kapı çalışır. Kuralınız her ikisi için geçerliyse **ikisine birden** bağlanın.

- **gate:service.suspend**: Askıya alma.
- **gate:service.cancel**: İptal.
- **gate:service.delete**: Silme.
- **gate:service.upgrade**: Paket yükseltme.
- **gate:service.manual_renew**: Elle yenileme.
- **gate:service.status_change**: Durum değişikliği.
- **gate:service.module_action**: Modül işlemi — panelden.
- **gate:service.client_tool**: Modül işlemi — müşteri panelinden.
- **gate:service.transfer_request**: Devir talebi.
- **gate:service.autorenew_toggle**: Otomatik yenilemeyi açma ve kapama.

### Sağlayıcı modülü

- **action:service.module_ran**: Sağlayıcı modülünde bir işlem çalıştı.
- **filter:service.module_result**: Modülün döndürdüğü sonuç.
- **filter:service.build_options**: Hizmet kurulurken yazılacak yük; içindeki options alanı dizi değil JSON metni olarak gelir. Yük referansla değişir ve kayda değişmiş hâliyle gider; dönüş kullanılmaz.
- **filter:service.config_fields**: Hizmetin yapılandırma alanları.
- **filter:service.module_username**: Modülde kullanılacak kullanıcı adı.
- **action:service.password_changed**: Hizmet parolası değişti.

### Detay ekranının verisi

- **filter:service.detail_data**: Hizmet detayının verisi.
- **filter:service.dashboard.cards**: Hizmet panosundaki kartlar.
- **filter:service.dashboard.tools**: Hizmet panosundaki araçlar.
- **filter:service.detail_tabs_capabilities**: Detay sekmelerinin hangi yetenekleri göstereceği.
- **filter:service.upgrade_products**: Yükseltme için sunulan ürünler.

### Kapı ve olay birlikte

```php
// KAPI: odenmemis faturasi olan hizmet askiya alinmasin (once bize sorun).
Hook::add('gate:service.suspend', 10, function ($service) {
    if (Acme::onHold((int) ($service['id'] ?? 0)))
        return 'Bu hizmet incelemede; askiya alma durduruldu.';
    return null;
});

// OLAY: askiya alindiysa dis sisteme bildir.
Hook::add('action:service.suspended', 10, function ($id, $service) {
    Crm::suspended((int) $id);
});
```

## Tuzaklar

> **Otomatik işlemler de bu kancalardan geçer**
> 
> Askıya alma, sonlandırma ve yenileme **zamanlanmış görevlerden** de çalışır. Bir kapıyı "operatör bunu yapmasın" diye yazarsanız aynı kural gece çalışan göreve de uygulanır ve sistem kendi işini yapamaz. Kapının kimi durdurduğunu düşünerek yazın.

> **Olay kancası sunucuda iş bittiğini garanti etmez**
> 
> Durum değişikliği kancası **bizim kaydımız** değiştiğinde çalışır. Sağlayıcı modülünün sunucuda gerçekten hesabı kapatıp kapatmadığı ayrı bir sorudur; modül çağrısı başarısız olsa da kayıt değişmiş olabilir. Sunucu tarafını önemsiyorsanız modül sonucunu veren filtreye bakın.

> **Panel ve müşteri yolları ayrı kapılardır**
> 
> Modül işlemleri iki ayrı kapıdan geçer: biri paneldeki operatör için, biri müşteri panelindeki müşteri için. Yalnız birine bağlanmak, kuralınızın **öbür yoldan atlanabilmesi** demektir. Müşteri yolu ayrıca daha dardır: yalnız modülün açıkça izin verdiği metotlar çağrılabilir.

> **Yenileme iki kez görünebilir**
> 
> Yenileme hem faturanın ödenmesiyle hem de elle tetiklenebilir; ayrıca abonelik tahsilatı da aynı yolu kullanır. Yenilemeye bağlı bir iş yazarken **aynı dönem için iki kez** çalışmaya hazır olun ve kendi tarafınızda tekrarı ayıklayın.

## İlgili Makaleler

- Sipariş Akışı Kancaları
- Fatura ve Ödeme Kancaları
- Modül Yaşam Döngüsü Kancaları
