MAYFPAY Последние обновление: 06-07-2023 12:50

Прием платежей для Ваших проектов. Удобная платежная система, для сайтов, приложений, социальных сетей, мессенджеров и оплаты по ссылкам.




Информация про API

API (Application programming interface) — позволяет разработчикам интегрировать платежные функции MayfPay в свои веб-сайты или приложения, что упрощает процесс приема платежей. API предоставляет доступ к функциям, таким как создание и обработка платежей, проверка статуса транзакции и получение отчетов о платежах.

Благодаря «MAYFPAY API», вы можете:

  • Управлять кошельком
  • Принимать платежи
  • Переводить средства




Как Зарегистрироваться ?
  1. Зарегистрироваться на нашем сайте
  2. Подайте проект на модерацию, для приема платежей
    • Указываем ссылку на Ваш сайт, с требуемым протоколом https.
    • Заполняем описание вашего проекта. Чем Вы занимаетесь, за что собираетесь принимать деньги. На основании вашего обращения, модераторы примут решение, одобрять Ваш проект или нет.
  3. Подтверждение владением домена. 2 способа подтверждения
    • 1 способ. Загрузка HTML файла на Ваш сайт, Вам потребуется скачать и загрузить в корень вашего сайта файл, который вы скачали.
    • 2 способ. Установка META-тега в код Вашего сайта. В index вашего сайта, вставьте между тегами head и /head
  4. Прохождение модерации
    • Если Ваш сайт был отклонен, Вам придет email с причиной отклонения или с требованиями о предоставлении дополнительной информации.
    • После исправления ошибок или, если Вы считаете, что отклонили просто так, требуется написать в тех. поддержку, с уточняющей информацией.
  5. Интеграция - потребуется интеграция посредством отправки формы. Для перехода к оплате, вам потребуется отправлять пользователя к нам. Пользователя Вы должны отправить путем отправки формы, подробнее о генерации формы
  6. Обработка платежа, после оплаты
    • После оплаты счета клиентом, Вы увидите информацию на сайте, внутри счетов вашей кассы.
    • Если Вы хотите автоматизировать процесс обработки платежей, то Вам потребуется настроить API в настройках вашего магазина и скрипта. После оплаты пользователем, мы отправляем уведомление на ваш сервер. Подробнее об отправляемых данных
  7. Готово !

    По любым вопросам по поводу интеграции, Вы всегда можно обратиться в нашу тех. поддержку.

API Касс ( MP Business)

Для приема средств от пользователя, достаточно настроить ваш Проект согласно правилам ниже

1.1 Информация про MP Business



Для чего? ВАЖНО!


API MP Business, помогает:

    • Управлять балансом Касс Информация про Кассы
    • Выставление счетов Генерация Платежей
    • Проверка статусов счетов Уведомления и API запрос
    • Переводы средств Перевод на карты, э-кошельки и криптовалюту

1.3 Авторизация



Аутентификация с использованием подписи

Для выполнения запросов к API необходимо предоставить корректные параметры аутентификации, включая ключи доступа и подписи.


Метод шифрования: hmac sha256

Параметр Описание
timestamp Уникальный идентификатор, сгенерированный для каждого запроса
x-api-public-key Открытый ключ для аутентификации
x-api-signature Подпись, созданная с использованием секретного ключа


Генерация параметров запроса



1. Генерация Time stamp (Временная метка)


# Example in Python
import time  

timestamp = time.time()

2. Создание подписи


# Example in Python
import hashlib
import hmac
import json

params = {
    '': '',
    ...
}

# Преобразование параметров в JSON-строку
payload_str = json.dumps(params)

# Секретный ключ кассы
secret_key = ''

# Создайте подпись
XApiSignature = hmac.new(secret_key.encode(), payload_str.encode(), hashlib.sha256).hexdigest()


Пример заголовков запроса (headers)


POST /api/authorization HTTP/1.1
Host: example.com
timestamp:
x-api-public-key: <your-public-key>
x-api-signature: <generated-signature>
Content-Type: application/json


    Где:
    • timestamp- Заменяется на сгенерированный timestamp (временная метка).
    • x-api-public-key- Заменяется на ваш открытый ключ для аутентификации.
    • x-api-signature- Заменяется на созданную подпись с использованием секретного ключа и параметров запроса.

