Приём смс сообщений
Компонент позволяет объединить несколько сервисов по приёму смс сообщений.
На данные момент разработано api для сервисов
Предпочтительный способ установить это расширение через composer.
Либо запустить
composer global require "fxp/composer-asset-plugin:^1.2.0"
composer require --prefer-dist jumper423/yii2-sms "*"
или добавить
"jumper423/yii2-sms": "*"
в файл composer.json
.
Указать ключи от своих аккаунтов и от куда по умолчанию будут приходить смс сообщения.
'components' => [
'sms' => [
'class' => \jumper423\sms\Sms::className(),
'site' => \jumper423\sms\service\SmsSites::OTHER,
'services' => [
[
'class' => \jumper423\sms\service\SmsActivateService::className(),
'apiKey' => 'apiKey1234567890',
],
[
'class' => \jumper423\sms\service\SmsAreaService::className(),
'apiKey' => 'apiKey1234567890',
],
[
'class' => \jumper423\sms\service\SmsSimService::className(),
'apiKey' => 'apiKey1234567890',
],
[
'class' => \jumper423\sms\service\SmsRegService::className(),
'apiKey' => 'apiKey1234567890',
],
],
],
],
/** @var Sms $sms */
$sms = \Yii::$app->sms;
$balance = $sms->getBalance();
if (!$balance) {
throw new Exception('Нет денег на смс');
}
$sms->site = \jumper423\sms\service\SmsSites::VKONTAKTE;
$count = $sms->getNumbersStatus();
$number = $sms->getNumber();
// Отменить активацию
$sms->setStatus($sms::STATUS_CANCEL);
// Сообщить о готовности номера (смс на номер отправлено)
$sms->setStatus($sms::STATUS_READY);
// Сообщить о неверном коде
$sms->setStatus($sms::STATUS_INVALID);
// Завершить активацию(если был статус "код получен" - помечает успешно и завершает, если был "подготовка" - удаляет и помечает ошибка, если был статус "ожидает повтора" - переводит активацию в ожидание смс)
$sms->setStatus($sms::STATUS_COMPLETE);
// Сообщить о том, что номер использован и отменить активацию
$sms->setStatus($sms::STATUS_USED);
$code = $sms->getCode();
$sms = new Sms();
try {
$number = $sms->getNumber();
...
$sms->setStatus($sms::STATUS_READY);
list($status, $code) = $sms->getCode();
if ($status) {
...
$sms->setStatus($sms::STATUS_COMPLETE);
} else {
...
}
} catch (Exception $e) {
$sms->setStatus($sms::STATUS_CANCEL);
throw $e;
}
Comments