Ödeme Kuruluşu Kancaları
Ödeme kuruluşuyla konuşan on dört kanca: uzlaşma, geri dönüş bildirimi, saklı kartlar ve abonelik tahsilatı.
Genel Bakış
Ödeme kuruluşuyla iletişim iki yönlüdür. Biz bir tahsilat isteriz, kuruluş cevabını ya hemen verir ya da sonradan geri bildirim olarak gönderir. İkinci yol tarayıcıdan da gelebilir, doğrudan sunucudan da.
Saklı kartlarda ise kart numarası bize hiç gelmez: kuruluş bir anahtar saklar, biz yalnız gösterim bilgisini (son dört hane, marka, son kullanma) tutarız. Kancalara da yalnız o bilgi gelir.
Referans
Uzlaşmayı izleme
Ödeme kuruluşuyla uzlaşma tamamlandıktan sonra çalışır.
settled_status alanı pending olabilir: para henüz kesinleşmemiş demektir.Hook::add('action:payment.settled', 10,
function ($module, $checkout, $result, $response) {
// BEKLEMEDE olabilir: para kesinlesmeden hizmet acmayin.
if (($checkout['data']['settled_status'] ?? '') !== 'successful') return;
Accounting::gatewaySettled($module->name, $checkout);
});Geri bildirimi izleme
Ödeme kuruluşunun geri bildirimi yorumlandıktan sonra çalışır.
already işareti. already "bu bildirim daha önce işlendi" demektir.false ise müşterinin tarayıcısı döndürmüştür; müşteri o sayfayı hiç açmamış da olabilir.Hook::add('action:payment.callback_returned', 10,
function ($module, $checkout, $settle, $is_s2s) {
// Bos checkout = eslesmeyen bildirim; tekrar isaretini de kontrol edin.
if (!$checkout || !empty($settle['already'])) return;
Ops::note('gateway-callback', $module->name, $is_s2s ? 'sunucu' : 'tarayici');
});Kart eklemeyi durdurma
Müşteri kart eklerken çalışır. Kart numarası bu kancaya gelmez; karar için yalnız hesap ve modül bilgisi vardır.
false.Hook::add('gate:payment.card_add', 10, function ($uid, $moduleName, $autoPay) {
// Kart numarasi buraya GELMEZ: karari hesap uzerinden verin.
if (Acme::cardCount($uid) >= 5) return 'En fazla 5 kart saklanir.';
return null;
});Kart saklandığını izleme
Kart kuruluşta saklandıktan sonra çalışır.
Hook::add('action:payment.card_stored', 10, function ($userId, $cardId, $module, $card) {
// Yalniz gosterim bilgisi gelir; numara ve token asla.
Notify::securityEvent($userId, 'card-added', $card['ln4'] ?? '');
});Varsayılan kartı izleme
Bir kart varsayılan yapıldıktan sonra çalışır.
Hook::add('action:payment.card_default_set', 10, function ($uid, $cardId) {
Audit::note('card-default', (string) $uid, (string) $cardId);
});Kart silmeyi izleme
Saklı kart silindikten sonra çalışır.
Hook::add('action:payment.card_removed', 10, function ($uid, $cardId) {
// Son kart silindiyse otomatik odeme sessizce durur: musteriyi uyarin.
if (Acme::cardCount($uid) === 0) Notify::noCardLeft($uid);
});Abonelik iptalini durdurma
Müşteri ödeme kuruluşundaki tekrarlayan anlaşmayı iptal ederken çalışır.
Hook::add('gate:payment.subscription_cancel', 10, function ($uid, $id) {
// Anlasma iptali hizmeti kapatmaz ama odemeyi keser: once uyarin.
if (Acme::activeServices($uid) > 0 && !Acme::confirmed($uid))
return 'Aktif hizmetiniz var; iptali onaylamaniz gerekiyor.';
return null;
});Abonelik yoklamasını izleme
Zamanlanmış görev ödeme kuruluşundaki anlaşmaları sorguladıktan sonra çalışır.
Hook::add('action:payment.subscription_polled', 10, function ($subscription, $result) {
// Duzenli calisir: her yoklamada degil, DEGISIKLIKTE tepki verin.
Acme::syncSubscription($subscription, $result);
});Kuruluş ayarlarının kaydını izleme
Bir ödeme modülünün ayarları kaydedildikten sonra çalışır.
Hook::add('action:payment.settings_saved', 10, function ($module_name, $config) {
// Yapilandirmanin kendisini DEGIL, yalniz degistigi bilgisini tasiyin.
Acme::notifyOps('odeme ayari degisti: ' . $module_name);
});Kart sorgusunu devralma
Kartın ilk hanelerinden banka ve tip çözülürken çalışır. Doldurursanız dış servise hiç gidilmez.
Hook::add('filter:payment.bin_lookup', 10, function (&$result, $bin_number) {
// Kendi onbelleginiz varsa dis servise hic cikmayin.
$cached = Acme::binCache($bin_number);
if ($cached) $result = $cached;
});Ödeme panelini kendi ekranınızla değiştirme
Ödeme adımında kuruluşun paneli hazırlanırken çalışır. Kendi ekranınızı burada gösterir, klasik ödeme sayfasını atlarsınız.
Hook::add('filter:payment.gateway_pane', 10, function (&$html, &$ctx) {
// Dolu birakmak kendi ekraniniz, bos birakmak klasik sayfa demektir.
$html = Acme::renderPane($ctx);
});Anlaşmanın iptalini izleme
Bir ödeme anlaşması iptal edildikten sonra çalışır. Bundan sonra o anlaşmadan tahsilat gelmez.
Hook::add('action:payment.subscription_cancelled', 10, function ($subscription_id, $sub) {
// Bagli hizmetler artik otomatik tahsilatsiz kalir.
Acme::warnUnpaidRisk((int) ($sub['user_id'] ?? 0));
});Anlaşmadan üye çıkarmayı durdurma
Bir hizmet ya da eklenti ödeme anlaşmasından çıkarılmadan önce çalışır.
service ya da addon.Hook::add('gate:payment.subscription_member_remove', 10,
function ($uid, $subscription_id, $type, $mid, $member, $sub) {
// Taahhut suresi dolmadan cikarmaya izin vermeyin.
if (Acme::underCommitment($mid, $type)) return 'Taahhut suresi dolmadan cikarilamaz.';
return null;
});Üyenin çıkarılmasını izleme
Üye anlaşmadan çıkarıldıktan sonra çalışır.
service ya da addon.Hook::add('action:payment.subscription_member_removed', 10,
function ($type, $id, $member, $sub, $history) {
// 'Hangi anlasmadan cikti' sorusu eski degerde durur.
Acme::detached($type, $id, (int) ($member['subscription_id'] ?? 0));
});Tuzaklar
Uzlaşma kaydında durum beklemede olabilir: kuruluş işlemi almış ama kesinleştirmemiştir. Bu durumu kontrol etmeden hizmet açan bir dinleyici, sonradan başarısız olan bir ödeme için bedava hizmet vermiş olur.
Modül bildirimi bir ödeme kaydına bağlayamazsa kanca boş bir dizi alır. Bu, sahte ya da eşleşmeyen bir bildirim demektir. Ayrıca aynı bildirim tekrar gelebilir; sonuçtaki "daha önce işlendi" işaretini kontrol etmeyen dinleyici işi çiftler.
Saklı kart kancaları yalnız gösterim bilgisi taşır: son dört hane, marka, son kullanma. Numara, güvenlik kodu ve kuruluş anahtarı bize hiç gelmez. Kart üzerinden karar veren bir kural yazamazsınız; kararınızı hesap üzerinden kurun.
Geri bildirim sunucudan gelmişse ödeme kuruluşu konuşuyordur. Tarayıcıdan geldiyse müşteri o sayfayı hiç açmamış olabilir — kapatmış, ağı kopmuş, yönlendirmeyi kaçırmış olabilir. Paraya bağlı işi sunucu bildirimine dayandırın.
İlgili Makaleler
- Ödeme Kancaları
- Fatura Yaşam Döngüsü Kancaları
- Sipariş Akışı Kancaları
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.