Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 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

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

Коментарі

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

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

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

PayZephyr
Новини 12 вересня 2026

PayZephyr: Єдиний API для роботи з Stripe, Paystack та PayPal

PayZephyr - Laravel-пакет від Nwaneri Chukwunyere Kenneth, який об'єднує вісім платіжних провайдерів під одним зручним API. Підтримує автоматичне перемикання, захист від подвійної оплати, підписки та повернення коштів.

2
Laravel Telescope
Новини 11 вересня 2026

Artisan-команди для дебагу в Laravel Telescope 5.24.0

Laravel Telescope 5.24.0 додає дві нові Artisan-команди для роботи із записами із терміналу. Тепер можна переглядати запити, винятки, джоби та запити до бази даних без відкриття веб-інтерфейсу, а також отримувати дані у форматі JSON для скриптів та AI-агентів.

3

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

HotShots Labs
8 днів тому

Middle PHP, Laravel Backend Developer

Middle PHP/Laravel backend розробник для віддаленої роботи з гнучким графіком. Потрібен фахівець з 2+ роками комерційного досвіду Laravel, глибоким розумінням OOP, REST API, SQL (MySQL/PostgreSQL), testing та Git. Основной стек: PHP 8.x, Laravel (Routing, Eloquent ORM, Queues, Events), Redis, Unit/Feature tests. Буде плюсом: Docker, CI/CD, OpenAPI, Linux.

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

Full Stack Developer (PHP, Laravel, Vue.js)

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

FAVBET
29 днів тому

Senior PHP Developer

Senior PHP Developer для Entertainment Tech компанії. Відповідатиме за розробку на Laravel/Symfony, архітектуру систем, code review, ментoring. Вимагається 6+ років розробки на PHP, досвід з PostgreSQL, Redis, Docker/Kubernetes, REST/RPC web-сервісів, RabbitMQ. Необхідний досвід з agentic coding tools та рецензування коду.

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

Laravel Cashier

laravel/cashier

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

2,542 v16.7.0 13 1

Privat24 Business API

sashalenz/privat24-business-api

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

1.1.0 13 3