Merhabalar çok mantıklı bir yaklaşım olamayabilir ama laravelde paytr ödeme sistemi kullanıyorum.Ödeme sistemi ödeme yapıldığında asenkron olarak ulaşabileceği bir sayfaya post dizisi gönderiyor.Bu sayfayı public klasörü içinde Bildirim_Islemleri.php olarak tutuyorum.Benim bu sayfa üzerinden bir controllera ulaşmam ve o controller içerisindeki mail gönderme metodumu çağırmam gerekiyor bunu nasıl yapabilirim acaba?Sayfa asenkron olduğu için ben veya bir kullanıcı urlye girdiğinde zaten çalışmıyor.Paytrnin sistemi tarafından tetikleniyor.Birden fazla resim veya kod atamadığım için sorunun stackoverflow linkini paylaşıyorum.Orda sorunu ya ben net anlatamadım yada oradakiler anlamadılar o yüzden çözemedik.Türk bir arkadaşın çözüm önerisi queue kullanmaktı ama yapılacak işlemler asenkron değil sadece bana veri asenkron şekilde geliyor.Bu da bir çözüm olmadı maalesef.Bu konu hakkında yardımcı olabilecek arkadaşlar olabilirse çok sevinirim.
Dışarıdan gelecek talepler için de rota açabilirsiniz. Direkt routes/web.php
dosyası içinde bir rota tanımlayıp, rotayı bir Controller’ın bir methoduna işaret edebilir ve callback işlemlerini o methoda yazabilirsiniz. Ancak bu talep bir POST
olarak geliyorsa web.php
içinde tanımladığınızda csrf
middleware’ine takılabilir. Bu yüzden dışarıdan gelecek bu callbackler için rota tanımını routes/api.php
içine yazabilirsiniz.
Böylece şöyle bir durum doğuyor:
routes/api.php
use App\Http\Controllers\PayTRController;
Route::post('paytrcallback', [PayTRController::class, 'callback']);
app/Http/Controllers/PayTRController.php
// varsayılan bir controller dosyası, içine callback methodu açılacak
public function callback()
{
// buraya daha önceden Bildirim_Islemleri.php dosyasında bulunan işlemleri taşıyacaksınız
}
Böylece https://uygulamaadresiniz.com/api/paytrcallback
adresini callback için iletebileceksiniz.
Buna benzer bir yanıt Stackoverflow’da da verilmiş ama neden eksi puan verdiğinizi anlamadım
Selamlar, Sana yardımcı olurdum ama eksi verirsin diye korkuyorum. Umarım çözememişsindir