0% found this document useful (0 votes)
6 views9 pages

API_trackorder

The document is a PHP script that processes tracking numbers for various courier services. It retrieves tracking information from a database and makes API calls to different third-party services based on the courier's API ID. The script handles errors for missing tracking numbers and returns tracking status data in JSON format.

Uploaded by

Abdul Manan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views9 pages

API_trackorder

The document is a PHP script that processes tracking numbers for various courier services. It retrieves tracking information from a database and makes API calls to different third-party services based on the courier's API ID. The script handles errors for missing tracking numbers and returns tracking status data in JSON format.

Uploaded by

Abdul Manan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 9

<?

php
date_default_timezone_set("Asia/Karachi");
include_once "../includes/conn.php";
include '../price_calculation.php';
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers,
Authorization, X-Requested-With");
$content = (array)json_decode(file_get_contents("php://input"));
$tracking_no = trim($content['tracking_no']);
if(empty($tracking_no)){
$error_msg = "Tracking No is required";
echo json_encode($error_msg);
exit();
}

$trackNoExplode = explode(',', $tracking_no);


$trackNoArray = '';
foreach ($trackNoExplode as $key => $single) {
$trackNoArray .= "'" . $single . "',";
}
$trackNoArray = rtrim($trackNoArray, ',');
$tracking_sql = "SELECT * FROM orders WHERE track_no IN(" . $trackNoArray . ")";

$track_query = mysqli_query($con, $tracking_sql);


