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

Коментарі

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

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

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

Laracon US 2026: відео першого дня вже доступне Рекомендовано
Новини 29 липня 2026

Laracon US 2026: відео першого дня вже доступне

У Бостоні стартував Laracon US 2026, і запис першого дня вже доступний. Головне з кейноуту: офіційний Laravel LSP для редакторів, Laravel Cloud деплоїть Hono, Flask, Go та Rails, Pest 5 із Tia Engine. Аарон Френсіс приєднався до команди Laravel.

Pest 5: Tia Engine, плагін для AI-агентів і evals для LLM
Новини 29 липня 2026

Pest 5: Tia Engine, плагін для AI-агентів і evals для LLM

На першому дні Laracon US 2026 Нуно Мадуро представив Pest 5. Головне - Tia Engine, що переганяє лише зачеплені змінами тести й скорочує десятихвилинний прогін до кількох секунд, плюс плагіни для AI-агентів, evals, PHPStan і Rector.

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

AQA (Playwright/Cypress)

QA спеціаліст з автоматизацією тестування на Playwright/Cypress для веб-застосунку на Vue 3/Nuxt 3 з реалтайм-функціональністю. Основні обов'язки: написання e2e тестів з нуля, ручне тестування frontend/backend функціоналу, тестування REST API в Postman, роботи з DevTools, регресійне тестування та współпраця з розробниками. Вимоги: досвід в автоматизації, розуміння HTTP, WebSockets, таск-трекерів і оформлення баг-репортів.

Prime Partners
9 дн. тому

Strong Junior PHP Developer / Technical Engineer

PHP розробник для fintech-стартапу. Розробляти та підтримувати WordPress/WooCommerce плагіни, інтегрувати payment провайдерів та API, працювати з Laravel CRM. Вимоги: PHP, OOP, WordPress, WooCommerce, MySQL, Git, REST API, базові Linux, AWS. English B2+.

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

Bagisto

bagisto/bagisto

Bagisto — це платформа для електронної комерції, побудована на Laravel. Вона надає готове рішення для створення та управління інтернет-магазинами з підтримкою каталогу товарів, замовлень, платежів та клієнтів.

27,769 v2.4.8 12 15

Aimeos Laravel

aimeos/aimeos-laravel

Cloud-native, API-first Laravel пакет для електронної комерції з інтегрованою штучною інтелектуальністю для надшвидких онлайн-магазинів, маркетплейсів та складних B2B проектів.

8,669 2026.04.1 13 4

Відео за темою