Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 08 липня 2026

Laravel MPP: монетизація API для AI-агентів через HTTP 402

Laravel MPP - це middleware, що реалізує Machine Payments Protocol (MPP) і дозволяє стягувати плату з AI-агентів за доступ до захищених маршрутів. При запиті без оплати сервер повертає HTTP-відповідь 402 Payment Required з підписаним викликом. Агент, здатний платити, виконує виклик через підтримуваний платіжний метод і повторює запит.

Основні можливості

Пакет пропонує низку функцій для гнучкої монетизації API:

  • Два платіжні методи - Stripe Shared Payment Tokens (SPTs) та Tempo pathUSD
  • Поіменна або лічильникова тарифікація - оплата за кожен запит або одноразовий платіж з багаторазовим доступом
  • HMAC-підписані виклики - агенти отримують підписаний виклик 402 для оплати та повторної спроби
  • Лічильникові сесії - атомарні балансові рахунки з перевіркою області дії, що зберігаються в кеші або базі даних
  • Передумови - іменовані перевірки, які виконуються перед платіжним шлюзом для раннього відхилення непридатних запитів

Захист маршруту

Для встановлення платного доступу достатньо додати middleware mpp до маршруту із зазначенням ціни та валюти. Запит без оплати отримає відповідь 402 з викликом:

Route::get('/resource', MyPaidResource::class)
    ->middleware('mpp:0.50,USD');

Також можна оголосити ціноутворення через атрибут RequiresPayment на методі контролера і дозволити middleware його зчитувати. Для автоматичного застосування можна ввімкнути MPP_ATTRIBUTES_ENABLED=true:

#[RequiresPayment(amount: '5.00', currency: 'USD', grants: 10)]
public function report()
{
    // ...
}
Route::get('/report', ReportController::class)->middleware('mpp');

Лічильникові сесії

Коли платіж визначає grants більше одиниці, один платіж покриває кілька звернень. Успішна відповідь включає заголовок Payment-Session із залишковим балансом та областю дії:

Payment-Session: id="sess_...", remaining="9", scope="report.basic", expiresAt="..."

Агент відтворює ідентифікатор сесії в наступних запитах замість повторної оплати:

curl -si https://your-host/report \
  -H 'Authorization: Payment method="stripe", session="sess_..."'

Сесії зберігаються в кеші за замовчуванням або в базі даних для збереження стану:

MPP_SESSION_DRIVER=cache      # За замовчуванням
MPP_SESSION_DRIVER=database   # Постійне зберігання; запустіть опубліковані міграції
MPP_SESSION_CACHE_STORE=redis # Опціональне власне сховище кешу

Передумови

Передумови - це іменовані перевірки, які виконуються перед платіжним шлюзом. Вони дозволяють відхилити непридатний запит до того, як агента буде запропоновано платити. Їх реєструють у config/mpp.php і прикріплюють до окремих маршрутів або виконують глобально:

// config/mpp.php
'preconditions' => [
    'checks' => [
        'postexists' => [\App\Mpp\Checks\PostExists::class, 'check'],
    ],
    'global' => ['usernotblocked'],
],

Перевірка повертає null для успішного проходження або Response для переривання запиту:

class PostExists
{
    public function check(Request $request, PaymentSpec $spec): ?Response
    {
        return Post::find($request->route('post'))
            ? null
            : response()->json(['error' => 'No such post.'], 404);
    }
}
Route::get('/posts/{post}', ShowPost::class)
    ->middleware('mpp:1.00,USD,preconditions=postexists');

Платіжні методи

Пакет постачається з двома платіжними методами. Stripe використовує Shared Payment Tokens (SPTs) і налаштовується через ключі Stripe та попередню версію API:

STRIPE_SECRET_KEY=sk_test_...
STRIPE_NETWORK_ID=profile_...
STRIPE_API_VERSION=2026-05-27.preview

Tempo здійснює розрахунки в pathUSD он-чейн. Його можна вибрати для окремого маршруту через параметр method=tempo:

Route::get('/paid', fn () => response()->json(['data' => 'paid']))
    ->middleware('mpp:0.01,USD,method=tempo,scope=paid');

Можна приймати кілька платіжних методів на одному маршруті через methods=stripe|acme, а також зареєструвати власний метод, реалізувавши інтерфейс Verifier. При успішному платежі відповідь містить заголовок Payment-Receipt з ідентифікацією методу, суми та посилання.

Встановлення

Встановлення виконується через Composer з подальшою публікацією конфігурації:

composer require square1/laravel-mpp
php artisan vendor:publish --tag=mpp-config

Для використання лічильникових сесій з драйвером бази даних потрібно опублікувати та виконати міграції:

php artisan vendor:publish --tag=mpp-migrations
php artisan migrate

Важливо зауважити, що MPP та Stripe SPT API все ще перебувають у попередньому перегляді і можуть змінюватися. Остання версія v1.1.0 розповсюджується під ліцензією MIT та доступна на GitHub.

13

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Filament v5.10.0
Новини 12 жовтня 2026

Filament v5.10.0: сітка в rich editor, скелетони таблиць і десятки виправлень

Вийшов Filament v5.10.0: елементи керування сіткою в rich editor, допоміжний контент для віджетів-графіків, скелетони завантаження таблиць, submitOnCompletion() для OneTimeCodeInput та багато виправлень авторизації, доступності й стану.

17
Laravel AI SDK на практиці
Новини 09 жовтня 2026

Laravel AI SDK на практиці: агент, що стоїть за There There

Фрік Ван дер Гертен розповідає, як у Spatie побудували AI-шар хелпдеска There There на Laravel AI SDK: клас агента, інструменти з типізованою JSON-схемою та делегування роботи звичайним domain-діям.

12

Вакансії за темою

Hurma System Tech
16 днів тому

Full Stack Developer

Full Stack Developer на PHP та Laravel з фронтенд-частиною на Vue.js. Розроблення та рефакторинг функціоналу HR-системи, робота з БД, REST API, тестування. Вимоги: PHP 8+, 2+ років Laravel, Vue.js, OOP, SQL, Git, базовий TypeScript. Віддалена робота з гнучким графіком.

CodeBright
16 днів тому

Senior Full-Stack Engineer (React / PHP-Laravel)

Старший Full-Stack розробник для США-базованої агенції. Розроблюватимете складну B2B SaaS для управління подіями: лаштуватимете бекенд на PHP-Laravel (API, cron-завдання, тригери подій), фронтенд на React/Next.js, інтеграції платіжних систем (Stripe), фінансовіワークфлоу та синхронізацію даних. Вимоги: 5+ років досвіду Full-Stack, глибокі знання реляційних БД, досвід з біллінговими системами, комфорт з AI-асистентами (Cursor, Copilot).

Backend Developer (PHP, Laravel)

Laravel Офіс B2B Middle $550 - $1,700

Senior Full-Stack розробник з акцентом на backend для розробки веб-системи військової логістики. Робота з Laravel 12, PHP 8.4, Vue.js 3, PostgreSQL/MySQL. Вимоги: 5+ років досвіду веброзробки, глибокі знання архітектури, SOLID/DDD, масштабованих API, CI/CD, Docker, SQL-оптимізація. Очікується технічне лідерство, участь у архітектурних рішеннях і наставництво для команди.

Пакети за темою

Laravel Cashier

laravel/cashier

Підписки і платежі через Stripe: тарифи, пробні періоди, купони, зміна плану, рахунки в PDF і обробка вебхуків. Ховає більшість рутини платіжної інтеграції за виразним API.

2,542 v16.7.0 13 2

Privat24 Business API

sashalenz/privat24-business-api

Клієнт API «Приват24 для бізнесу» на Laravel: виписки за рахунками, баланси та платіжні доручення. Закриває типову задачу бухгалтерської автоматизації - звірку надходжень без ручного експорту.

1.1.0 13 3