Обратите внимание, что пример представлен в формате HTTP заголовков и может потребовать некоторых изменений, в зависимости от того, как вы взаимодействуете с API (например, через библиотеку или инструмент разработки).
# Example in Python
import time
import hashlib
import hmac
import json
import requests

# Параметры запроса
params = {
    '': '',
    ...
}

# Преобразование параметров в строку JSON
payload_str = json.dumps(params)

# Получение текущего времени в виде строки
timestamp = str(time.time())

# Секретный ключ и публичный ключ
secret_key = ''
public_key = ''

# Создание подписи запроса
XApiSignature = hmac.new(secret_key.encode(), payload_str.encode(), hashlib.sha256).hexdigest()

# Формирование заголовков запроса
headers = {
    'timestamp': timestamp,
    'x-api-public-key': public_key,
    'x-api-signature': XApiSignature,
}

# Отправка GET-запроса
url = 'https://mayfpay.top/api/v2/...' 
r = requests.get(url, params=params, headers=headers)

# Вывод ответа на запрос
print(r.json())

1.4 Баланс Кассы

Предоставляет возможность получить информацию о текущем балансе кассы в системе.



  • URL метода: https://mayfpay.top/api/v2/kassa/balance
  • Метод: GET
  • Content-Type: application/json
  • Описание: Основная информация о Кассе


Параметр Тип Описание Обязательно
api_token string API Токен. +
kassa_id integer ID Кассы в нашей системе. +


Пример ответа


{
   "KassaId": 3,
   "KassaName": "MAYFPAY TEST",
   "KassaBalance": 12232.55,
   "KassaFeeOn": 0
}

1.5 Создания платежа (Выставление счета)

Техническое описание и возможность генерировать и отправлять счета для оплаты, упрощая процесс выставления и обработки платежей.



Требование (Requirement) ВАЖНО!


Создания платежа (Выставление счета)



  • URL метода: https://mayfpay.top/api/v2/kassa/invoice/create
  • Метод: POST
  • Content-Type: application/json
  • Описание: Создание платежа (Получение ссылки)

Параметр Тип Описание Обязательно
api_token string API токен. +
kassa_id int ID Кассы в нашей системе +
amount float Сумма транзакции. +
order_id string Идентификатор транзакции в вашей системе. +
expire_invoice int Время жизни инвойса (счета) в минутах.
en boolean Форма на английском языке. (По умолчанию RU)
PayMethodId string Платежный метод. (Доступные значения уточняйте у менеджеров)
SubPayMethodId string Доп. Платежный система. (Доступные значения уточняйте у менеджеров)
comment string Назначение платежа.
successUrl string URL для переадресовки пользователя при успешной оплате.
failUrl string URL для переадресовки пользователя при ошибке при оплате.
data json Объект, передаваемый на сервер вместе с уведомлением об успешном платеже.

Пример тела запроса:

# Установка базового URL для запросов
base_url = 'https://mayfpay.top/'

# Параметры запроса
params = {
    'api_token': '',  # Здесь нужно указать ваш API токен
    'kassa_id': '',  # Здесь нужно указать идентификатор кассы
    'amount': '',  # Здесь нужно указать сумму платежа
    'order_id': '',  # Здесь нужно указать идентификатор заказа
}

secret_key = ''  # Здесь нужно указать ваш секретный ключ
public_key = ''  # Здесь нужно указать ваш публичный ключ

# Преобразование параметров запроса в строку JSON
payload_str = json.dumps(params)

# Создание подписи запроса
XApiSignature = hmac.new(secret_key.encode(), payload_str.encode(), hashlib.sha256).hexdigest()

# Формирование заголовков запроса
headers = {
    'timestamp': str(time.time()),
    'x-api-public-key': public_key,
    'x-api-signature': XApiSignature,
    'Content-type': 'application/json',
}

# Формирование полного URL для создания инвойса
url = base_url + 'api/v2/kassa/invoice/create'

# Отправка POST-запроса для создания инвойса
response = requests.post(url, json=params, headers=headers)
<?php
$base_url = 'https://mayfpay.top/';