$count = mysqli_num_rows($track_query);
$track_data = array();
if ($count == 0) {
$error_msg = "Tracking not found";
echo json_encode($error_msg);
exit();
} else {
while ($row = mysqli_fetch_array($track_query)) {

$api_tracking_no = $row['api_tracking_no'];
$api_id = $row['api_id'];
$tracking_number = isset($api_tracking_no) && $api_tracking_no != '' ?
$api_tracking_no : 0;
$track__No = $row['track_no'];

$booking_api_id = 0;

if(isset($api_id) && !empty($api_id)){


$api_settings_row = mysqli_fetch_assoc(mysqli_query($con, "SELECT
* FROM third_party_apis WHERE id ='" . $api_id . "' "));
$booking_api_id = isset($api_settings_row['booking_api_id']) ?
$api_settings_row['booking_api_id'] : 0;
}

if($api_id == 5){
$api_settings = mysqli_fetch_assoc(mysqli_query($con, "SELECT *
FROM third_party_apis WHERE id ='" . 5 . "' "));
$api_key=$api_settings['api_key'];
$api_password=$api_settings['api_secret_key'];

$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL,
'http://new.leopardscod.com/webservice/trackBookedPacket/format/json/');
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, json_encode(array(
'api_key' => $api_key,
'api_password' => $api_password,
'track_numbers' => $tracking_number
// 'track_numbers' => 'JD588086656'
)));
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, [
'Authorization: 19C98763F68E6A06F4486D99D12D0A25',
'Content-Type: application/json'
]);

$buffer = curl_exec($curl_handle);
curl_close($curl_handle);

$data = json_decode($buffer);
// echo "<pre>"; print_r($data); die;
$leopard_tracking = array();
$packet_list = $data->packet_list;
foreach ($packet_list as $key => $value) {

foreach ($value as $key => $val) {


$leopard_tracking = $val;
}
}
}

if($api_id == 6){

$api_settings = mysqli_fetch_assoc(mysqli_query($con, "SELECT *


FROM third_party_apis WHERE id ='" . $api_id . "' "));
$api_key=$api_settings['api_key'];
$api_password=$api_settings['api_secret_key'];

// $tracking_number='20222331696976';

$url = 'https://sonic.pk/api/shipment';
$collection_name = 'track?tracking_number=' . $tracking_number .
'&type=0';
// $collection_name = 'status?
tracking_number=2232233738742&type=0';
$request_url = $url . '/' . $collection_name;
$curl = curl_init($request_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Host: sonic.pk',
"Authorization: $api_key",
'Content-Type: application/json'
]);
$response = curl_exec($curl);
curl_close($curl);
$data1 = json_decode($response);

$sonic_tracking=array();
$sonic_tracking=$data1->details->tracking_history;
}
if($api_id == 7){
$bluex_tracking = [];
$api_settings = mysqli_fetch_assoc(mysqli_query($con, "SELECT *
FROM third_party_apis WHERE id ='" . 7 . "' "));
$user_name=$api_settings['user_name'];
$password=$api_settings['password'];

$ch = curl_init();
curl_setopt($ch,
CURLOPT_URL,"https://bigazure.com/api/json_v3/tracking/get_tracking.php");
curl_setopt($ch, CURLOPT_USERPWD, $user_name . ":" . $password);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
json_encode(['consignment_no'=>$tracking_number]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response);
if($data->status == "1"){
$bluex_tracking = isset($data->response) ? $data-
>response : [];
}
}

if($api_id == 8){
$daewoo_tracking = [];
$response =
file_get_contents("https://codapi.daewoo.net.pk/api/booking/quickTrack?
trackingNo=$tracking_number");
$data = json_decode($response);
if(isset($data->Result->Success) && $data->Result->Success ==
true && isset($data->Result->TrackingDetails)){
$daewoo_tracking = $data->Result->TrackingDetails;
}
}

if($api_id == 10){
$mnp_tracking = [];
$api_settings = mysqli_fetch_assoc(mysqli_query($con, "SELECT *
FROM third_party_apis WHERE id ='" . 10 . "' "));
$user_name=$api_settings['user_name'];
$password=$api_settings['password'];
$booking_api_id = $api_settings['booking_api_id'];
$response =
file_get_contents("https://mnpcourier.com/mycodapi/api/Tracking/Consignment_Trackin
g?username=$user_name&password=$password&consignment=$tracking_number");
$data = json_decode($response);

if(!empty($data)){
$responseObj = $data[array_key_first($data)];
$trackingDetails = isset($responseObj->tracking_Details) ?
$responseObj->tracking_Details : [];
$trackingInnerDetailsObj =
$trackingDetails[array_key_first($trackingDetails)];
$mnp_tracking = isset($trackingInnerDetailsObj->Details) ?
$trackingInnerDetailsObj->Details : [];
}
}
if ($api_id == 13) {
$tcs_tracking = [];

$api_settings = mysqli_fetch_assoc(mysqli_query($con, "SELECT *


FROM third_party_apis WHERE id ='" . 13 . "' "));
$authorization = $api_settings['authorization'];

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL =>
"https://connect.tcscourier.com/tracking/api/Tracking/GetDynamicTrackDetail?
consignee=$tracking_number",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array(
'accept: */*',
"Authorization: Bearer $authorization"
),
));

$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response);

if (!empty($data->checkpoints)) {
$tcs_tracking = $data->checkpoints;
}
}

if($api_id == 14){

$postex_tracking=array();
$api_settings = mysqli_fetch_assoc(mysqli_query($con, "SELECT *
FROM third_party_apis WHERE id ='" . 14 . "' "));
$api_key=$api_settings['api_key'];

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL =>
"https://api.postex.pk/services/integration/api/order/v1/track-order/
$tracking_number",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
"token: $api_key"
),
));

$response = curl_exec($curl);
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$data = json_decode($response);
curl_close($curl);

if($httpcode == 200 && isset($data->statusCode) && $data-


>statusCode == 200 && isset($data->dist)){
$transaction_obj = $data->dist;
$postex_tracking = isset($transaction_obj-
>transactionStatusHistory) ? $transaction_obj->transactionStatusHistory : [];
}
}

if($booking_api_id == 6){
$quick_tracking = [];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL =>
'https://thequickservice.online/portal/API/TrackOrder.php',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"tracking_no": "'.$tracking_number.'"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
),
));

$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response);
if(!empty($data)){
$quick_tracking = $data;
}
}

if($api_id == 5 && !empty($leopard_tracking)){


foreach ($leopard_tracking as $key => $singleStatus) {
$leoStatus = mysqli_real_escape_string($con,$singleStatus-
>Status);
if (strpos($leoStatus, 'Dispatched') !== false) {
$leoStatus = 'Dispatched';
}
if (strpos($leoStatus, 'Shipment picked') !== false) {
$leoStatus = 'Shipment picked';
}
$query = mysqli_query($con, "SELECT order_status.status as
our_status, third_party_api_status_mapping.api_status from
third_party_api_status_mapping join order_status on order_status.sts_id =
third_party_api_status_mapping.status_id where api_provider_id='5' AND
third_party_api_status_mapping.api_status='" . $leoStatus . "' LIMIT 1") or
die(mysqli_error($con));
$fetch1 = mysqli_fetch_array($query);

$show_status = $singleStatus->Status;
if(isset($fetch1['our_status']) && !
empty($fetch1['our_status'])){
$show_status = $fetch1['our_status'];
}
$timestamp = $singleStatus->Activity_Date . ' ' .
$singleStatus->Activity_Time;
$data = array(
'tracking_no' => $track__No,
'status' => $show_status,
'created' => $timestamp,
);
array_push($track_data, $data);
}
} else if($api_id == 6 && !empty($sonic_tracking)) {
foreach ($sonic_tracking as $key => $singleStatus) {
$leoStatus = mysqli_real_escape_string($con,$singleStatus-
>status);
$query = mysqli_query($con, "SELECT order_status.status as
our_status, third_party_api_status_mapping.api_status from
third_party_api_status_mapping join order_status on order_status.sts_id =
third_party_api_status_mapping.status_id where api_provider_id='6' AND
third_party_api_status_mapping.api_status='" . $leoStatus . "' LIMIT 1") or
die(mysqli_error($con));
$fetch1 = mysqli_fetch_array($query);
$show_status = $singleStatus->status;
if(isset($fetch1['our_status']) && !
empty($fetch1['our_status'])){
$show_status = $fetch1['our_status'];
}

if(!empty($singleStatus->status_reason)){
$show_status = $show_status.' ('.$singleStatus-
>status_reason.')';
}

$timestamp = $singleStatus->date_time;
$data = array(
'tracking_no' => $track__No,
'status' => $show_status,
'created' => $timestamp,
);
array_push($track_data, $data);
}
} else if($api_id == 7 && !empty($bluex_tracking)){
foreach ($bluex_tracking as $key => $singleStatus) {
$leoStatus = mysqli_real_escape_string($con,$singleStatus-
>status_message);
$query = mysqli_query($con, "SELECT order_status.status as
our_status, third_party_api_status_mapping.api_status from
third_party_api_status_mapping join order_status on order_status.sts_id =
third_party_api_status_mapping.status_id where
third_party_api_status_mapping.api_provider_id='7' AND
third_party_api_status_mapping.api_status='" . $leoStatus . "' LIMIT 1") or
die(mysqli_error($con));
$fetch1 = mysqli_fetch_array($query);
$show_status = $singleStatus->status_message;
if(isset($fetch1['our_status']) && !
empty($fetch1['our_status'])){
$show_status = $fetch1['our_status'];
}
$timestamp = date("Y-m-d",strtotime($singleStatus-
>status_date)) . ' ' . date("H:i:s",strtotime($singleStatus->status_time));
$data = array(
'tracking_no' => $track__No,
'status' => $show_status,
'created' => $timestamp,
);
array_push($track_data, $data);
}
} else if($api_id == 8 && !empty($daewoo_tracking)){
foreach ($daewoo_tracking as $key => $singleStatus) {
$leoStatus = mysqli_real_escape_string($con,$singleStatus-
>Status);
$query = mysqli_query($con, "SELECT order_status.status as
our_status, third_party_api_status_mapping.api_status from
third_party_api_status_mapping join order_status on order_status.sts_id =
third_party_api_status_mapping.status_id where
third_party_api_status_mapping.api_provider_id='8' AND
third_party_api_status_mapping.api_status='" . $leoStatus . "' LIMIT 1") or
die(mysqli_error($con));
$fetch1 = mysqli_fetch_array($query);
$show_status = $singleStatus->Status;
if(isset($fetch1['our_status']) && !
empty($fetch1['our_status'])){
$show_status = $fetch1['our_status'];
}
$timestamp = DateTime::createFromFormat('Y-m-d H:i:s',
$singleStatus->Date)->format('Y-m-d H:i:s');
$data = array(
'tracking_no' => $track__No,
'status' => $show_status,
'created' => $timestamp,
);
array_push($track_data, $data);
}
} else if($api_id == 10 && !empty($mnp_tracking)){
foreach ($mnp_tracking as $key => $singleStatus) {
$leoStatus = mysqli_real_escape_string($con,$singleStatus-
>Status);
$query = mysqli_query($con, "SELECT order_status.status as
our_status, third_party_api_status_mapping.api_status from
third_party_api_status_mapping join order_status on order_status.sts_id =
third_party_api_status_mapping.status_id where
third_party_api_status_mapping.booking_api_id='$booking_api_id' AND
third_party_api_status_mapping.api_status='" . $leoStatus . "' LIMIT 1") or
die(mysqli_error($con));
$fetch1 = mysqli_fetch_array($query);
$show_status = $singleStatus->Status;
if(isset($fetch1['our_status']) && !
empty($fetch1['our_status'])){
$show_status = $fetch1['our_status'];
}
$timestamp = Date('Y-m-d H:i:s',strtotime($singleStatus-
>DateTime));
$data = array(
'tracking_no' => $track__No,
'status' => $show_status,
'created' => $timestamp,
);
array_push($track_data, $data);
}
} else if($api_id == 13 && !empty($tcs_tracking)){
foreach ($tcs_tracking as $key => $singleStatus) {
$leoStatus = mysqli_real_escape_string($con,$singleStatus-
>status);
$query = mysqli_query($con, "SELECT order_status.status as
our_status, third_party_api_status_mapping.api_status from
third_party_api_status_mapping join order_status on order_status.sts_id =
third_party_api_status_mapping.status_id where
third_party_api_status_mapping.booking_api_id='7' AND
third_party_api_status_mapping.api_status='" . $leoStatus . "' LIMIT 1") or
die(mysqli_error($con));
$fetch1 = mysqli_fetch_array($query);
$show_status = $singleStatus->status;
if(isset($fetch1['our_status']) && !
empty($fetch1['our_status'])){
$show_status = $fetch1['our_status'];
}
$timestamp = Date('Y-m-d H:i:s',strtotime($singleStatus-
>datetime));
$data = array(
'tracking_no' => $track__No,
'status' => $show_status,
'created' => $timestamp,
);
array_push($track_data, $data);
}
} else if($api_id == 14 && !empty($postex_tracking)){
foreach ($postex_tracking as $key => $singleStatus) {
$leoStatus = mysqli_real_escape_string($con,$singleStatus-
>transactionStatusMessage);
$query = mysqli_query($con, "SELECT order_status.status as
our_status, third_party_api_status_mapping.api_status from
third_party_api_status_mapping join order_status on order_status.sts_id =
third_party_api_status_mapping.status_id where
third_party_api_status_mapping.booking_api_id='8' AND
third_party_api_status_mapping.api_status='" . $leoStatus . "' LIMIT 1") or
die(mysqli_error($con));
$fetch1 = mysqli_fetch_array($query);
$show_status = $singleStatus->transactionStatusMessage;
if(isset($fetch1['our_status']) && !
empty($fetch1['our_status'])){
$show_status = $fetch1['our_status'];
}
$timestamp = Date('Y-m-d H:i:s',strtotime($singleStatus-
>updatedAt));
$data = array(
'tracking_no' => $track__No,
'status' => $show_status,
'created' => $timestamp,
);
array_push($track_data, $data);
}
} else if($booking_api_id == 6 && !empty($quick_tracking)){
foreach ($quick_tracking as $key => $singleStatus) {
$leoStatus = mysqli_real_escape_string($con,$singleStatus-
>status);
$query = mysqli_query($con, "SELECT order_status.status as
our_status, third_party_api_status_mapping.api_status from
third_party_api_status_mapping join order_status on order_status.sts_id =
third_party_api_status_mapping.status_id where
third_party_api_status_mapping.booking_api_id='$booking_api_id' AND
third_party_api_status_mapping.api_status='" . $leoStatus . "' LIMIT 1") or
die(mysqli_error($con));
$fetch1 = mysqli_fetch_array($query);
$show_status = $singleStatus->status;
if(isset($fetch1['our_status']) && !
empty($fetch1['our_status'])){
$show_status = $fetch1['our_status'];
}
$timestamp = Date('Y-m-d H:i:s',strtotime($singleStatus-
>created));
$data = array(
'tracking_no' => $track__No,
'status' => $show_status,
'created' => $timestamp,
);
array_push($track_data, $data);
}
} else {
$order_logs_sql = "SELECT * FROM order_logs WHERE order_no
IN('$track__No') order by order_no ";
$order_logs_query = mysqli_query($con, $order_logs_sql);
while ($row = mysqli_fetch_array($order_logs_query)) {
$data = array(
'tracking_no' => $row['order_no'],
'status' => $row['order_status'],
'created' => $row['created_on']
);
array_push($track_data, $data);
}
}
}
}
if (!empty($track_data)) {
echo json_encode($track_data);
exit();
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy