PHP code example of wearesho-team / risktools-blacklist

1. Go to this page and download the library: Download wearesho-team/risktools-blacklist library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

wearesho-team / risktools-blacklist example snippets


use Wearesho\RiskTools\Blacklist\Config;

$config = new Config(
    authKey: 'ваш-ключ-авторизації',
    apiUrl: 'url-api-сервісу'
);


use Wearesho\RiskTools\Blacklist\EnvironmentConfig;

$config = new EnvironmentConfig();

use Wearesho\RiskTools\Blacklist\Service\Builder;

// Базова ініціалізація з налаштуваннями за замовчуванням
$service = Builder::create()->getService();

// Ініціалізація з власним конфігом
$service = Builder::create()
    ->withConfig(new CustomConfig())
    ->getService();

// Ініціалізація з власним HTTP-клієнтом
$service = Builder::create()
    ->withHttpClient(new CustomHttpClient())
    ->getService();

// Ініціалізація з усіма залежностями
$service = Builder::create()
    ->withConfig(new CustomConfig())
    ->withHttpClient(new CustomHttpClient())
    ->getService();

use Wearesho\RiskTools\Blacklist;

$service = new Blacklist\Service(
    client: new Blacklist\Client(
        config: new Blacklist\Config(), // налаштувати в DI Container
        httpClient: new \GuzzleHttp\Client(), // налаштувати в DI Container
    ),
    searchFactory: new Blacklist\Search\Factory(),
    updateFactory: new Blacklist\Update\Factory(), 
);

use Wearesho\RiskTools\Blacklist\Search\Request;
use Wearesho\RiskTools\Blacklist\Category;

// Пошук за номером телефону
$request = Request::byPhone('380501234567');

// Пошук за ІПН
$request = Request::byIpn('1234567890');

// Пошук за номером телефону та ІПН одночасно
$request = Request::byPhoneOrIpn('380501234567', '1234567890');

// Пошук з фільтрацією за категоріями
$request = Request::byPhone(
    '380501234567',
    Category::MILITARY,
    Category::FRAUD
);

use Wearesho\RiskTools\Blacklist\Service;

/** @var Service $service */
$response = $service->search($request);

// Отримання кількості знайдених записів
$total = $response->found();

// Отримання списку партнерів, які додали записи
$partners = $response->partners(); // ['87613', '01933']

// Отримання статистики за категоріями
$categories = $response->categories(); // ['military' => 2, 'fraud' => 1]

// Обробка знайдених записів
foreach ($response->records() as $record) {
    // Отримання даних запису
    $phone = $record->phone(); // ?string
    $ipn = $record->ipn(); // ?string
    $category = $record->category(); // Category enum
    $partnerId = $record->partnerId(); // string
    $addedAt = $record->addedAt(); // DateTimeImmutable

    // Приклад використання
    echo sprintf(
        "Запис %s додано %s партнером %s в категорії %s\n",
        $phone ?? $ipn,
        $addedAt->format('Y-m-d'),
        $partnerId,
        $category->value
    );
}


use Wearesho\RiskTools\Blacklist\Update\Record;
use Wearesho\RiskTools\Blacklist\Category;
use DateTimeImmutable;

// Створення запису за номером телефону
$record = Record::withPhone(
    "380501234567",
    Category::MILITARY,
    new DateTimeImmutable() // опціонально
);

// Створення запису за ІПН
$record = Record::withIpn(
    "1234567890",
    Category::FRAUD,
    new DateTimeImmutable("2023-08-01T12:00:00+03:00") // опціонально
);

// Створення запису з телефоном та ІПН
$record = Record::withPhoneAndIpn(
    "380501234567",
    "1234567890",
    Category::CIRCLE,
    new DateTimeImmutable() // опціонально
);

use Wearesho\RiskTools\Blacklist\Exception;
use Wearesho\RiskTools\Blacklist\Update\Record;

// Формування масиву записів
$records = [
    Record::withPhone("380501234567", Category::MILITARY),
    Record::withIpn("1234567890", Category::FRAUD),
    Record::withPhoneAndIpn(
        "380507654321",
        "0987654321",
        Category::CIRCLE,
        new DateTimeImmutable()
    ),
];

// Відправка даних
try {
    $response = $service->update($records);
} catch (Exception $e) {
    // Обробка помилок запиту
    echo "Помилка запиту: " . $e->getMessage() . PHP_EOL;
}


use Wearesho\RiskTools\Blacklist\Update\Response;
/** @var Response $response */

if ($response->isSuccessful()) {
    echo "Всі записи успішно оновлено" . PHP_EOL;
    exit;
}

echo "Кількість записів з помилками: " . $response->countErrors() . PHP_EOL;

foreach ($response->errors() as $error) {
    $record = $error->record();

    // Виведення інформації про запис з помилкою
    echo sprintf(
        "Помилка для запису %s / %s:" . PHP_EOL,
        $record->phone() ?? '-',
        $record->ipn() ?? '-'
    );

    // Виведення помилок валідації
    foreach ($error->errors() as $field => $messages) {
        echo "- $field: " . implode(', ', $messages) . PHP_EOL;
    }
}

use Wearesho\RiskTools\Blacklist\Exception;

try {
    $response = $service->update($records);
} catch (Exception $e) {
    // Обробка будь-якої помилки SDK
    echo "Помилка SDK: " . $e->getMessage();
}


use Wearesho\RiskTools\Blacklist\RequestException;

try {
    $response = $service->search($request);
} catch (RequestException $e) {
    echo "Помилка запиту: " . $e->getMessage();
    echo "Код помилки: " . $e->getCode();

    // Доступ до оригінального винятку Guzzle (якщо є)
    if ($e->getPrevious() instanceof \GuzzleHttp\Exception\GuzzleException) {
        // Обробка специфічної помилки Guzzle
    }
    
    // Доступ до оригінального винятку JSON (якщо є)
    if ($e->getPrevious() instanceof \JsonException) {
        // Обробка специфічної помилки JSON
    }
}

use Wearesho\RiskTools\Blacklist\ResponseException;

try {
    $response = $service->update($records);
} catch (ResponseException $e) {
    echo "Помилка обробки відповіді: " . $e->getMessage();
}