rasuvaeff / yii3-webhooks-db
Database-backed delivery and nonce storage for rasuvaeff/yii3-webhooks
v1.0.0
2026-06-19 19:42 UTC
Requires
- php: 8.3 - 8.5
- psr/clock: ^1.0
- rasuvaeff/yii3-webhooks: ^1.0
- yiisoft/db: ^2.0
- yiisoft/db-migration: ^2.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.51
- friendsofphp/php-cs-fixer: ^3.95
- infection/infection: ^0.29
- maglnet/composer-require-checker: ^4.17
- phpunit/phpunit: ^11.5
- rector/rector: ^2.4
- roave/backward-compatibility-check: ^8.0
- vimeo/psalm: ^6.16
- yiisoft/cache: ^3.2
- yiisoft/db-sqlite: ^2.0
- yiisoft/test-support: ^3.1
This package is auto-updated.
Last update: 2026-06-21 14:33:58 UTC
README
База данных для хранения доставок и nonce в rasuvaeff/yii3-webhooks.
Обеспечивает production-хранилище попыток доставки и атомарную защиту от повторного воспроизведения.
Используете AI-ассистент для написания кода? В llms.txt есть компактный справочник по API.
Требования
- PHP 8.3+
rasuvaeff/yii3-webhooks^1.0yiisoft/db^2.0yiisoft/db-migration^2.0psr/clock^1.0
Установка
composer require rasuvaeff/yii3-webhooks-db
Использование
Запустите миграцию M260612000000CreateWebhookTables для создания таблиц webhook_deliveries и webhook_nonces.
use Psr\Clock\ClockInterface; use Rasuvaeff\Yii3Webhooks\WebhookDelivery; use Rasuvaeff\Yii3WebhooksDb\DbNonceStorage; use Rasuvaeff\Yii3WebhooksDb\DbWebhookDeliveryStorage; $deliveries = new DbWebhookDeliveryStorage(db: $db); $nonces = new DbNonceStorage(db: $db, clock: $clock); $delivery = WebhookDelivery::create(event: $event, endpoint: $endpoint); $deliveries->save(delivery: $delivery); $accepted = $nonces->add(nonce: $signature->getValue());
При использовании yiisoft/config этот пакет биндит только WebhookDeliveryStorage и NonceStorage.
Справочник API
DbWebhookDeliveryStorage
| Метод | Описание |
|---|---|
save(delivery) |
Вставляет или обновляет запись доставки |
findPending(limit) |
Возвращает ожидающие доставки, отсортированные по времени создания |
markDelivered(delivery) |
Сохраняет доставку как успешно выполненную |
markFailed(delivery) |
Сохраняет доставку как неуспешную |
getById(id) |
Загружает доставку по ID |
DbNonceStorage
| Метод | Описание |
|---|---|
has(nonce) |
Проверяет, существует ли nonce |
add(nonce) |
Атомарная вставка; возвращает false при дубликате |
deleteOlderThan(threshold) |
Удаляет устаревшие nonce для очистки по сроку хранения |
Безопасность
DbNonceStorage::add()опирается на первичный ключ и перехватывает ошибки дублирования ключа.DbWebhookDeliveryStorageсохраняет только данныеWebhookDelivery, секреты endpoint'ов не хранятся.- Держите записи nonce не менее времени, равного допустимому окну временно́й метки webhook'а.
Примеры
Смотрите examples/ для запускаемого примера на SQLite.
Разработка
make install
make build
make cs-fix
make test
make test-coverage
make mutation
make release-check
Лицензия
BSD-3-Clause. Смотрите LICENSE.md.