Merchant API
Подготовка к интеграции
Регистрация и создание магазина через Tiyn Business
Для подготовки к интеграции необходимо:
- Зарегистрировать личный кабинет Tiyn Business по кнопке Подключиться на
странице tiyn.io;
- В личном кабинете создать магазин в разделе Магазины, перейти в настройки магазина и заполнить раздел Общие
настройки;
- Перейти в раздел настроек магазина Технические настройки и сгенерировать новый секретный ключ (
secretPhrase)
для формирования подписи;
- Если требуется передача уведомлений об изменении статусов счета в одну из ваших систем (Callback), заполнить поле
ResultURL адресом для получения уведомлений;
- Активировать созданный магазин, связавшись с персональным менеджером.
HTTP-заголовки
Взаимодействие с сервисом происходит посредством передачи HTTP-запросов.
Запросы могут включать следующие заголовки:
Content-Type: application/json; charset=utf-8
x-api-key: <API Key>
x-sign: <электронно-цифровая подпись> (кроме получения данных счета и данных магазина)
Алгоритм формирования ЭЦП
ЭЦП формируется следующим образом:
- От сформированного тела запроса (body) вычисляется хеш по алгоритму HMAC-SHA512. В качестве ключа используется
secretPhrase), кодировка UTF-8
- Полученное значение переводится в base64
Примеры реализации алгоритма формирования x-sign
Пример на языке C#
Пример на языке PHP
Схема проведения запроса
- Магазин отправляет в Tiyn Business запрос на создание счета;
- Tiyn Business обрабатывает запрос и, если счет создан корректно, возвращает данные, содержащие ссылку для
перехода на оплату;
- Плательщик переходит по ссылке выбирает способ оплаты и вводит платежные данные;
- Tiyn Business отправляет запрос на списание денежных средств эквайеру;
- Tiyn Business получает ответ об успешной/неуспешной оплате счета от эквайера;
происходит переадресация плательщика на страницу магазина
- В случае успешной оплаты счета плательщик перенаправляется на страницу, указанную при создании счета в параметре
successUrl;
- В случае неуспешной оплаты происходит перенаправление на страницу, указанную при создании счета в параметре
failUrl;
- Tiyn Business отправляет магазину уведомление об успешной/неуспешной оплате счета;
Магазин возвращает ответ-подтверждение о проведенной операции.
Создание счета
Метод позволяет создать счет на оплату и отправить его плательщику.
Пример запроса на создание счета
curl https://business.tiyn.io/merchant-api/api/v2/invoices \
-X POST \
-H 'x-api-key: <Ключ доступа>' \
-H 'x-sign: <ЭЦП>' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{
"externalId": "3c5301df-d806-4fb0-9f96-f44d5d2d3827",
"amount": 105.05,
"currency": "KZT",
"description": "Оплата заказа №12080",
"customerPhone": "+74994550185",
"customerEmail": "support@tiyn.io",
"customerIp": "127.0.0.1",
"customData": {
"key1": "value1",
"key2": 5
},
"successUrl": "https://empty.com/successUrl",
"failUrl": "https://empty.com/failUrl",
"deliveryMethod": "URL",
"expirationDate": "2021-03-14 11:08:24.909150+03:00",
"ofdData": null
}'
Описание параметров запроса на создание счета
| Параметр |
Обязательный |
Валидация |
Описание |
| externalId |
Да |
Уникальный, непустая строка, максимум 100 символов |
Уникальный внутренний идентификатор счета в системе магазина |
| amount |
Да |
Десятичное число с двумя знаками после запятой. Минимум - 0.01, максимум - 999999999999999.99 |
Сумма счета, разделитель дробной части - "." (точка) |
| currency |
Нет |
KZT |
Валюта, в которой будет оплачен счет |
| description |
Да |
Непустая строка, максимум 1000 символов |
Описание счета |
| customerPhone |
Нет |
Номер телефона в международном формате (+7xxxxxxxxxx) |
Номер телефона плательщика. Обязательный для способа доставки SMS |
| customerEmail |
Нет |
Адрес электронной почты |
Адрес электронной почты плательщика. Обязательный для способа доставки EMAIL |
| customerIp |
Нет |
IPv4 (xxx.xxx.xxx.xxx) |
IP-адрес плательщика |
| customData |
Нет |
|
Различная служебная информация, поле будет возвращено в уведомлении об оплате счета. Поле любого типа, поддерживаемого форматом json |
| successUrl |
Нет |
URL |
URL-адрес страницы магазина, на которую будет переправлен плательщик в случае успешно оплаченного счета, максимум 100 символов |
| failUrl |
Нет |
URL |
URL-адрес страницы магазина, на которую будет переправлен плательщик в случае неуспешно оплаченного счета, максимум 100 символов |
| deliveryMethod |
Нет |
EMAIL, SMS или URL (по умолчанию) |
Метод доставки счета клиенту. Метод EMAIL — доставка счета в письме по адресу электронной почты SMS — доставка счета в SMS-сообщении URL — получение ссылки на оплату в ответе на запрос на создание счета |
| expirationDate |
Нет |
Дата в формате yyyy-MM-dd HH:mm:ss.fffZZZ, должна быть больше текущей даты |
Дата и время действия счета. Если в запросе указать данный параметр, то произвести оплату по данному счету можно будет только до момента наступления указанных даты и времени. Если по истечении заданного времени и даты оплата не была совершена, счет переходит в состояние 6 (InoiceCancelled), и при попытке его оплатить пользователь будет перенаправлен на страницу ошибки. Пример: 2022-04-28 17:42:30.220+03:00 |
| ofdData |
Нет |
|
Данные для фискализации. В зависимости от настроек магазина отправляются тому или иному провайдеру фискальных данных. |
Пример успешного ответа на запрос на создание счета
{
"success": true,
"data": {
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a",
"externalId": "3c5301df-d806-4fb0-9f96-f44d5d2d3827",
"paymentLink": "https://business.tiyn.io/portal2/pay/i/cd422358-56dd-4039-9559-c1fb766dbbbd"
}
}
Описание параметров успешного ответа при создании счета
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда true |
Признак успешности выполнения команды |
| data |
Да |
Объект |
Данные счета |
Описание параметров объекта data
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор счета в Tiyn Business |
| externalId |
Да |
Уникальный, непустая строка |
Уникальный внутренний идентификатор счета в системе магазина |
| paymentLink |
Да |
Непустая строка |
Платежная ссылка для перенаправления |
Пример ответа с ошибкой на запрос на создание счета
{
"success": false,
"error": {
"code": "1",
"message": "Ошибка создания счета",
"correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
}
}
Описание параметров ответа с ошибкой создания счета
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда false |
Признак успешности выполнения команды |
| error |
Да |
Объект |
Данные об ошибке |
Описание параметров объекта error
| Параметр |
Обязательный |
Валидация |
Описание |
| code |
Да |
Непустая строка |
Код ошибки (см. Описание кодов ошибок) |
| message |
Да |
Непустая строка |
Описание ошибки |
| correlationId |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Отмена счета
Метод позволяет отменить возможность оплаты счета. Доступен только для тех счетов, по которым
еще не было переходов на платежную страницу, в обратном случае запрос будет отклонен.
Пример запроса на отмену счета
curl https://business.tiyn.io/merchant-api/api/v2/invoices/<uuid>/cancel \
-X PUT \
-H 'x-api-key: <Ключ доступа>' \
-H 'x-sign: <ЭЦП>' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{
"requestId": "1df6b40c-e8a7-fcd1-a799-a0cfa3edab3a",
"reason": "Отменен"
}'
uuid - идентификатор счета, полученный в успешном ответе при создании счета.
Описание параметров запроса на отмену счета
| Параметр |
Обязательный |
Валидация |
Описание |
| requestId |
Да |
Уникальный, непустая строка |
Идентификатор запроса |
| reason |
Да |
Непустая строка |
Данные о причине отмены счета |
Пример успешного ответа на запрос на отмену счета
{
"success": true,
"data": {
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a",
"requestId": "d1f6b55c-e8a1-add7-a719-a1cfd3eda3ad"
}
}
Описание параметров успешного ответа на запрос на отмену счета
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда true |
Признак успешности выполнения команды |
| data |
Да |
Объект |
Данные отменяемого счета |
Описание параметров объекта data
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор отменяемого счета |
| requestId |
Да |
Уникальный, непустая строка |
Идентификатор запроса |
Пример ответа с ошибкой на запрос на отмену счета
{
"success": false,
"error": {
"code": "3",
"message": "error",
"correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
}
}
Описание параметров ответа с ошибкой на запрос на отмену счета
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда false |
Признак успешности выполнения команды |
| error |
Да |
Объект |
Данные об ошибке |
Описание параметров объекта error
| Параметр |
Обязательный |
Валидация |
Описание |
| code |
Да |
Непустая строка |
Код ошибки (см. Описание кодов ошибок) |
| message |
Да |
Непустая строка |
Описание ошибки |
| correlationId |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Возврат
Используется для возврата денежных средств. Срок возврата зависит от банка, выпустившего карту плательщика.
Пример запроса на возврат
curl https://business.tiyn.io/merchant-api/api/v2/invoices/<uuid>/refund \
-X PUT \
-H 'x-api-key: <Ключ доступа>' \
-H 'x-sign: <ЭЦП>' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{
"requestId": "1df6b40c-e8a7-fcd1-a799-a0cfa3edab3a",
"amount": 123.12,
"reason": "Возврат по счету №22530"
}'
uuid - идентификатор счета, полученный в успешном ответе при создании счета.
Описание параметров запроса на возврат
| Параметр |
Обязательный |
Валидация |
Описание |
| requestId |
Да |
Уникальный. Непустая строка |
Идентификатор запроса |
| amount |
Да |
Десятичное число с двумя знаками после запятой |
Сумма возврата. Не может превышать сумму amount, указанную при создании счета. |
| reason |
Да |
Непустая строка |
Данные о причине возврата |
Пример успешного ответа на запрос на возврат
{
"success": true,
"data": {
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a",
"requestId": "d1f6b55c-e8a1-add7-a719-a1cfd3eda3ad"
}
}
Описание параметров успешного ответа на запрос на возврат
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда true |
Признак успешности выполнения команды |
| data |
Да |
Объект |
Данные счета |
Описание параметров объекта data
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор счета, по которому выполняется возврат |
| requestId |
Да |
Уникальный. Непустая строка |
Идентификатор запроса |
Пример ответа с ошибкой на запрос на возврат
{
"success": false,
"error": {
"code": "6",
"message": "error",
"correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
}
}
Описание параметров ответа с ошибкой на запрос на возврат
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда false |
Признак успешности выполнения команды |
| error |
Да |
Объект |
Данные об ошибке |
Описание параметров объекта error
| Параметр |
Обязательный |
Валидация |
Описание |
| code |
Да |
Непустая строка |
Код ошибки (см. Описание кодов ошибок) |
| message |
Да |
Непустая строка |
Описание ошибки |
| correlationId |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Получение данных счета
Метод позволяет запросить данные счета: статус счета, итоговая сумма счета, метод оплаты и др.
Пример запроса на получение данных
curl https://business.tiyn.io/merchant-api/api/v2/invoices/<uuid> \
-X GET \
-H 'x-api-key: <Ключ доступа>' \
-H 'Content-Type: application/json; charset=utf-8' \
uuid - идентификатор счета, полученный в успешном ответе при создании счета.
Описание параметров запроса на получение данных
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор счета |
Пример успешного ответа на запрос на получение данных
{
"externalId": "3c5301df-d806-4fb0-9f96-f44d5d2d3827",
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a",
"amount": 105.05,
"finalAmount": 123.12,
"currency": "KZT",
"description": "Счет на оплату заказа №12080",
"customerPhone": "+74994550185",
"customerEmail": "support@tiyn.io",
"customData": {
"key1": "value1",
"key2": 5
},
"successUrl": "http://empty.com/successUrl",
"failUrl": "http://empty.com/failUrl",
"deliveryMethod": "URL",
"expirationDate": "2021-03-14 11:08:24.0909150+03:00",
"ofdData": null,
"status": {
"name": "InvoicePaid",
"time": "2020-03-14 11:08:24.0909150+03:00",
"message": "message"
},
"payments": [
{
"paymentMethod": "BankCard",
"details": {
"account": "411111******1111",
"paymentToken": "837c06b4-b791-4f2c-89b1-a45f78cb1568"
},
"status": {
"name": "PaymentPaid"
}
}
]
}
Описание параметров успешного ответа на запрос на получение данных
| Параметр |
Обязательный |
Валидация |
Описание |
| externalId |
Да |
Уникальный, непустая строка |
Уникальный внутренний идентификатор счета в системе магазина |
| uuid |
Да |
Уникальный, непустая строка |
Идентификатор счета |
| amount |
Да |
Десятичное число с двумя знаками после запятой |
Сумма счета, разделитель дробной части - "." (точка) |
| finalAmount |
Да |
Десятичное число с двумя знаками после запятой |
Сумма счета с учетом возвратов и частичной авторизации |
| currency |
Да |
KZT |
Валюта, в которой будет оплачен счет |
| description |
Да |
Непустая строка |
Описание счета |
| customerPhone |
Нет (Да для deliveryMethod = SMS) |
Номер телефона в международном формате (+7xxxxxxxxxx) |
Номер телефона плательщика |
| customerEmail |
Нет (Да для deliveryMethod = EMAIL) |
Адрес электронной почты |
Адрес электронной почты плательщика |
| customData |
Нет |
Объект json |
Дополнительные данные счета |
| successUrl |
Нет |
URL |
Адрес для перенаправления плательщика в случае успешной оплаты |
| failUrl |
Нет |
URL |
Адрес для перенаправления плательщика в случае неуспешной оплаты |
| deliveryMethod |
Да |
EMAIL, SMS или URL |
Метод доставки счета |
| expirationDate |
Нет |
Дата в формате yyyy-MM-dd HH:mm:ss.fffZZZ, должна быть больше текущей даты |
Дата, по истечении которой счет нужно отменить, например: 2021-03-14 11:08:24.0909150+00:00 |
| ofdData |
Нет |
Объект json |
Данные для формирования фискального чека |
| status |
Да |
Объект |
Данные о статусе заказа (см. Перечень возможных значений статусов счета) |
| payments |
Нет |
Коллекция |
Данные о платежах по счету |
Описание параметров объекта status
| Параметр |
Обязательный |
Валидация |
Описание |
| name |
Да |
Непустая строка |
Название статуса |
| time |
Да |
Дата в формате yyyy-MM-dd HH:mm:ss.fffZZZ |
Дата перехода в статус |
| message |
Да |
Непустая строка |
Описание причины перехода в статус |
Описание параметров объекта payments
| Параметр |
Обязательный |
Валидация |
Описание |
| paymentMethod |
Да |
Непустая строка |
Метод оплаты, выбранный плательщиком в процессе оплаты |
| details |
Нет |
Объект |
Дополнительные данные платежа |
| status |
Да |
Объект |
Статус платежа (см. Перечень возможных значений статусов платежа) |
Описание параметров объекта details
| Параметр |
Обязательный |
Валидация |
Описание |
| account |
Нет |
Непустая строка |
Данные об аккаунте плательщика |
| paymentToken |
Нет |
Непустая строка |
Идентификатор платежного токена |
Описание параметров объекта status
| Параметр |
Обязательный |
Валидация |
Описание |
| name |
Да |
Непустая строка |
Статус платежа (см. Перечень возможных значений статусов платежа) |
Пример ответа с ошибкой на запрос на получение данных
{
"success": false,
"error": {
"code": "5",
"message": "error",
"correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
}
}
Описание параметров ответа с ошибкой на запрос на получение данных
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда false |
Признак успешности выполнения команды |
| error |
Да |
Объект |
Данные об ошибке |
Описание параметров объекта error
| Параметр |
Обязательный |
Валидация |
Описание |
| code |
Да |
Непустая строка |
Код ошибки (см. Описание кодов ошибок) |
| message |
Да |
Непустая строка |
Описание ошибки |
| correlationId |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Оплата счета
Метод позволяет передать детали платежа для осуществления оплаты.
Пример запроса оплаты счета
curl https://business.tiyn.io/merchant-api/api/v2/invoices/<uuid>/pay \
-X PUT \
-H 'x-api-key: <Ключ доступа>' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{
"requestId": "1df6b40c-e8a7-fcd1-a799-a0cfa3edab3a",
"paymentMethod": "BankCard",
"details": {
"key1": "value1",
"key2": "value2"
}
}
}'
uuid - идентификатор счета, полученный в успешном ответе при создании счета.
Описание параметров запроса оплаты счета
| Параметр |
Обязательный |
Валидация |
Описание |
| requestId |
Да |
Уникальный. Непустая строка |
Идентификатор запроса |
| paymentMethod |
Да |
Непустая строка |
Метод оплаты, выбранный плательщиком в процессе оплаты (см. Перечень возможных значений методов оплаты) |
| details |
Да |
Объект |
Детали платежа |
Описание параметров details для способа оплаты BankCard
| Параметр |
Обязательный |
Валидация |
Описание |
| pan |
Да |
Непустая строка |
Номер банковской карты |
| cardHolder |
Нет |
Непустая строка |
Имя и фамилия владельца банковской карты латинскими буквами |
| cvc |
Да |
Непустая строка |
CVC банковской карты |
| expYear |
Да |
Непустая строка |
Год окончания срока действия банковской карты |
| expMonth |
Да |
Непустая строка |
Месяц окончания срока действия банковской карты |
Пример успешного ответа на запрос оплаты счета, если не требуется перенаправление пользователя
{
"success": true,
"data": {
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a",
"requestId": "d1f6b55c-e8a1-add7-a719-a1cfd3eda3ad"
}
}
Описание параметров успешного ответа на запрос оплаты счета
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда true |
Признак успешности выполнения команды |
| data |
Да |
Объект |
Данные счета |
Описание параметров объекта data
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор счета, для которого выполняется оплата счета |
| requestId |
Да |
Уникальный. Непустая строка |
Идентификатор запроса |
Пример успешного ответа на запрос оплаты счета, если требуется перенаправление пользователя
{
"success": true,
"data": {
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a",
"requestId": "d1f6b55c-e8a1-add7-a719-a1cfd3eda3ad",
"redirect": {
"url": "http://example.com",
"method": "POST",
"params": [
{
"name": "name1",
"value": "value1"
}
]
}
}
}
Перенаправление может потребоваться в случае необходимости ввода кода 3DS.
Описание параметров успешного ответа на запрос оплаты счета
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда true |
Признак успешности выполнения команды |
| data |
Да |
Объект |
Данные счета |
Описание параметров объекта data
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор счета, для которого выполняется оплата по счету |
| requestId |
Да |
Уникальный. Непустая строка |
Идентификатор запроса |
| redirect |
Да |
Объект |
Данные для перенаправления пользователя |
Описание параметров объекта redirect
| Параметр |
Обязательный |
Валидация |
Описание |
| url |
Да |
URL |
Адрес для перенаправления плательщика |
| method |
Да |
Непустая строка |
http метод |
| params |
Нет |
Объект |
Дополнительные данные |
Пример ответа с ошибкой на запрос оплаты счета
{
"success": false,
"error": {
"code": "5",
"message": "error",
"correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
}
}
Описание параметров ответа с ошибкой на запрос оплаты счета
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда false |
Признак успешности выполнения команды |
| error |
Да |
Объект |
Данные об ошибке |
Описание параметров объекта error
| Параметр |
Обязательный |
Валидация |
Описание |
| code |
Да |
Непустая строка |
Код ошибки (см. Описание кодов ошибок) |
| message |
Да |
Непустая строка |
Описание ошибки |
| correlationId |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Получение баланса магазина
Пример запроса на получение данных
Метод позволяет по ключу доступа получить баланс данного магазина. Если магазин работает с несколькими валютами, то
баланс будет получен по каждой из валют.
curl https://business.tiyn.io/merchant-api/api/v2/balance \
-X GET \
-H 'x-api-key: <Ключ доступа>' \
-H 'Content-Type: application/json; charset=utf-8' \
Пример успешного ответа на запрос на получение данных
{
"success": true,
"data": [
{
"currency": "KZT",
"balance": 890.12
}
]
}
Описание параметров успешного ответа на запрос на получение данных
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда true |
Признак успешности выполнения команды |
| data |
Да |
Коллекция |
Балансы магазина в разных валютах |
Описание параметров элемента коллекции data
| Параметр |
Обязательный |
Валидация |
Описание |
| currency |
Да |
Непустая строка |
Валюта счёта |
| balance |
Да |
Десятичное число с двумя знаками после запятой |
Баланс счёта |
Пример ответа с ошибкой на запрос на получение данных
{
"success": false,
"error": {
"code": "8",
"message": "error",
"correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
}
}
Описание параметров ответа с ошибкой на запрос на получение данных
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда false |
Признак успешности выполнения команды |
| error |
Да |
Объект |
Данные об ошибке |
Описание параметров объекта error
| Параметр |
Обязательный |
Валидация |
Описание |
| code |
Да |
Непустая строка |
Код ошибки (см. Описание кодов ошибок) |
| message |
Да |
Непустая строка |
Описание ошибки |
| correlationId |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Создание выплаты
Метод позволяет осуществлять вывод средств на банковскую карту. Для активации возможности создавать выплаты необходимо
связаться с менеджером Tiyn Business.
Пример запроса на создание выплаты
curl https://business.tiyn.io/merchant-api/api/v2/payouts \
-X POST \
-H 'x-api-key: <Ключ доступа>' \
-H 'x-sign: <ЭЦП>' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{
"externalId": "3c5301df-d806-4fb0-9f96-f44d5d2d3827",
"amount": 10005.05,
"currency": "KZT",
"description": "Вывод себе на карту",
"destination": {
"pan": "41233543544386",
"cardholder": "Ivan Pupkin"
},
"payoutMethod": "BankCard"
}'
Описание параметров запроса на создание выплаты
| Параметр |
Обязательный |
Валидация |
Описание |
| externalId |
Да |
Уникальный, непустая строка, максимум 100 символов |
Уникальный внутренний идентификатор выплаты в системе магазина |
| amount |
Да |
Десятичное число с двумя знаками после запятой. Минимум - 0.01, максимум - 999999999999999.99 |
Сумма выплаты, разделитель дробной части - "." (точка) |
| currency |
Нет |
KZT |
Валюта, в которой будет совершен вывод средств |
| description |
Да |
Непустая строка, максимум 1000 символов |
Описание выплаты |
| destination |
Да |
Объект |
Реквизиты выплаты |
| payoutMethod |
Да |
Непустая строка |
Способ вывода |
Описание параметров объекта destination для способа вывода на банковскую карту
{
...
"destination": {
"pan": "41233543544386",
"cardholder": "Ivan Pupkin"
},
"payoutMethod": "BankCard"
}
| Параметр |
Обязательный |
Валидация |
Описание |
| pan |
Да |
Непустая строка. 16-19 цифр |
Номер банковской карты |
| cardholder |
Нет |
Непустая строка |
Имя и фамилия владельца банковской карты латинскими буквами |
Пример успешного ответа на запрос на создание выплаты
{
"success": true,
"data": {
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a",
"externalId": "3c5301df-d806-4fb0-9f96-f44d5d2d3827"
}
}
Описание параметров успешного ответа при создании выплаты
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда true |
Признак успешности выполнения команды |
| data |
Да |
Объект |
Данные выплаты |
Описание параметров объекта data
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор выплаты в Tiyn Business |
| externalId |
Да |
Уникальный, непустая строка |
Уникальный внутренний идентификатор выплаты в системе магазина |
Пример ответа с ошибкой на запрос на создание выплаты
{
"success": false,
"error": {
"code": "9",
"message": "Ошибка создания выплаты",
"correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
}
}
Описание параметров ответа с ошибкой создания выплаты
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда false |
Признак успешности выполнения команды |
| error |
Да |
Объект |
Данные об ошибке |
Описание параметров объекта error
| Параметр |
Обязательный |
Валидация |
Описание |
| code |
Да |
Непустая строка |
Код ошибки (см. Описание кодов ошибок) |
| message |
Да |
Непустая строка |
Описание ошибки |
| correlationId |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Получение данных выплаты
Метод позволяет запросить данные выплаты: статус выплаты, сумму, метод вывода и др.
Пример запроса на получение данных
curl https://business.tiyn.io/merchant-api/api/v2/payouts/<uuid> \
-X GET \
-H 'x-api-key: <Ключ доступа>' \
-H 'Content-Type: application/json; charset=utf-8' \
uuid - идентификатор выплаты, полученный в успешном ответе при создании выплаты.
Описание параметров запроса на получение данных
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор выплаты |
Пример успешного ответа на запрос на получение данных
{
"success": true,
"data": {
"externalId": "8041905d-c3cb-4c83-a232-1a98891023b8",
"uuid": "8904c0ef-7667-4ec2-b63a-57c50faf0248",
"commission": {
"amount": "12.33",
"currency": "KZT"
},
"payoutMethod": "BankCard",
"amount": 813.03,
"currency": "KZT",
"description": "some description",
"destination": {
"masked_pan": "411111******1111"
},
"status": {
"name": "PayoutSucceeded",
"time": "2022-04-13 08:42:22.501903+00:00",
"message": "Получено событие о удачном проведении транзакции на выплату"
}
}
}
Описание параметров успешного ответа на запрос на получение данных
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда true |
Признак успешности выполнения команды |
| data |
Да |
Объект |
Данные выплаты |
Описание параметров объекта data
| Параметр |
Обязательный |
Валидация |
Описание |
| externalId |
Да |
Уникальный, непустая строка |
Уникальный внутренний идентификатор выплаты в системе магазина |
| uuid |
Да |
Уникальный, непустая строка |
Идентификатор выплаты |
| commission |
Да |
Объект |
Данные о комиссии выплаты |
| payoutMethod |
Да |
Непустая строка |
Метод вывода |
| amount |
Да |
Десятичное число с двумя знаками после запятой |
Сумма выплаты, разделитель дробной части - "." (точка) |
| currency |
Да |
Непустая строка |
Валюта вывода |
| description |
Да |
Непустая строка |
Описание выплаты |
| destination |
Да |
Объект |
Реквизиты выплаты |
| status |
Да |
Объект |
Данные о статусе выплаты (см. Перечень возможных значений статусов выплаты) |
Описание параметров объекта commission
| Параметр |
Обязательный |
Валидация |
Описание |
| amount |
Да |
Десятичное число с двумя знаками после запятой |
Сумма комиссии, разделитель дробной части - "." (точка) |
| currency |
Да |
Непустая строка |
Валюта комиссии |
Описание параметров объекта status
| Параметр |
Обязательный |
Валидация |
Описание |
| name |
Да |
Непустая строка |
Название статуса |
| time |
Да |
Дата в формате yyyy-MM-dd HH:mm:ss.fffZZZ |
Дата перехода в статус |
| message |
Да |
Непустая строка |
Описание причины перехода в статус |
Описание параметров объекта destination
| Параметр |
Обязательный |
Валидация |
Описание |
| masked_pan |
Да, если способ вывода BankCard |
Непустая строка |
Маскированный номер банковской карты |
Пример ответа с ошибкой на запрос на получение данных
{
"success": false,
"error": {
"code": "10",
"message": "error",
"correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
}
}
Описание параметров ответа с ошибкой на запрос на получение данных
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда false |
Признак успешности выполнения команды |
| error |
Да |
Объект |
Данные об ошибке |
Описание параметров объекта error
| Параметр |
Обязательный |
Валидация |
Описание |
| code |
Да |
Непустая строка |
Код ошибки (см. Описание кодов ошибок) |
| message |
Да |
Непустая строка |
Описание ошибки |
| correlationId |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Подтверждение двухэтапной выплаты
Метод позволяет подтверждать двухэтапную выплату. Подтверждение выполняется для выплаты в статусе
PayoutWaitingConfirmation. Для активации возможности создавать двухэтапные выплаты необходимо связаться с менеджером
Tiyn Business.
Пример запроса на подтверждение выплаты
curl https://business.tiyn.io/merchant-api/api/v2/payouts/<uuid>/confirm \
-X POST \
-H 'x-api-key: <Ключ доступа>' \
-H 'x-sign: <ЭЦП>' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{}'
uuid - идентификатор выплаты, полученный в успешном ответе при создании выплаты.
Описание параметров запроса на подтверждение выплаты
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор выплаты |
Пример успешного ответа на запрос на подтверждения выплаты
{
"success": true,
"data": {
"uuid": "8904c0ef-7667-4ec2-b63a-57c50faf0248"
}
Описание параметров успешного ответа при создании выплаты
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда true |
Признак успешности выполнения команды |
| data |
Да |
Объект |
Данные выплаты |
Описание параметров объекта data
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор подтверждаемой выплаты |
Пример ответа с ошибкой на запрос на подтверждения выплаты
{
"success": false,
"error": {
"code": "13",
"message": "Ошибка подтверждения выплаты",
"correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
}
}
Описание параметров ответа с ошибкой подтверждения выплаты
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда false |
Признак успешности выполнения команды |
| error |
Да |
Объект |
Данные об ошибке |
Описание параметров объекта error
| Параметр |
Обязательный |
Валидация |
Описание |
| code |
Да |
Непустая строка |
Код ошибки (см. Описание кодов ошибок) |
| message |
Да |
Непустая строка |
Описание ошибки |
| correlationId |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Отклонение двухэтапной выплаты
Метод позволяет отклонять двухэтапную выплату. Отклонение выполняется для выплаты в статусе PayoutWaitingConfirmation.
Для активации возможности создавать двухэтапные выплаты необходимо связаться с менеджером Tiyn Business.
Пример запроса на отклонение выплаты
curl https://business.tiyn.io/merchant-api/api/v2/payouts/<uuid>/decline \
-X POST \
-H 'x-api-key: <Ключ доступа>' \
-H 'x-sign: <ЭЦП>' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{}'
uuid - идентификатор выплаты, полученный в успешном ответе при создании выплаты.
Описание параметров запроса на отклонение выплаты
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор выплаты |
Пример успешного ответа на запрос на отклонение выплаты
{
"success": true,
"data": {
"uuid": "8904c0ef-7667-4ec2-b63a-57c50faf0248"
}
Описание параметров успешного ответа при отклонении выплаты
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда true |
Признак успешности выполнения команды |
| data |
Да |
Объект |
Данные выплаты |
Описание параметров объекта data
| Параметр |
Обязательный |
Валидация |
Описание |
| uuid |
Да |
Непустая строка |
Идентификатор отклоняемой выплаты |
Пример ответа с ошибкой на запрос на отклонение выплаты
{
"success": false,
"error": {
"code": "14",
"message": "Ошибка отклонения выплаты",
"correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
}
}
Описание параметров ответа с ошибкой отклонения выплаты
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда false |
Признак успешности выполнения команды |
| error |
Да |
Объект |
Данные об ошибке |
Описание параметров объекта error
| Параметр |
Обязательный |
Валидация |
Описание |
| code |
Да |
Непустая строка |
Код ошибки (см. Описание кодов ошибок) |
| message |
Да |
Непустая строка |
Описание ошибки |
| correlationId |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Перечень возможных значений статусов счета
| Название |
Описание |
| InvoiceCreated |
Счет создан |
| InvoicePaymentCreated |
Платеж по счету создан |
| InvoicePaid |
Счет оплачен |
| InvoiceFailed |
Ошибка при оплате счета |
| InvoiceRefunded |
Выполнен возврат |
| InvoiceCancelled |
Счет отменен |
| InvoicePartlyRefunded |
Выполнен частичный возврат |
Перечень возможных значений статусов платежа
| Название |
Описание |
| PaymentCreated |
Платеж создан |
| PaymentTransactionCreated |
Транзакция по платежу создана |
| PaymentPaid |
Платеж успешен |
| PaymentFailed |
Платеж отклонен |
| PaymentRefunded |
Выполнен возврат |
| PaymentCancelled |
Платеж отменен |
Перечень возможных значений статусов выплаты
| Название |
Описание |
| PayoutSucceeded |
Выплата проведена успешно |
| PayoutFailed |
Выплата отклонена |
| PayoutWaitingConfirmation |
Двухэтапная выплата в ожидании подтверждения |
| PayoutConfirmed |
Двухэтапная выплата подтверждена |
Оповещение об изменении статуса счета
Оповещение об изменении статуса (Callback) происходит путем отправки POST-запроса по адресу, указанному в настройках
магазина (раздел Технические настройки , параметр Result url)
Если на оповещение получен невалидный ответ/валидный ответ с ошибкой, или же ответ не получен, система отправляет
повторное оповещение позднее. Оповещение отправляется повторно конечное число раз.
Пример оповещения от Tiyn Business
curl https://business.tiyn.io/resultUrl \
-X POST \
-H 'x-sign: <ЭЦП>' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{
"externalId": "3c5301df-d806-4fb0-9f96-f44d5d2d3827",
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a",
"amount": 105.05,
"finalAmount": 123.12,
"currency": "KZT",
"description": "Счет на оплату заказа №12080",
"customerPhone": "+74994550185",
"customerEmail": "support@tiyn.io",
"customData": {
"key1": "value1",
"key2": 5
},
"successUrl": "http://empty.com/successUrl",
"failUrl": "http://empty.com/failUrl",
"deliveryMethod": "URL",
"expirationDate": "2021-03-14 11:08:24.909150+03:00",
"ofdData": null,
"status": {
"name": "InvoicePaid",
"time": "2019 -03-14 11:08:24.0909150+03:00",
"message": "message"
},
"payments": [
{
"paymentMethod": "BankCard",
"details": {
"account": "411111******1111",
"paymentToken": "837c06b4-b791-4f2c-89b1-a45f78cb1568"
},
"status": {
"name": "PaymentPaid"
}
}
]
}
Описание параметров оповещения от Tiyn Business
| Параметр |
Обязательный |
Валидация |
Описание |
| externalId |
Да |
Уникальный, непустая строка |
Уникальный внутренний идентификатор счета в системе магазина |
| uuid |
Да |
Уникальный, непустая строка |
Идентификатор счета |
| amount |
Да |
Десятичное число с двумя знаками после запятой |
Сумма счета, разделитель дробной части - "." (точка) |
| finalAmount |
Да |
Десятичное число с двумя знаками после запятой |
Сумма счета с учетом возвратов и частичной авторизации, разделитель дробной части - "." (точка) |
| currency |
Да |
KZT |
Валюта счета |
| description |
Да |
Непустая строка |
Описание счета |
| customerPhone |
Нет |
Номер телефона в международном формате (+7xxxxxxxxxx) |
Номер телефона плательщика. Обязателен для deliveryMethod = SMS |
| customerEmail |
Нет |
Адрес электронной почты |
Адрес электронной почты плательщика. Обязателен для deliveryMethod = EMAIL |
| customData |
Нет |
Объект json |
Дополнительные данные счета |
| successUrl |
Нет |
URL |
Адрес для перенаправления плательщика в случае успешной оплаты |
| failUrl |
Нет |
URL |
Адрес для перенаправления плательщика в случае неуспешной оплаты |
| deliveryMethod |
Да |
EMAIL, SMS или URL |
Метод доставки счета |
| subscriptionUuid |
Нет |
Непустая строка |
Идентификатор подписки, в случае если счет был создан по подписке |
| expirationDate |
Нет |
Дата в формате yyyy-MM-dd HH:mm:ss.fffZZZ, должна быть больше текущей даты |
Дата, по истечении которой счет будет отменен (переведен в статус Cancelled), если не произошла оплата. Например: 2021-03-14 11:08:24.0909150+03:00 |
| ofdData |
Нет |
Объект json |
Данные для формирования фискального чека (см. файл-приложение Отправка данных в налоговую.pdf |
| status |
Да |
Объект |
Данные о статусе счета (см. Перечень возможных значений статусов счета) |
| payments |
Да |
Коллекция |
Данные о платежах по счету |
Описание параметров объекта status
| Параметр |
Обязательный |
Валидация |
Описание |
| name |
Да |
Непустая строка |
Название статуса |
| time |
Да |
Дата в формате yyyy-MM-dd HH:mm:ss.fffZZZ |
Дата перехода в статус, например: 2021-03-14 11:08:24.0909150+03:00 |
| message |
Да |
Непустая строка |
Описание причины перехода в статус |
Описание параметров объекта payments
| Параметр |
Обязательный |
Валидация |
Описание |
| paymentMethod |
Да |
Непустая строка |
Метод оплаты, выбранный плательщиком в процессе оплаты (см. Перечень возможных значений статусов счета) |
| details |
Нет |
Объект |
Дополнительные данные платежа |
| status |
Да |
Объект |
Статус платежа (см. Перечень возможных значений статусов платежа) |
Описание параметров объекта details
| Параметр |
Обязательный |
Валидация |
Описание |
| account |
Нет |
Непустая строка |
Данные об аккаунте плательщика |
| paymentToken |
Нет |
Непустая строка |
Идентификатор платежного токена |
Описание параметров объекта status
| Параметр |
Обязательный |
Валидация |
Описание |
| name |
Да |
Непустая строка |
Статус платежа (см. Перечень возможных значений статусов платежа) |
Пример ожидаемого успешного ответа от системы мерчанта на оповещение от Tiyn Business
{
"success": true,
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a"
}
Пример ожидаемого ответа с ошибкой от системы мерчанта на оповещение от Tiyn Business
{
"success": false,
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a"
}
Описание параметров ожидаемых ответов от системы мерчанта на оповещение от Tiyn Business
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
true/ false |
Признак успешности выполнения команды |
| uuid |
Да |
Непустая строка |
Идентификатор счета |
Оповещение об изменении статуса выплаты
Оповещение об изменении статуса (Callback) происходит путем отправки POST-запроса по адресу, указанному в настройках
магазина (раздел Технические настройки , параметр Payout Result URL)
Если на оповещение получен невалидный ответ/валидный ответ с ошибкой, или же ответ не получен, система отправляет
повторное оповещение позднее. Оповещение отправляется повторно конечное число раз.
Пример оповещения от Tiyn Business
curl https://business.tiyn.io/PayoutResultURL \
-X POST \
-H 'x-sign: <ЭЦП>' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{
"externalId": "3c5301df-d806-4fb0-9f96-f44d5d2d3827",
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a",
"commission": {
"amount": "12.33",
"currency": "KZT"
},
"amount": 10005.05,
"currency": "KZT",
"description": "Вывод себе на карту",
"destination": {
"cardholder": "Ivan Pupkin",
"masked_pan": "412335******4386"
},
"status": {
"name": "PayoutSucceeded",
"time": "2020-08-01 11:08:24.0909150+03:00",
"message": "message"
},
"payoutMethod": "BankCard"
}
Описание параметров оповещения от Tiyn Business
| Параметр |
Обязательный |
Валидация |
Описание |
| externalId |
Да |
Уникальный, непустая строка |
Уникальный внутренний идентификатор выплаты в системе магазина |
| uuid |
Да |
Уникальный, непустая строка |
Идентификатор выплаты |
| commission |
Да |
Объект |
Данные о комиссии выплаты |
| amount |
Да |
Десятичное число с двумя знаками после запятой |
Сумма выплаты, разделитель дробной части - "." (точка) |
| currency |
Да |
Непустая строка |
Валюта выплаты |
| description |
Да |
Непустая строка |
Описание выплаты |
| status |
Да |
Объект |
Данные о статусе выплаты (см. "Перечень возможных значений статусов выплаты") |
| payoutMethod |
Да |
Непустая строка |
Способ вывода |
Описание параметров объекта commission
| Параметр |
Обязательный |
Валидация |
Описание |
| amount |
Да |
Десятичное число с двумя знаками после запятой |
Сумма комиссии, разделитель дробной части - "." (точка) |
| currency |
Да |
Непустая строка |
Валюта комиссии |
Описание параметров объекта status
| Параметр |
Обязательный |
Валидация |
Описание |
| name |
Да |
Непустая строка |
Название статуса |
| time |
Да |
Дата в формате yyyy-MM-dd HH:mm:ss.fffZZZ |
Дата перехода в статус, например: 2021-03-14 11:08:24.0909150+03:00 |
| message |
Да |
Непустая строка |
Описание причины перехода в статус |
Описание параметров объекта destination для способа вывода на банковскую карту
| Параметр |
Обязательный |
Валидация |
Описание |
| masked_pan |
Да |
Непустая строка. 16-19 цифр |
Маскированый номер банковской карты |
| cardholder |
Нет |
Непустая строка |
Имя и фамилия владельца банковской карты латинскими буквами |
Пример ожидаемого успешного ответа от системы мерчанта на оповещение от Tiyn Business
{
"success": true,
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a"
}
Пример ожидаемого ответа с ошибкой от системы мерчанта на оповещение от Tiyn Business
{
"success": false,
"uuid": "1fd64b0c-a8e7-4dc1-a799-f0cfa3ebad3a"
}
Описание параметров ожидаемых ответов от системы мерчанта на оповещение от Tiyn Business
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
true/ false |
Признак успешности выполнения команды |
| uuid |
Да |
Непустая строка |
Идентификатор выплаты |
Описание кодов ошибок
| Код ошибки |
Описание ошибки |
| 1 |
Ошибка создания счета |
| 2 |
Ошибка авторизации платежа |
| 3 |
Ошибка отмены платежа |
| 5 |
Ошибка при получении данных счета |
| 6 |
Ошибка выполнения возврата |
| 8 |
Ошибка при получении данных магазина |
| 9 |
Ошибка создания выплаты |
| 10 |
Ошибка при получении данных выплаты |
| 13 |
Ошибка при подтверждении двухэтапной выплаты |
| 14 |
Ошибка при отклонении двухэтапной выплаты |
| -1 |
Системная ошибка |
Тестирование
Тестовые карты для проведения платежей и осуществления выплат (для тестовых магазинов Tiyn Business)
| Номер карты (PAN) |
Авторизационные данные |
Тип операции |
Результат |
| 4111111111111111 |
expiration date = 12/30; сvc/cvv2 = 123; 3ds = 123456 |
Платеж |
Успешно |
| Любой |
expiration date больше текущей даты; любые сvc/cvv2/3ds |
Платеж |
Отклонен |
| 4111111111111111 |
|
Выплата |
Успешно |
| 5555555555555599 |
|
Выплата |
Ожидание |
| 4222222222222222 |
|
Выплата |
Отклонена (Недостаточно средств) |