vyatka-it/laravel-flash-call-auth

Laravel package for receiving authorization codes via flash call providers VoicePassword and SMS.RU.

Maintainers

Package info

gitlab.vyatka-it.ru/laravel-packages/laravel-flash-call-auth.git

pkg:composer/vyatka-it/laravel-flash-call-auth

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

v0.1.2 2026-05-22 05:44 UTC

This package is not auto-updated.

Last update: 2026-05-23 00:06:09 UTC


README

Пакет vyatka-it/laravel-flash-call-auth отправляет коды авторизации через flash call-провайдеров VoicePassword и SMS.RU.

Установка

composer require vyatka-it/laravel-flash-call-auth
php artisan vendor:publish --tag=flash-call-auth-config

Настройка

FLASH_CALL_AUTH_PROVIDER=sms_ru
FLASH_CALL_AUTH_API_KEY=your_api_key

SMS_RU_PARTNER_ID=

VOICEPASSWORD_AUTH_MODE=header
VOICEPASSWORD_CAPACITY=4

FLASH_CALL_AUTH_COOLDOWN_SECONDS=60

Использование

use VyatkaIt\FlashCallAuth\Facades\FlashCallAuth;

$result = FlashCallAuth::send(
    phone: '79255070602',
    ip: request()->ip(),
);

echo $result->code;
echo $result->id;

Повторную отправку можно ограничить cooldown-настройкой. По умолчанию она выключена (0 секунд). Ограничение работает через Laravel RateLimiter и использует cache store приложения.

FLASH_CALL_AUTH_COOLDOWN_SECONDS=60
FLASH_CALL_AUTH_COOLDOWN_KEY_PREFIX=flash_call_auth:cooldown

Если пользователь запросит звонок повторно раньше времени, пакет выбросит CooldownException:

use VyatkaIt\FlashCallAuth\Exceptions\CooldownException;

try {
    $result = FlashCallAuth::send('79999999999', request()->ip());
} catch (CooldownException $exception) {
    $retryAfter = $exception->retryAfter;
}

Выбор провайдера на один вызов:

$result = FlashCallAuth::send('79999999999', options: [
    'provider' => 'voicepassword',
]);

VoicePassword с кодом, сгенерированным на вашей стороне:

$result = FlashCallAuth::send('79999999999', options: [
    'provider' => 'voicepassword',
    'code' => '1234',
]);

VoicePassword с проговариванием кода:

$result = FlashCallAuth::send('79999999999', options: [
    'provider' => 'voicepassword',
    'mode' => 'voice',
    'code' => '1234',
    'repeat' => 1,
]);

VoicePassword callback URL:

$result = FlashCallAuth::send('79999999999', options: [
    'provider' => 'voicepassword',
    'callback_url' => route('flash-call.callback'),
]);

Статистика VoicePassword:

$balance = FlashCallAuth::voicePassword()->balance();
$status = FlashCallAuth::voicePassword()->status('1234');
$daily = FlashCallAuth::voicePassword()->daily('21.05.2026');

Ответ

Метод send() возвращает AuthorizationCodeResultDTO:

$result->provider; // sms_ru или voicepassword
$result->id;       // call_id/id запроса
$result->phone;    // номер абонента
$result->code;     // код авторизации, если провайдер вернул его сразу
$result->cost;     // стоимость, если провайдер вернул ее сразу
$result->raw;      // исходный JSON-ответ

Тесты

composer test

Документация провайдеров