$params = array(
    'api_token' => '', // Здесь нужно указать ваш API токен
    'kassa_id' => '', // Здесь нужно указать идентификатор кассы
    'amount' => '', // Здесь нужно указать сумму платежа
    'order_id' => '' // Здесь нужно указать идентификатор заказа
);

$secret_key = ''; // Здесь нужно указать ваш секретный ключ
$public_key = ''; // Здесь нужно указать ваш публичный ключ

$payload_str = json_encode($params);

$XApiSignature = hash_hmac('sha256', $payload_str, $secret_key);

$headers = array(
    'timestamp' => strval(time()),
    'x-api-public-key' => $public_key,
    'x-api-signature' => $XApiSignature,
    'Content-type' => 'application/json'
);

$url = $base_url . 'api/v2/kassa/invoice/create';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

?>
const crypto = require('crypto');
const axios = require('axios');

// Установка базового URL для запросов
const base_url = 'https://mayfpay.top/';

// Параметры запроса
const params = {
  api_token: '', // Здесь нужно указать ваш API токен
  kassa_id: '', // Здесь нужно указать идентификатор кассы
  amount: '', // Здесь нужно указать сумму платежа
  order_id: '', // Здесь нужно указать идентификатор заказа
};

const secret_key = ''; // Здесь нужно указать ваш секретный ключ
const public_key = ''; // Здесь нужно указать ваш публичный ключ

// Преобразование параметров запроса в строку JSON
const payload_str = JSON.stringify(params);

// Создание подписи запроса
const XApiSignature = crypto
  .createHmac('sha256', secret_key)
  .update(payload_str)
  .digest('hex');

// Формирование заголовков запроса
const headers = {
  timestamp: String(Date.now() / 1000),
  'x-api-public-key': public_key,
  'x-api-signature': XApiSignature,
  'Content-type': 'application/json',
};

// Формирование полного URL для создания инвойса
const url = base_url + 'api/v2/kassa/invoice/create';

// Отправка POST-запроса для создания инвойса
axios
  .post(url, params, { headers })
  .then((response) => {
    console.log(response.data);
  })
  .catch((error) => {
    console.error(error);
  });
curl -X POST -H "timestamp: <timestamp_value>" \
-H "x-api-public-key: <public_key_value>" \
-H "x-api-signature: <XApiSignature_value>" \
-H "Content-type: application/json" \
-d '{
    "api_token": "<api_token_value>",
    "kassa_id": "<kassa_id_value>",
    "amount": "<amount_value>",
    "order_id": "<order_id_value>"
}' "https://mayfpay.top/api/v2/kassa/invoice/create"


Пример ответа запроса (Ошибка):

{"success":false, "error":"...", "time":"..."}

Пример ответа запроса (Успешно):

{
'success': true, 
'Id': ...,
'OrderId':'...',
'StatusTransaction': 0,
'KassaId': ...,
'Amount': ...,
'Currency': '...',
'AccountAmount': ...,
'RecipientTotalAmount': ...,
'PayyerTotalAmount': ...,
'FeeOn': ...,
'PayMethodId': '...',
'Comment': None,
'TransactionData': ...,
'DateOfCreateTransactions': '...',
'SuccessUrl': '...',
'UnSuccessUrl': '...',
'UrlTransaction':'',
'Sign': ...
}

1.7 Информация о счете

Предоставляет возможность получить подробную информацию о конкретном счете.


  • URL метода: https://mayfpay.top/api/v2/kassa/invoice/check
  • Метод: GET
  • Content-Type: application/json
  • Описание: Детальная информация о счете

Параметр Тип Описание Обязательно
api_token string API токен. +
order_id int Идентификатор транзакции в вашей системе.Ес +


Пример ответа


{
'success': true, 
'Id': ...,
'OrderId':'...',
'StatusTransaction': 0,
'KassaId': ...,
'Amount': ...,
'Currency': '...',
'AccountAmount': ...,
'RecipientTotalAmount': ...,
'PayyerTotalAmount': ...,
'FeeOn': ...,
'PayMethodId': '...',
'Comment': None,
'TransactionData': ...,
'DateOfCreateTransactions': '...',
'SuccessUrl': '...',
'UnSuccessUrl': '...',
'UrlTransaction':'',
'Sign': ...
}

1.6 Уведомления о платеже (CallBack)

