vyatka-it / laravel-flash-call-auth
Laravel package for receiving authorization codes via flash call providers VoicePassword and SMS.RU.
Package info
gitlab.vyatka-it.ru/laravel-packages/laravel-flash-call-auth.git
pkg:composer/vyatka-it/laravel-flash-call-auth
Requires
- php: ^8.1
- illuminate/cache: ^10.0|^11.0|^12.0|^13.0
- illuminate/contracts: ^10.0|^11.0|^12.0|^13.0
- illuminate/http: ^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0|^11.0
- phpunit/phpunit: ^10.0|^11.0|^12.0|^13.0
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