NAV
Merchant API

Подготовка к интеграции

Регистрация и создание магазина через Tiyn Business

Для подготовки к интеграции необходимо:

  1. Зарегистрировать личный кабинет Tiyn Business по кнопке Подключиться на странице tiyn.io;
  2. В личном кабинете создать магазин в разделе Магазины, перейти в настройки магазина и заполнить раздел Общие настройки;
  3. Перейти в раздел настроек магазина Технические настройки и сгенерировать новый секретный ключ (secretPhrase) для формирования подписи;
  4. Если требуется передача уведомлений об изменении статусов счета в одну из ваших систем (Callback), заполнить поле ResultURL адресом для получения уведомлений;
  5. Активировать созданный магазин, связавшись с персональным менеджером.

HTTP-заголовки

Взаимодействие с сервисом происходит посредством передачи HTTP-запросов.

Запросы могут включать следующие заголовки:

Алгоритм формирования ЭЦП

ЭЦП формируется следующим образом:

  1. От сформированного тела запроса (body) вычисляется хеш по алгоритму HMAC-SHA512. В качестве ключа используется secretPhrase), кодировка UTF-8
  2. Полученное значение переводится в base64

Примеры реализации алгоритма формирования x-sign

Пример на языке C#

Пример на языке PHP

Схема проведения запроса

  1. Магазин отправляет в Tiyn Business запрос на создание счета;
  2. Tiyn Business обрабатывает запрос и, если счет создан корректно, возвращает данные, содержащие ссылку для перехода на оплату;
  3. Плательщик переходит по ссылке выбирает способ оплаты и вводит платежные данные;
  4. Tiyn Business отправляет запрос на списание денежных средств эквайеру;
  5. Tiyn Business получает ответ об успешной/неуспешной оплате счета от эквайера; происходит переадресация плательщика на страницу магазина
    1. В случае успешной оплаты счета плательщик перенаправляется на страницу, указанную при создании счета в параметре successUrl;
    2. В случае неуспешной оплаты происходит перенаправление на страницу, указанную при создании счета в параметре failUrl;
  6. 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 Выплата Отклонена (Недостаточно средств)