Laravel USPS від John Paul Medina — повнофункціональний пакет для Laravel, що обгортає USPS API v3 — сучасний REST/JSON API з автентифікацією OAuth2.
Пакет охоплює 20 API domains і понад 80 endpoints, зокрема валідацію адрес, відстеження посилок, створення shipping labels, розрахунок тарифів і планування carrier pickup. Під капотом він автоматично керує OAuth2-токенами, кешуючи їх приблизно на 50 хвилин, щоб зменшити зайві запити авторизації.
composer require johnpaulmedina/laravel-usps
Опублікуйте файл конфігурації:
php artisan vendor:publish --tag=usps-config
Потім додайте свої USPS OAuth2 облікові дані в .env. Отримати їх можна в USPS Developer Portal:
USPS_CLIENT_ID=your-client-id
USPS_CLIENT_SECRET=your-client-secret
Валідація адрес — один із найпоширеніших сценаріїв. Фасад Usps надає метод validate(), який приймає простий масив полів адреси й повертає стандартизовану, виправлену адресу разом із підтвердженням DPV (Delivery Point Validation):
use Johnpaulmedina\Usps\Facades\Usps;
$result = Usps::validate([
'Address' => '78 NW 37th St',
'City' => 'Miami',
'State' => 'FL',
'Zip' => '33127',
]);
У разі успіху відповідь містить виправлену адресу й додаткову інформацію Delivery Point Validation (DPV):
{
"address": {
"Address2": "78 NW 37TH ST",
"City": "MIAMI",
"State": "FL",
"Zip5": "33127",
"Zip4": "3178"
},
"additionalInfo": {
"deliveryPoint": "00",
"carrierRoute": "C000",
"DPVConfirmation": "Y",
"DPVCMRA": "N",
"business": "N",
"centralDeliveryPoint": "N",
"vacant": "N"
}
}
DPVConfirmation показує, чи є адреса дійсним пунктом доставки USPS: Y — повна співпадіння, D — відсутня вторинна одиниця (апартамент/офіс), S — вторинна одиниця не співпадає, N — адреса не є дійсним пунктом доставки.
Якщо до поданої адреси були внесені виправлення, у відповіді також з'явиться ключ corrections.
Усі вхідні дані автоматично нормалізуються перед відправленням у USPS API — назви штатів (включно з територіями та військовими кодами) конвертуються в дволітерні абревіатури, ZIP+4 розділяється на складові, назви країн — у ISO alpha-2, а дати приводяться до формату ISO 8601:
Usps::validate([
'Address' => '78 NW 37th St',
'City' => 'Miami',
'State' => 'Florida', // converted to 'FL'
'Zip' => '33127-3178', // split into Zip5: 33127, Zip4: 3178
]);
Для зворотного пошуку — отримати місто й штат за ZIP-кодом — є метод cityStateLookup():
$result = Usps::cityStateLookup('33127');
{
"city": "MIAMI",
"state": "FL",
"zip": "33127"
}
Відстеження реалізоване через fluent sub-client. Викличте tracking() на фасаді, щоб отримати екземпляр Tracking, а потім викличте track() із масивом об'єктів запитів трекінгу. USPS API підтримує до 35 відправлень в одному запиті:
$result = Usps::tracking()->track([
['trackingNumber' => '9400111899223456789012'],
['trackingNumber' => '9400111899223456789099'],
]);
У відповіді містяться поточний статус, локація й інформація про доставку для кожного відправлення:
{
"trackingNumber": "9400111899223456789012",
"status": "Delivered",
"statusSummary": "Your item was delivered at 11:23 am on March 28, 2026 in MIAMI, FL 33127.",
"trackSummary": {
"event": "Delivered, Front Door/Porch",
"eventDate": "March 28, 2026",
"eventTime": "11:23 am",
"eventCity": "MIAMI",
"eventState": "FL",
"eventZIPCode": "33127"
}
}
Якщо потрібно підписати email-сповіщення для відправлення, той самий екземпляр Tracking має метод registerNotifications(), який приймає номер відстеження та налаштування повідомлень.
Пакет постачається з кількома зручними Artisan-командами для швидких перевірок без написання коду:
# Validate an address
php artisan usps:validate "78 NW 37TH ST" --state=FL --zip=33127
# Track a package
php artisan usps:track 9400111899223456789012
# Look up a ZIP code
php artisan usps:zip 33127
Валідація адрес і трекінг — лише дві з двадцяти domain-ів API, які підтримує пакет. Також можна генерувати domestic і international shipping labels, розраховувати тарифи, планувати carrier pickups, керувати dispute-ами та інше — усе через той самий фасадний інтерфейс.
Вихідний код на GitHub, а повна документація доступна на johnpaulmedina.github.io/laravel-usps.
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом
Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку
Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!