Bu yazıda sizlere e-ticaret siteleriniz için yapılan kargo gönderilerinin takibi için ufak bir php kod parçası vereceğim. Bu işlemdeki mantık kargonunun şuanda nerede olduğundan ziyade tesliminin yapılıp yapılmadığı olacak.
Yani bir kargo gönderisi yaptınız sipariş durumu kargolandı olarak girildi. Bu noktada teslim edilip edilmediğini tek tek kargolara girip bakmak yerine bu kodlar ile tek ekrandan görebilirsiniz.
Ben bu işi e-ticaret sitemde müşterilere kargolarının teslim edildiği mailini göndermek için kullanıyordum. Sizler için de derlemek istedim.
Baştan belirtmem gerek ki her kargo firmasında sorunsuz çalışmıyor maalesef. Örneğin ptt kargoda hiç çalışmıyor 🙂 Bunun sebebi ptt kargo her sorgulamada captcha soruyor.
Fonksiyonumuzu yazmaya başlayalım. Ben cURL kullandım siz isterseniz alternatif olarak file_get_contents de kullanabilirsiniz.
Örneği bu linkten test edebilirsiniz. Kaynak kodlarına ise buradan ulaşabilirsiniz.
Not: Henüz sürat krago için fonksiyonu yazamadım yakın zamanda sürat ve ups için de gerekli güncellemeyi yaparım.
Güncelleme: 30.10.2019
–Sürat kargo eklendi
–Ups kargo eklendi
<?phpfunction curlAl($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_REFERER,‘http://www.google.com.tr’);curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1’);$exec = curl_exec($ch);curl_close($ch);return $exec;}function kargoTakip($firma, $kod) {$durum = 0;if($firma == 1) {//yurtici kargo takip kontrol$durum = yurtici($kod);}else if($firma == 2) {//surat kargo takip kontrol$durum = surat($kod);}else if($firma == 3) {//aras kargo takip kontrol$durum = aras($kod);}else if($firma == 4) {//mng kargo takip kontrol$durum = mng($kod);}else if($firma == 5) {//ups kargo takip kontrol$durum = ups($kod);}return $durum;}function yurtici($kod) {$durum = 0; //0 = teslim edilmedi$link = ‘https://selfservis.yurticikargo.com/reports/SSWDocumentDetail.aspx?DocId=’.$kod;$veri = curlAl($link);if(preg_match(‘~Teslim Alan\<\/label\>\<\/td\>[\r\n].*?\<td\>(.*?)\<\/td\>~is’, $veri))$durum = 1; //teslim alan olmusreturn $durum;}function surat($kod) {$durum = 0;$link = ‘http://www.suratkargo.com.tr/kargoweb/bireysel.aspx?no=’.$kod;$veri = curlAl($link);if(preg_match(‘~Teslim Edildi~is’, $veri))$durum = 1; //teslim alan olmusreturn $durum;}function aras($kod) {$durum = 0;$link = ‘https://kargotakip.araskargo.com.tr/mainpage.aspx?code=’.$kod;$veri = curlAl($link);if(preg_match(‘~Teslim alan~is’, $veri))$durum = 1; //teslim alan olmusreturn $durum;}function mng($kod) {$durum = 0;$link = ‘http://service.mngkargo.com.tr/iactive/popup/KargoTakip/link1.asp?k=’.$kod;$veri = curlAl($link);if(preg_match(‘~Teslim Alan~is’, $veri))$durum = 1; //teslim alan olmusreturn $durum;}function ups($kod) {$durum = 0;$link = ‘http://www.ups.com.tr/WaybillSorgu.aspx?Waybill=’.$kod;$veri = curlAl($link);if(preg_match(‘~Paketiniz teslim edilmi~is’, $veri))$durum = 1; //teslim alan olmusreturn $durum;}echo kargoTakip(1, 190514441828);?>
<?php function curlAl($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_REFERER,'http://www.google.com.tr'); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1'); $exec = curl_exec($ch); curl_close($ch); return $exec; } function kargoTakip($firma, $kod) { $durum = 0; if($firma == 1) { //yurtici kargo takip kontrol $durum = yurtici($kod); } else if($firma == 2) { //surat kargo takip kontrol $durum = surat($kod); } else if($firma == 3) { //aras kargo takip kontrol $durum = aras($kod); } else if($firma == 4) { //mng kargo takip kontrol $durum = mng($kod); } else if($firma == 5) { //ups kargo takip kontrol $durum = ups($kod); } return $durum; } function yurtici($kod) { $durum = 0; //0 = teslim edilmedi $link = 'https://selfservis.yurticikargo.com/reports/SSWDocumentDetail.aspx?DocId='.$kod; $veri = curlAl($link); if(preg_match('~Teslim Alan\<\/label\>\<\/td\>[\r\n].*?\<td\>(.*?)\<\/td\>~is', $veri)) $durum = 1; //teslim alan olmus return $durum; } function surat($kod) { $durum = 0; $link = 'http://www.suratkargo.com.tr/kargoweb/bireysel.aspx?no='.$kod; $veri = curlAl($link); if(preg_match('~Teslim Edildi~is', $veri)) $durum = 1; //teslim alan olmus return $durum; } function aras($kod) { $durum = 0; $link = 'https://kargotakip.araskargo.com.tr/mainpage.aspx?code='.$kod; $veri = curlAl($link); if(preg_match('~Teslim alan~is', $veri)) $durum = 1; //teslim alan olmus return $durum; } function mng($kod) { $durum = 0; $link = 'http://service.mngkargo.com.tr/iactive/popup/KargoTakip/link1.asp?k='.$kod; $veri = curlAl($link); if(preg_match('~Teslim Alan~is', $veri)) $durum = 1; //teslim alan olmus return $durum; } function ups($kod) { $durum = 0; $link = 'http://www.ups.com.tr/WaybillSorgu.aspx?Waybill='.$kod; $veri = curlAl($link); if(preg_match('~Paketiniz teslim edilmi~is', $veri)) $durum = 1; //teslim alan olmus return $durum; } if($_POST) { $kod =@ $_POST['kod']; $firma =@ $_POST['firma']; if(!empty($kod) && !empty($firma)) { $durum = kargoTakip($firma, $kod); if($durum == 1) $sonuc = 'Kargo Teslim Edilmiş'; else $sonuc = 'Kargo Henüz Tesilim Edilmemiş'; echo $sonuc; } } ?> <form method="POST"> <input type="text" name="kod" placeholder="Kargo Kodu" /> <select name="firma"> <option value="0">Kargo Seçiniz</option> <option value="1">Yurtiçi</option> <option value="2">Sürat</option> <option value="3">Aras</option> <option value="4">MNG</option> <option value="5">UPS</option> </select> <input type="submit" /> </form>