Skip to content

Commit 6827a45

Browse files
authored
Merge pull request #6 from movemove-io/Feature/Passport
Added passport's methods. Tests. Documentation
2 parents e86890f + 2260d98 commit 6827a45

File tree

6 files changed

+396
-1
lines changed

6 files changed

+396
-1
lines changed

README.md

Lines changed: 266 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ DADATA_TIMEOUT=10
5757
- **Работа с банками**
5858
- [Банк по БИК, SWIFT, ИНН или регистрационному номеру](https://github.com/movemove-io/laravel-dadata#%D0%B1%D0%B0%D0%BD%D0%BA-%D0%BF%D0%BE-%D0%B1%D0%B8%D0%BA-swift-%D0%B8%D0%BD%D0%BD-%D0%B8%D0%BB%D0%B8-%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%BC%D1%83-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80%D1%83)
5959
- [API подсказок по банкам](https://github.com/movemove-io/laravel-dadata#api-%D0%BF%D0%BE%D0%B4%D1%81%D0%BA%D0%B0%D0%B7%D0%BE%D0%BA-%D0%BF%D0%BE-%D0%B1%D0%B0%D0%BD%D0%BA%D0%B0%D0%BC)
60+
- **Работа с паспортами**
61+
- [Проверка по реестру МВД](https://github.com/movemove-io/laravel-dadata#%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D0%BF%D0%BE-%D1%80%D0%B5%D0%B5%D1%81%D1%82%D1%80%D1%83-%D0%BC%D0%B2%D0%B4)
62+
- [Кем выдан паспорт](https://github.com/movemove-io/laravel-dadata#%D0%BA%D0%B5%D0%BC-%D0%B2%D1%8B%D0%B4%D0%B0%D0%BD-%D0%BF%D0%B0%D1%81%D0%BF%D0%BE%D1%80%D1%82)
6063

6164

6265

@@ -4200,3 +4203,266 @@ class DaData
42004203

42014204
```
42024205

4206+
## Работа с паспортами
4207+
### Проверка по реестру МВД
4208+
`DaDataPassport::standardization(string $id)` Проверяет паспорт по справочнику недействительных паспортов МВД.
4209+
4210+
Основные кейсы:
4211+
- Проверяет формат серии и номера;
4212+
- Проверяет паспорт по справочнику недействительных паспортов МВД;
4213+
4214+
Пример вызова
4215+
4216+
```php
4217+
<?php
4218+
4219+
namespace App;
4220+
4221+
use MoveMoveIo\DaData\Facades\DaDataPassport;
4222+
4223+
/**
4224+
* Class DaData
4225+
* @package App\DaData
4226+
*/
4227+
class DaData
4228+
{
4229+
4230+
/**
4231+
* DaData passport
4232+
*
4233+
* @return void
4234+
*/
4235+
public function passportExample() : void
4236+
{
4237+
$dadata = DaDataPassport::standardization('4509 235857');
4238+
4239+
dd($dadata);
4240+
}
4241+
4242+
}
4243+
4244+
```
4245+
4246+
Параметры вызова
4247+
4248+
| **Название** | **Тип** | **Optional** | **Default value** | **Описание** |
4249+
|:------------------|:---------:|:------------:|:-----------------:|:--------------------------------------------|
4250+
| `id` | `string` | `false` | | Текст запроса |
4251+
4252+
Пример ответа
4253+
4254+
```php
4255+
array:1 [
4256+
0 => array:4 [
4257+
"source" => "4509 235857"
4258+
"series" => "45 09"
4259+
"number" => "235857"
4260+
"qc" => 0
4261+
]
4262+
]
4263+
4264+
```
4265+
4266+
Описание ответа
4267+
4268+
| **Название** | **Длина** | **Описание** |
4269+
|:------------------|:-----------:|:--------------------------------------------|
4270+
| `source` | `100` | Исходная серия и номер одной строкой |
4271+
| `series` | `20` | Серия |
4272+
| `number` | `20` | Номер |
4273+
| `qc` | `5` | Код проверки. |
4274+
4275+
| `qc` | **Нужна ручная проверка?** | **Описание** |
4276+
|:-------:|:---------------------------|:-------------------------------------------------------------------------------------------------------|
4277+
| **0** | нет | Действующий паспорт |
4278+
| **2** | нет | Исходное значение пустое |
4279+
| **1** | да | Неправильный формат серии или номера |
4280+
| **100** | да | Недействительный паспорт |
4281+
4282+
**Exceptions**
4283+
4284+
При вызове методов, вы можете обрабатывать коды исключений и их сообщения
4285+
4286+
| **Код** | **Описание** |
4287+
|:---------------------|:--------------------------------------------------------------------------------------------|
4288+
| `400` | Некорректный запрос |
4289+
| `401` | В запросе отсутствует API-ключ или секретный ключ или в запросе указан несуществующий ключ |
4290+
| `403` | Не подтверждена почта или недостаточно средств для обработки запроса, пополните баланс |
4291+
| `405` | Запрос сделан с методом, отличным от POST |
4292+
| `429` | Слишком много запросов в секунду или новых соединений в минуту |
4293+
| `5xx` | Произошла внутренняя ошибка сервиса |
4294+
4295+
Более детальную информацию вы можете получить из сообщения исключения.
4296+
4297+
Пример получения сообщения исключения
4298+
4299+
```php
4300+
<?php
4301+
4302+
namespace App;
4303+
4304+
use MoveMoveIo\DaData\Facades\DaDataPassport;
4305+
4306+
/**
4307+
* Class DaData
4308+
* @package App\DaData
4309+
*/
4310+
class DaData
4311+
{
4312+
4313+
/**
4314+
* DaData passport
4315+
*
4316+
* @return void
4317+
*/
4318+
public function passportExample() : void
4319+
{
4320+
try {
4321+
$dadata = DaDataPassport::standardization('4509 235857');
4322+
4323+
dd($dadata);
4324+
} catch (\Exception $e) {
4325+
dd($e->getMessage());
4326+
}
4327+
}
4328+
4329+
}
4330+
4331+
```
4332+
4333+
### Кем выдан паспорт
4334+
`DaDataPassport::fns(string $passport, int $count)` Моментально заполняет организацию, выдавшую паспорт, по коду подразделения
4335+
4336+
Самое утомительное поле при вводе паспорта — «Кем выдан». Писать какое-нибудь «Отделом внутренних дел Медведевского района республики Марий Эл» муторно. Поэтому мы сделали подсказки по полю «Паспорт выдан...».
4337+
4338+
Пример вызова
4339+
4340+
```php
4341+
<?php
4342+
4343+
namespace App;
4344+
4345+
use MoveMoveIo\DaData\Facades\DaDataPassport;
4346+
4347+
/**
4348+
* Class DaData
4349+
* @package App\DaData
4350+
*/
4351+
class DaData
4352+
{
4353+
4354+
/**
4355+
* DaData FNS
4356+
*
4357+
* @return void
4358+
*/
4359+
public function fnsExample() : void
4360+
{
4361+
$dadata = DaDataPassport::fms('772 053', 2);
4362+
4363+
dd($dadata);
4364+
}
4365+
4366+
}
4367+
4368+
```
4369+
4370+
Параметры вызова
4371+
4372+
| **Название** | **Тип** | **Optional** | **Default value** | **Описание** |
4373+
|:------------------|:---------:|:------------:|:-----------------:|:--------------------------------------------|
4374+
| `id` | `string` | `false` | | Текст запроса |
4375+
| `count` | `int` | `true` | 10 | Количество результатов. Максимум 20 |
4376+
4377+
Пример ответа
4378+
4379+
```php
4380+
array:1 [
4381+
"suggestions" => array:2 [
4382+
0 => array:3 [
4383+
"value" => "ОВД ЗЮЗИНО Г. МОСКВЫ"
4384+
"unrestricted_value" => "ОВД ЗЮЗИНО Г. МОСКВЫ"
4385+
"data" => array:4 [
4386+
"code" => "772-053"
4387+
"name" => "ОВД ЗЮЗИНО Г. МОСКВЫ"
4388+
"region_code" => "77"
4389+
"type" => "2"
4390+
]
4391+
]
4392+
1 => array:3 [
4393+
"value" => "ОВД ЗЮЗИНО Г. МОСКВЫ ПАСПОРТНЫЙ СТОЛ 1"
4394+
"unrestricted_value" => "ОВД ЗЮЗИНО Г. МОСКВЫ ПАСПОРТНЫЙ СТОЛ 1"
4395+
"data" => array:4 [
4396+
"code" => "772-053"
4397+
"name" => "ОВД ЗЮЗИНО Г. МОСКВЫ ПАСПОРТНЫЙ СТОЛ 1"
4398+
"region_code" => "77"
4399+
"type" => "2"
4400+
]
4401+
]
4402+
]
4403+
]
4404+
4405+
4406+
```
4407+
4408+
Описание ответа
4409+
4410+
| **Название** | **Описание** |
4411+
|:----------------------|:--------------------------------------------|
4412+
| `value` | Значение одной строкой (как показывается в списке подсказок) |
4413+
| `unrestricted_value` | `== value` |
4414+
| `data['code']` | Код подразделения |
4415+
| `data['name']` | Название подразделения в творительном падеже («кем выдан?») |
4416+
| `data['region_code']` | Код региона (2 цифры) |
4417+
| `data['type']` | Вид подразделения (1 цифра). `0` — подразделение ФМС, `1` — ГУВД или МВД региона, `2` — УВД или ОВД района или города, `3` — отделение полиции |
4418+
4419+
**Exceptions**
4420+
4421+
При вызове методов, вы можете обрабатывать коды исключений и их сообщения
4422+
4423+
| **Код** | **Описание** |
4424+
|:---------------------|:--------------------------------------------------------------------------------------------|
4425+
| `400` | Некорректный запрос |
4426+
| `401` | В запросе отсутствует API-ключ или секретный ключ или в запросе указан несуществующий ключ |
4427+
| `403` | Не подтверждена почта или недостаточно средств для обработки запроса, пополните баланс |
4428+
| `405` | Запрос сделан с методом, отличным от POST |
4429+
| `429` | Слишком много запросов в секунду или новых соединений в минуту |
4430+
| `5xx` | Произошла внутренняя ошибка сервиса |
4431+
4432+
Более детальную информацию вы можете получить из сообщения исключения.
4433+
4434+
Пример получения сообщения исключения
4435+
4436+
```php
4437+
<?php
4438+
4439+
namespace App;
4440+
4441+
use MoveMoveIo\DaData\Facades\DaDataPassport;
4442+
4443+
/**
4444+
* Class DaData
4445+
* @package App\DaData
4446+
*/
4447+
class DaData
4448+
{
4449+
4450+
/**
4451+
* DaData FNS
4452+
*
4453+
* @return void
4454+
*/
4455+
public function fnsExample() : void
4456+
{
4457+
try {
4458+
$dadata = DaDataPassport::fms('772 053', 2);
4459+
4460+
dd($dadata);
4461+
} catch (\Exception $e) {
4462+
dd($e->getMessage());
4463+
}
4464+
}
4465+
4466+
}
4467+
4468+
```

src/DaDataPassport.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace MoveMoveIo\DaData;
4+
5+
/**
6+
* Class DaDataPassport
7+
* @package MoveMoveIo\DaData
8+
*/
9+
class DaDataPassport extends DaDataService
10+
{
11+
12+
/**
13+
* Standardization passports
14+
*
15+
* @param string $id
16+
* @return array
17+
* @throws \Exception
18+
*/
19+
public function standardization(string $id) : array
20+
{
21+
return $this->cleanerApi()->post('clean/passport', [$id]);
22+
}
23+
24+
/**
25+
* Defin FMS unit by passport code or name
26+
*
27+
* @param string $passport
28+
* @param int $count
29+
* @return array
30+
* @throws \Exception
31+
*/
32+
public function fms(string $passport, int $count = 10) : array
33+
{
34+
return $this->suggestApi()->post('rs/suggest/fms_unit', [
35+
'query' => $passport,
36+
'count' => $count,
37+
]);
38+
}
39+
40+
}

src/DaDataServiceProvider.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,17 @@ public function register()
3636
$this->app->singleton('da_data_bank', function () {
3737
return new DaDataBank();
3838
});
39+
$this->app->singleton('da_data_passport', function () {
40+
return new DaDataPassport();
41+
});
3942

4043
$this->app->alias('da_data_address', DaDataAddress::class);
4144
$this->app->alias('da_data_name', DaDataName::class);
4245
$this->app->alias('da_data_email', DaDataEmail::class);
4346
$this->app->alias('da_data_phone', DaDataPhone::class);
4447
$this->app->alias('da_data_company', DaDataCompany::class);
4548
$this->app->alias('da_data_bank', DaDataCompany::class);
49+
$this->app->alias('da_data_passport', DaDataPassport::class);
4650
}
4751

4852
/**

src/Facades/DaDataPassport.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class DaDataPassport extends Facade
1818
*/
1919
protected static function getFacadeAccessor() : string
2020
{
21-
return 'dadata_passport';
21+
return 'da_data_passport';
2222
}
2323

2424
}

0 commit comments

Comments
 (0)