PHP ile Kargo Takip Sistemi

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

<?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;
}
echo kargoTakip(1, 190514441828);
?>

Bir cevap yazın