Данное уведомление приходит после успешной оплаты в вашем магазине. Указать WebHook(Ссылку для уведомлений), можно в настройках магазина.


  • Метод: POST
  • Content-Type: application/json
  • Описание: Callback функция для передачи информации об изменении статуса платежа


Параметр Тип Описание
Id integer Идентификатор транзакции в нашей системе.
OrderId string Идентификатор транзакции в вашей системе.
StatusTransaction integer Статус транзакции. (1 - Транзакция оплачена) (0 - Транзакция в ожидание оплаты) (2 Транзакция отмененна.
Amount float Сумма транзакции.
AccountAmount float Сумма транзакции.
RecipientTotalAmount float Сумма, полученная получателем.
PayMethodId string Платежный метод.
SubPayMethodId string Доп. Платежный система.
Comment string Назначение платежа.
TransactionData json Данные транзакции.
DateOfCreateTransactions datetime Дата и время создания транзакции.
DateOfPayTransactions datetime Дата и время оплаты транзакции.
Sign string Подпись транзакции.
UrlTransaction string URL транзакции.
CBStatus string Статус Callback. SuccessfulTransaction - CB об успешной оплате / CanceledTransaction - CB об отмененной оплате


Пример ответа


{
'Id': ...,
'OrderId':'...',
'StatusTransaction': 0,
'KassaId': ...,
'Amount': ...,
'Currency': '...',
'AccountAmount': ...,
'RecipientTotalAmount': ...,
'PayyerTotalAmount': ...,
'FeeOn': ...,
'PayMethodId': '...',
'Comment': None,
'TransactionData': ...,
'DateOfCreateTransactions': '...',
'SuccessUrl': '...',
'UnSuccessUrl': '...',
'UrlTransaction':'',
'Sign': ...
'CBStatus': ...
}

1.8 Генерация подписи (SIGNATURE)

Генерация ключа, обязательный параметр. Он требуется для проверки платежа на уникальность и подтверждения, что переход к оплате был с вашего сайта. SIGNATURE ключ должен быть сгенерирован до отправки формы и введен в форму!


Метод шифрования: sha256


Параметр Тип Описание Обязательно
KassaId string ID Кассы в нашей системе. +
Amount string Сумма транзакции. +
KassaSecretKey string Секретный ключ Кассы. +
OrderId string ID Транзакции в вашей системе. +


Пример генерации


# Example in Python
import hashlib

KassaId = ''
KassaSecretKey =''
Amount = ''
OrderId = ''

concatenated_string = ':'.join([KassaId, Amount, KassaSecretKey, OrderId])
sign = hashlib.sha256(concatenated_string.encode()).hexdigest()

# print(sign)

1.9 Эквайринг (H2H)

Метод H2H (Host To Host) — оптимальное решение для эффективной интеграции.

Алгоритм проведения платежа

Для осуществления платежа напрямую, вам потребуется выполнить два запроса:


Сначала нужно будет обратиться к https://mayfpay.top/api/v2/kassa/invoice/create для создания платежа, затем к https://mayfpay.top/api/v2/kassa/invoice/create/card-flow.


Также для обновления статуса потребуется обращаться к https://mayfpay.top/api/v2/kassa/invoice/check/card-flow.

Проведение платежа

  • URL метода: https://mayfpay.top/api/v2/kassa/invoice/create/card-flow
  • Метод: POST
  • Content-Type: application/json
  • Описание: Получение реквизитов карты для проведения платежа

Параметр Тип Описание Обязательно
id string Id Платежа. +
ua string User-Agent плательщика. +
ip string IP-адрес плательщика. +
holder string Имя владельца карты. +
card dict Реквизиты карты. +

Пример тела запроса:

{
  "id": 33820, // Id платежа
  "ua": ..., // User-Agent плательщика
  "ip": ..., // IP-адрес плательщика
  "card": {
   "pan": "2202883001546689", // Номер карты без пробелов
    "expire": ["01", "30"], // Дата окончания - месяц, год
    "cvv": "123", // cvv/cvc карты
  }
}

Пример ответа в случае успеха:

{
  "success": true, // Успешный ли запрос
  "redirect": {
    "url": "...", // URL для 3DS-формы
    "updateInterval": 2500 // Рекомендуемый интервал обновления статуса
  }
}

Далее необходимо отправить пользователя на url в payload.

Запрос получения статуса платежа

  • URL метода: https://mayfpay.top/api/v2/kassa/invoice/check/card-flow
  • Метод: POST
  • Content-Type: application/json
  • Описание: Запрос на получение статуса платежа

Параметр Тип Описание Обязательно
id string Id Платежа. +

Возможные статусы:

  • created - Создан, процесс оплаты ещё не был начат
  • pending - Ожидает оплаты
  • processing - Происходит процессинг
  • failed - Ошибка платежа
  • paid - Оплачен

1.8 P2P (peer-to-peer) Платежи (H2H)

Метод H2H (Host To Host) — оптимальное решение для эффективной интеграции.

Запрос доступных методов


  • URL метода: https://mayfpay.top/api/v2/p2p/payments/request-methods
  • Метод: GET
  • Content-Type: application/json
  • Описание: Получение доступных методов оплаты

Параметр Тип Описание Обязательно
country string ГЕО страны. +
amount string Сумма платежа. (В валюте country) +

Алгоритм получения реквизитов

Для осуществления платежа напрямую, вам потребуется выполнить три запроса:


Сначала нужно будет обратиться к https://mayfpay.top/api/v2/kassa/invoice/create для создания платежа, затем к https://mayfpay.top/api/v2/kassa/invoice/create/p2p/order.

После для подтверждения ордера отправить запрос на https://mayfpay.top/api/v2/kassa/invoice/admission/p2p/order.


Запрос реквизитов

  • URL метода: https://mayfpay.top/api/v2/kassa/invoice/create/p2p/order
  • Метод: POST
  • Content-Type: application/json
  • Описание: Получение реквизитов карты для проведения платежа

Параметр Тип Описание Обязательно
id string Id Платежа. +
pay_method_tag string Уникальный идентификатор банка. +
customer_name string FULL NAME пользователя.
customer_email string Электронная почта пользователя.

Пример тела запроса:

{
  "id": 33820, // Id платежа
  "pay_method_tag": ..., // Pay Method идентификатор метода
}

Пример ответа в случае успеха:

{
  'success': True,
  'amount': ..., 
  'P2PSlug': ...,
  'P2PTag': ..., 
  'P2PCurrency': ..., 
  'CardP2PBlank': ..., 
  'RequisitesP2PBank': ..., 
  'RequisitesP2PCard': ...,  
  'RequisitesP2PHolder': ..., 
  'RequisitesP2PPhone': ..., 
  'RequisitesP2PPhoneBank':..., 
  'H2H': True
}

Далее необходимо вставить реквизиты в форму.

Подтверждение ордера

Для некоторых методов требуется подтверждение P2P-ордера.


  • URL метода: https://mayfpay.top/api/v2/kassa/invoice/admission/p2p/order
  • Метод: POST
  • Content-Type: application/json
  • Описание: Запрос на подтверждение статуса ордера

Параметр Тип Описание Обязательно
id string Id Платежа. +
card_mask string Последние 4 цифры номера карт плательщика. +

Апелляция Транзакций (API)

Апелляция Транзакций (API) - это программный интерфейс, предоставляющий возможность разработчикам взаимодействовать с системой апелляции транзакций.



Подача Апелляции


  • URL метода: https://mayfpay.top/api/v2/kassa/invoice/create/disput
  • Метод: POST
  • Content-Type: application/json
  • Описание: Подача апелляции по транзакции

Параметр Тип Описание Обязательно
api_token string API токен. +
order_id string Идентификатор транзакции в вашей системе. +
attachment string Array of Base64 encoded images. +
disput_type string Тип аппеляции. (delay - Задержка / recalculating - Пересчет) +
comment string Комментарий.


Пример тела запроса:

base_url = 'https://mayfpay.top/'

# Формируем тело запроса
data = {
    'api_token': 'api_token',
    'order_id': 'order_id',
    'attachment': 'attachments',
    'disput_type': 'disput_type',
    'comment': 'comment'
}

# Отправляем запрос к целевому API
url = base_url + 'api/v2/kassa/invoice/create/disput'
response = requests.post(url, json=data)
<?php
$base_url = 'https://mayfpay.top/';

// Формируем тело запроса
$data = array(
    'api_token' => 'api_token',
    'order_id' => 'order_id',
    'attachment' => 'attachments',
    'disput_type' => 'disput_type',
    'comment' => 'comment'
);

// Отправляем запрос к целевому API
$url = $base_url . 'api/v2/kassa/invoice/create/disput';
$options = array(
    'http' => array(
        'header' => "Content-type: application/json\r\n",
        'method' => 'POST',
        'content' => json_encode($data)
    )
);
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
curl -X POST -H "Content-Type: application/json" -d '{
  "api_token": "api_token",
  "order_id": "order_id",
  "attachment": "attachments",
  "disput_type": "disput_type",
  "comment": "comment"
}' http://mayfpay.top/api/v2/kassa/invoice/create/disput

API Кошелька

Для вывода, переводов и настройки кошелька.





2.1 Информация о кошельке


Запрос

Запрос требует обязательных выполнений критерий. API ключ устойчив к регистру


URL: https://mayfpay.top/api/v1/wallet
Метод отправки: GET


Параметр Тип Описание Обязательно
api_token string API токен. +


Пример ответа


{
   "wallet_id": "MPADMIN",
   "wallet_balance": 890.29
}

2.2 Перевод средств


Запрос

Запрос требует обязательных выполнений критерий. API ключ устойчив к регистру


URL: https://mayfpay.top/api/v1/wallet/transfer/create
Метод отправки: POST


Параметр Тип Описание Обязательно
api_token string API токен. +
amount float Сумма к переводу. +
method string Уникальный номер сервиса куда будет осуществлен вывод. +
fee_type Integer Комиссия. (0 - На отправителе / 1 - На получателе) +
wallet_service string Реквизиты для вывода. +
call_back_url string URL адрес для получения веб-хука.
kassa_id Integer Вывод баланса напрямую с кассы.
extra_wallet_service json Дополнительные реквизиты для вывода.


Webhook call_back_url:

По изменению статуса перевода, вы получите следующую информацию на ваш call_back_url.

{
 "Id": 26,
 "DateOfCreateTransactions": "2023-06-01T22:11:14.094477+03:00",
}

Пример ответа


{
  "Id": 26,
  "StatusTransaction": 0,
  "PayeerWallet": "MPADMIN",
  "RecipientWallet": "eur",
  "KassaId": null,
  "TypeTransaction": "Transfer",
  "PayMethod": "eur",
  "Commnet": null,
  "Amount": 450.0,
  "CurrencyAmount": 5.1,
  "Currency": "EUR",
  "PayyerTotalAmount": 463.5,
  "RecipientTotalAmount": 450.0,
  "FeeTotalAmount": 13.5,
  "FeeType": 0,
  "DateOfCreateTransactions": "2023-06-01T22:11:14.094477+03:00"
}

2.2.1 Информация о переводе


Запрос

Запрос требует обязательных выполнений критерий. API ключ устойчив к регистру


URL: https://mayfpay.top/api/v1/wallet/transfer/check
Метод отправки: GET


Параметр Тип Описание Обязательно
api_token string API токен. +
id integer Индификатор транзакции. +


Пример ответа


{
  "Id": 26,
  "StatusTransaction": 0,
  "PayeerWallet": "MPADMIN",
  "RecipientWallet": "eur",
  "KassaId": null,
  "TypeTransaction": "Transfer",
  "PayMethod": "eur",
  "Commnet": null,
  "Amount": 450.0,
  "CurrencyAmount": 5.1,
  "Currency": "EUR",
  "PayyerTotalAmount": 463.5,
  "RecipientTotalAmount": 450.0,
  "FeeTotalAmount": 13.5,
  "FeeType": 0,
  "DateOfCreateTransactions": "2023-06-01T22:11:14.094477+03:00"
}

Дополнительно

Модули/Плагины CMS

...
WooCommerce
Встраиваемый модуль

Установить

...
PHP SDK
Библиотека

Установить

...
Python
Библиотека

Установить

Python библиотека

Своя библиотека Python

У нас есть своя библиотека Python,
для того что бы интеграция в ваши
Python проекты была быстрее

Установить библиотеку можно с нашего
репозитория на GitHub.