Sipariş Yapılandırma Kancaları
Müşteri sipariş verirken seçim yaptığı ekranların sekiz kancası: yapılandırma, alan adı ekleme, ek hizmet ekleme ve provizyon.
Genel Bakış
Yapılandırma ekranı, müşterinin ürünü kendine göre ayarladığı yerdir: alan adı seçimi, ek hizmetler, dönem, özel alanlar. Buradaki kancalar hem ekranı hem seçimin geçerliliğini etkiler.
Son kanca farklıdır: ödeme tamamlandıktan sonra hizmetler kurulmadan hemen önce çalışır. Sipariş kaleminden hizmete geçişin son durağıdır.
Referans
Yapılandırmayı durdurma
Yapılandırılmış ürün sepete yazılmadan önce çalışır; seçimler toplanmış hâldedir.
none, owned, register, transfer, subdomain), ek hizmetler, özel alanlar. Müşterinin bütün seçimleri buradadır.Hook::add('gate:order.item_configure', 10, function ($product, $cycle, $options) {
// Musterinin tum secimleri $options icinde: is kuralinizi burada dogrulayin.
if (($options['domain']['option'] ?? '') === 'owned'
&& !Acme::domainReachable($options['domain']['name'] ?? ''))
return 'Girdiginiz alan adina ulasilamiyor.';
return null;
});Yapılandırma ekranını değiştirme
Yapılandırma sayfasının verisi hazırlandıktan sonra çalışır.
edit işareti. edit dolu ise müşteri sepetteki bir satırı düzenliyordur, yeni ürün eklemiyordur.Hook::add('filter:order.configure_data', 10, function (&$data, $ctx) {
// edit dolu ise musteri sepetteki satiri duzenliyor, yeni urun eklemiyor.
if (!empty($ctx['edit'])) return;
$data['acme_hint'] = Acme::upsellHint((int) ($ctx['id'] ?? 0));
});Ek hizmet ekranını değiştirme
Ek hizmet satın alma ekranının verisi hazırlandıktan sonra çalışır.
Hook::add('filter:order.configure_addon_data', 10, function (&$data, &$ctx) {
// $ctx icindeki listeler KOPYADIR: degisiklik icin $data'yi kullanin.
$data['services'] = Acme::filterServices($data['services'] ?? []);
});Alan adı eklemeyi durdurma
Alan adı sepete yazılmadan önce çalışır.
register ya da transfer), tam ad, ad ve uzantı parçaları, yıl. Yıl burada her zaman 1'dir; dönem yapılandırmada değişir.Hook::add('gate:order.domain_add', 10, function ($tldRow, $item) {
// Transferde ek kontrol; kayitta gerek yok.
if (($item['action'] ?? '') === 'transfer' && Acme::recentlyRegistered($item['domain'] ?? ''))
return 'Yeni kaydedilmis alan adi 60 gun transfer edilemez.';
return null;
});Ek hizmet eklemeyi durdurma
Hizmete ek hizmet eklenmeden önce çalışır; hizmetin müşteriye ait olduğu doğrulanmıştır.
select, radio, checkbox, quantity), durum, özellikler.upgrade_of. upgrade_of sıfırdan büyükse bu yeni alım değil, mevcut bir ek hizmetin yükseltilmesidir.Hook::add('gate:order.service_addon_add', 10, function ($service, $addon, $item) {
// upgrade_of > 0 ise bu bir YUKSELTMEDIR, yeni alim degil.
if ((int) ($item['upgrade_of'] ?? 0) > 0) return null;
if (($service['status'] ?? '') !== 'active')
return 'Etkin olmayan hizmete ek hizmet eklenemez.';
return null;
});Kurulacak hizmetleri değiştirme
Ödeme tamamlandıktan sonra, sipariş kalemlerinden hizmetler kurulmadan hemen önce çalışır.
Hook::add('filter:order.services_items', 10, function (&$ctx, &$items) {
// Kalem CIKARMAK hizmeti hic kurmaz: musteri odedi ise elle telafi edin.
foreach ($items as &$i)
$i['options']['acme_batch'] = Acme::batchFor((int) ($ctx['order_id'] ?? 0));
});Satış ortağı değişimini izleme
Siparişin satış ortağı değiştikten sonra çalışır.
0 demek ortaklığın kaldırıldığı demektir; yeni ortak değil.Hook::add('action:order.affiliate_changed', 10, function ($order_id, $affiliate_id) {
// 0 = ortaklik KALDIRILDI; komisyonu da geri almaniz gerekebilir.
if ($affiliate_id === 0) Acme::revokeCommission((int) $order_id);
});Siparişten hizmet çıkarmayı izleme
Bir hizmet siparişten çıkarıldıktan sonra çalışır. Sipariş kaydı yerinde kalır.
Hook::add('action:order.service.deleted', 10, function ($order_id, $service_id) {
Audit::orderLineRemoved((int) $order_id, (int) $service_id);
});Tuzaklar
Hizmet kurulum filtresi ödeme tamamlandıktan sonra çalışır. Bir kalemi listeden çıkarırsanız o hizmet hiç kurulmaz ama müşteri parasını ödemiştir ve fatura yerinde durur. Bir şeyi engellemek istiyorsanız bunu sepet ya da ödeme adımı kapısında yapın.
İkinci parametre referansla geçse de içindeki listeler kopyadır: orada yaptığınız değişiklik ekrana yansımaz ve dinleyiciniz hiçbir şey yapmamış gibi görünür. Değiştirmek istediğiniz şey ilk parametrededir.
Ek hizmet kapısındaki satırda upgrade_of sıfırdan büyükse müşteri yeni bir şey almıyor, var olanı yükseltiyordur. "Bu ek hizmet zaten var, ikincisini engelle" diye yazılan bir kural, yükseltmeyi de engeller.
Ekran filtresindeki bağlamda edit doluysa müşteri yeni ürün eklemiyor, sepetteki bir satırı düzenliyordur. Ek satış önerisi ya da karşılama metni gibi şeyleri düzenleme kipinde göstermek, müşterinin zaten yaptığı seçimi tekrar sormak olur.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.