Подключение API от rapidapi.com

Author Автор: Роман Чернышов    Опубликовано: 26 октября 2024

Спешу поделиться небольшим рассказом о том, как я успешно реализовал следующий проект: «Подключение API от rapidapi.com». Возможно кому-то из вас он будет интересен, а кто-то пожелает заказать аналогичную работу. Ко мне обратился клиент — владелец бизнеса по продаже почтовых «лейблов» на рынке США и ЕС, нашедший меня на фриланс-бирже Kwork , и предложивший мне сотрудничество. Работа с клиентом велась с использованием фриланс-биржи Kwork, и все взаиморасчеты производились с использованием системы «безопасной сделки», также при необходимости мы всегда могли подключить Арбитра, но это не потребовалось, сделка прошла как всегда гладко.

Поставленные задачи

В рамках данного проекта, были поставлены и реализованы следующие задачи:

  • Подключить API от https://rapidapi.com/ и переписать метод(php код) работы с ним, по аналогии функционала с прежним методом API;
  • Разобрать получаемый JSON код;
  • Настроить работы CRON по расписанию;
  • Учесть суточные лимиты отправляемых запросов к API.

Сфера проведения работ

  • Бэкенд (работа со скриптами PHP обеспечивающих работу бэкенда, админпанели, базы данных MySQL);

Стек технологий

Языки программирования и фреймворки:

  • PHP 7;

Базы данных и системы кеширования:

  • База данных MySQL (MariaDB);

Внешние сервисы

  • Изучение документации, подключение и настройка внешнего сервиса по API (Application Programming Interface);

Дополнительно в рамках работы требовалось

  • Провести исследование, изучить техническую часть проекта, ознакомиться с документацией, дать оценку сложности, стоимости и сроков, а также вероятность проведения дополнительных работ выходящих за рамки основного списка поставленных задач;
  • В рамках проекта были зафиксированы и оговорены точные сроки сдачи работы, без возможности их переноса, т.е. был установлен дедлайн, это накладывало на меня дополнительную ответственность, с чем разумеется я справился;

Реализация проекта

Работа была завершена, и по итогу было реализовано следующее:

Все задачи были реализованы в короткий срок, произведена проверка и тестирование на корректность работы нового метода для работы с API.

Функционал — Каждую минуту по CRON, происходит запуск PHP скрипт, который отправляем запрос по API на удаленный сервер и по трек-номеру посылки, получает данные о её движении, затем эти данные вносятся в систему и отображаются пользователю. Плюс, в случае если посылка не была отправлена, то пользователю осуществляется возврат ранее оплаченных за отправку средств.

<?php
 
$apiAuth = 'СЕКРЕТНЫЙ_КОД_API';
$apiKey = 'КЛЮЧ_API';
$track = 'ТРЕК НОМЕР ОТПРАВЛЯЕНИЯ ДЛЯ США ИЛИ ЕС';
 
$curl = curl_init();
 
curl_setopt_array($curl, [
	CURLOPT_URL => "https://trackingpackage.p.rapidapi.com/TrackingPackage?trackingNumber=" . $track,
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_ENCODING => "",
	CURLOPT_MAXREDIRS => 10,
	CURLOPT_TIMEOUT => 30,
	CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
	CURLOPT_CUSTOMREQUEST => "GET",
	CURLOPT_HTTPHEADER => [
		"Authorization: Basic " . $apiAuth,
		"x-rapidapi-host: trackingpackage.p.rapidapi.com",
		"x-rapidapi-key: " . $apiKey
	],
]);
 
$response = curl_exec($curl);
$err = curl_error($curl);
 
curl_close($curl);
 
if ($err) {
	echo "cURL Error #:" . $err;
} else {
 
	$response = json_decode($response);
	print_R(date_parse($response->TrackingDetails[0]->EventDateTime));
	print_R($response);
}

Пример ответа API в формате JSON:

{
   "TrackingNumber": "ТРЕК НОМЕР ОТПРАВЛЯЕНИЯ ДЛЯ США ИЛИ ЕС",
   "Delivered": false,
   "Carrier": "FedEx",
   "ServiceType": "STANDARD_OVERNIGHT",
   "PickupDate": "",
   "ScheduledDeliveryDate": "",
   "ScheduledDeliveryDateInDateTimeFromat": null,
   "StatusCode": "OC",
   "Status": "Shipment information sent to FedEx",
   "StatusSummary": "Shipment information sent to FedEx",
   "Message": "",
   "DeliveredDateTime": "",
   "DeliveredDateTimeInDateTimeFormat": null,
   "SignatureName": "",
   "DestinationCity": "Central Falls",
   "DestinationState": "RI",
   "DestinationZip": "",
   "DestinationCountry": null,
   "TrackingDetails": [
      {
         "EventDateTime": "2024-10-21T03:52:38-05:00",
         "Event": "OC Shipment information sent to FedEx",
         "EventAddress": " ",
         "State": "",
         "City": "",
         "Zip": "",
         "EventDateTimeInDateTimeFormat": "2024-10-21T03:52:38"
      }
   ]
}

Также было сделано

  • Клиент пожелал обеспечить проект «безопасной сделкой», что я также всегда приветствую. Спокойствие обеих сторон, всегда продуктивно сказывается на рабочем процессе;

 

Оставить комментарий

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Купить за 359₽
Популярные записи
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка