PHP ile Otomatik Havale Onaylama

Türk Full Stack Developer

PHP ile Otomatik Havale Onaylama

Merhaba, bu yazımda sizlere özellikle E-ticaret sitelerinde çok fazla ihtiyaç duyulan bir durumdan bahsetmek istiyorum. Durumun Adı PHP ile Otomatik Havale Onaylama

 

Özellikle büyük bir E-ticaret siteniz var ise, müşterileriniz de biraz fazla ise. Mutlaka sistemde kredi kartı ile ödeme modülünü kullanıyor olmanız gerekiyor. Ancak Türkiye şartlarında insanlar kredi kartı bilgilerini her siteye girmek istemiyor.  Malum olduğu üzere dolandırıcılık olayları pek fazla. O nedenle ülkemizde hala halave ile ödeme yapma pek çok rağbet göremektedir.

PHP ile Otomatik Havale Onaylama

 

Ancak, havaleler pek çok web sitesi sahibi için ekstra bir iş gücü getirmektedir. Gelen havaleleri tek tek kontrol etmek. Gelenleri onaylamak, gelmeyenlere cevap yazmak gibi pek çok durum web site sahibinin canını sıkmaktadır. İşte bu durumun üstesinden gelebilmek için PHP ile Otomatik Havale Onaylama sistemini sizlere tanıtmak istiyorum.

PHP ile Otomatik Havale Onaylama

Öncelikle sistemin çalışabilmesi için, çalıştığınız bankanın size bir EFT veya Havale gelmesi durumunda belirteceğiniz bir mail adresine ödeme detaylarını atıyor olması gerekmektedir. Bu yazımda anlatacağım modüldeki senaryo, Enpara hesabına ödeme alan bir işletmenin Gmail’ine gelen bir bildirim maili kullanılmıştır. Eğer siz başka bir banka veya başka bir mail sunucusu kullanıyorsanız mutlaka kodlarda kendinize göre değişiklikler yapmalısınız.

Şimdi lafı çok uzatmadan kodları paylaşıp ardından açıklamaları getirmek istiyorum.

<?php
	// Gmail için sunucu ve kullanıcı bilgilerinin girilmesi gerekmektedir.
	$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
	$username = 'ornekmail@gmail.com';
	$password = 'sifrebilgileri';
	
	// Banka Bilgilerinin Girilmesi Gerekmektedir.
	$banka		= "Enpara";
	
	$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
 
	//mail adresinize giren kod, okunmamış ve sizin bankanızdan gelen maillere bakıyor
	$emails = imap_search($inbox,'UNSEEN From '.$banka);
	
	if($emails) {
		rsort($emails);
		foreach($emails as $email_number) {
			$headerInfo = imap_headerinfo($inbox,$email_number);
			$structure 	= imap_fetchstructure($inbox, $email_number); 
			$overview 	= imap_fetch_overview($inbox,$email_number,0);
			$message 	= imap_qprint(imap_fetchbody($inbox,$email_number,1));
			preg_match('#Tutar(.*?)TL</span></p></td>#si',$message,$degisken); //Eğer bankanız değişikse mutlaka değiştirin
			preg_match('#klama(.*?)<td style="width: 3.3000002px#si',$message,$degisken2); //Eğer bankanız değişikse mutlaka değiştirin
			preg_match('#Ad/ unvan(.*?)<tr valign="top">#si',$message,$degisken3); //Eğer bankanız değişikse mutlaka değiştirin
			$gonderen = trim(strip_tags($degisken3[1]));
			$gonderen = str_replace(":", "", $gonderen);
			 
			$aciklama = trim(strip_tags($degisken2[1]));
			$aciklama = str_replace(":", "", $aciklama);
			 
			$tutar = trim(strip_tags($degisken[1]));
			$tutar = str_replace(":", "", $tutar);
			$tutar = explode(",", $tutar);
			$tutar = $tutar[0];
			 
			if(strstr($aciklama, 'BORC-SC')) {
			   $userid = explode("SC", $aciklama);
			   $userid = $userid[1];
				// Odeme basarili ise $userid havale kismindaki aciklamaya yazdirdiginiz ID numarasini verir.
				// $tutar yatirilan tutar, virgulden sonrasini almaz.
				// $gonderen gonderen kisi isim ve soyisim
			}
			
			/* mail okundu olarak isaretlenir */
			$status = imap_setflag_full($inbox, $overview[0]->msgno, "\Seen \Flagged");
		}
	}
 
	imap_close($inbox);
?>

Görüldüğü üzere kodlar son derece basit. Ancak bu kodların doğru yorumlanabilmesi için özellikle Regex (Düzenli İfadeler) konusunda biraz uzmanlaşmış olmak gerekmektedir.

Herkese iyi çalışmalar dilerim.

3 Yorum

  1. Hocam, php ile aylık düzenli ödeme alma sistemi nasıl kodlayabilirim? Bu konuda da tecrübeniz oldu mu?

    1. Bir çok yolla olabilir. Fakat iyzico otomatik ödemeyi kabul etmez. kullanıcı kendisi ödeme yapmak zorundadır

  2. Banka anlaşmamız var. Direkt api açık. Lakin algoritma konusunda kafam karışık.

    Siz, böyle bir projede daha önce çalıştıysanız, yardım edebilir misiniz?

    Kart bilgileri sağladıktan sonra, nasil bir yol izlemem gerekiyor?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir