Документация к API Paytoday.pro

API позволяет создавать счета на оплату и получать информацию об оплаченных счетах.
Для авторизации запросов требуется API Key. Чтобы получить API Key, пишите вашему менеджеру или на почту ask@paytoday.pro .
Создание ссылки на оплату
Метод: GET
Метод создает новый счет на оплату и возвращает ID созданного счета и URL ссылки на оплату
Передаваемые параметры:
api_key Обязательный. Ключ доступа
order_id Обязательный. Ваш внутренний номер заказа
order_sum_rub Необязательный условно*.. Сумма заказа в рублях
order_sum_usd Необязательный условно*.. Сумма заказа в долларах
client[name] Обязательный. Имя клиента
client[phone] Необязательный. Телефон клиента.
client[email] Обязательный. Email-клиента
order_description Необязательный. Описание заказа
language Необязательный. Возможные значения: “ru” или “en”. По-умолчанию, “ru”. Язык интерфейса страницы оплаты.
success_url Необязательный. В случае успеха клиент будет перенаправлен по указанной ссылке.
fail_url Необязательный. В случае неудачи клиент будет перенаправлен по указанной ссылке.
* Обязательно должна быть указана сумма в рублях или долларах. Если переданы будут сразу два значения, то приоритет будет отдан полю order_sum_rub, а поле order_sum_usd будет проигнорировано.
Результат запроса: JSON объект
                
{
    "invoice_id": 1111, // ID созданного счета на оплату
    "payment_link": "URL" // Ссылка на оплату
}
                
            
Форма для создания запроса:
https://api.paytoday.pro/v1/sample_form
Получение информации об оплаченных заказах
Метод: GET
Метод возвращает информацию обо всех оплаченных заказах в формате JSON.
Передаваемые параметры:
api_key Обязательный. Ключ доступа
user_id Обязательный. ID учетной записи на Shopozz
date_from Необязательный Фильтр по дате оплаты, нижняя граница. Передается в формате YYYY-MM-DD, например, “2022-01-24”.
date_to Необязательный Фильтр по дате оплаты, верхняя граница. Передается в формате YYYY-MM-DD, например, “2022-06-29”
invoice_ids Необязательный. Фильтр по номерам заказа. Номера передаются через запятую, например invoice_ids=1111,2222,4444
Если фильтры по дате не переданы, то возвращается информация обо всех оплаченных счетах.
Результат запроса: JSON объект
                
{
    "transactions":
    [
        {
            "transaction_id":"95000", // Номер транзакции
            "order_id":"3", // Внутренний номер заказа
            "payment_sum_usd": "10.00", // Сумма заказа в $
            "payment_data":"2022-04-08 14:32:23", // Дата и время оплаты
            "payment_sum_rub":"763", // Сумма заказа в рублях
            "client_name":"Иванов Иван", // Имя клиента
            "client_phone":"800000000000", // Телефон клиента
            "client_email":"test@mail.ru", // Email клиента
            "status":"1", // Статус заказа (1 - Оплачен, 0 - Не оплачен)
            "order_info":"", // Информация о заказе
            "invoice_id":"1110" // Номер счета на оплату
        },
    ]
}
                
            
Уведомление о платежных операциях
В личном кабинете на странице профиля Вы можете указать ссылку, по которой хотите отправлять уведомления об успешных платежных транзакциях. Уведомление придет в течение минуты после оплаты счета, а код ожидаемого ответа - 200. Если код ответа отличается, то попытка доставки уведомления будет повторяться каждый час в течение 5 дней.
Пример приходящего уведомления: JSON объект
                
{
   	"merchant_identifier":"123456", // Ид Вашего аккаунта в системе (user_id) 
  	"merchant_reference":"1234", // Ваш внутренний номер заказа
   	"event":"payment.succeeded", // Событие
  	"response_message":"Success", // Сообщение о событии
  	"invoice_id":"000001" // Номер счета на оплату
   	"amount_usd": "12.31", // Сумма счета в долларах
   	"amount_rub": "1000", // Сумма счета в рублях
   	"status":"1", // Статус заказа (1 - Оплачен, 0 - Не оплачен)
   	"customer_name":"Иванов Иван", // Имя клиента
   	"customer_email":"test@mail.ru", // Email клиента
   	"date_paymented":"2022-04-08 14:32:23", // Дата и время оплаты
  	"billing":"Tap", // Платежная система, через которую был произведен платеж
}
                
            
Чтобы проверить достоверность уведомления, вы можете:
1. Добавить проверку по IP-адресу. Мы отправляем уведомления только с 82.148.17.217.
2. Добавить проверку целостности.
Пример проверки целостности уведомления (php):
            
// Принимаем уведомление
$source = file_get_contents('php://input');
$requestBody = json_decode($source, true);

// Пароль должен быть заменен на тот, который был сгенерирован в личном кабинете на странице профиля.
$sha = 'qwerty';

// Запоминаем hash уведомления
$signature = $requestBody['signature'];

// Формируем проверочный hash
unset($requestBody['signature']);
ksort($requestBody);
$hash = '';
foreach ($requestBody as $key => $value)
{
    $hash .= "$key=$value";
}

// Проверяем целостность уведомления
if ($signature != hash("SHA256", $sha . $hash . $sha))
{
    http_response_code(200);
    exit('Ошибка проверки целостности уведомления');
}