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,
    "createToken": false
}'
Описание параметров запроса на создание счета
Параметр Обязательный Валидация Описание
externalId Да Уникальный, непустая строка, максимум 100 символов Уникальный внутренний идентификатор счета в системе магазина
amount Да Десятичное число с двумя знаками после запятой. Минимум - 0.01, максимум - 999999999999999.99 Сумма счета, разделитель дробной части - "." (точка)
currency Нет KZT Валюта, в которой будет оплачен счет
description Да Непустая строка, максимум 500 символов Описание счета
customerPhone Нет Номер телефона в международном формате (+7xxxxxxxxxx) Номер телефона плательщика. Обязательный для способа доставки SMS
customerEmail Нет Адрес электронной почты Адрес электронной почты плательщика. Обязательный для способа доставки EMAIL
customerIp Нет IPv4 (xxx.xxx.xxx.xxx) IP-адрес плательщика
customData Нет Различная служебная информация, поле будет возвращено в уведомлении об оплате счета. Поле любого типа, поддерживаемого форматом json
successUrl Нет URL, максимум 500 символов URL-адрес страницы магазина, на которую будет переправлен плательщик в случае успешно оплаченного счета
failUrl Нет URL, максимум 500 символов URL-адрес страницы магазина, на которую будет переправлен плательщик в случае неуспешно оплаченного счета
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 Нет Данные для фискализации. В зависимости от настроек магазина отправляются тому или иному провайдеру фискальных данных.
createToken Нет boolean, по умолчанию false Признак создания платежного токена

Пример успешного ответа на запрос на создание счета

{
  "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",
      "paymentDetails": {
        "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 Да Непустая строка Метод оплаты, выбранный плательщиком в процессе оплаты
paymentDetails Нет Объект Дополнительные данные платежа
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 Да Непустая строка Месяц окончания срока действия банковской карты
Описание параметров details для способа оплаты BankCard по токену
Параметр Обязательный Валидация Описание
paymentToken Да Непустая строка Идентификатор платежного токена

Пример успешного ответа на запрос оплаты счета, если не требуется перенаправление пользователя

{
  "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 Да Непустая строка Идентификатор корреляции запроса

Создание подписки

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

Алгоритм работы с подпиской

  1. Магазин отправляет в Tiyn Business запрос на создание счета, где указывает параметр createToken=true для создания платежного токена. Предварительно данную возможность необходимо согласовать с менеджером;
  2. Логика оплаты счета описана в "Схеме проведения запроса";
  3. В случае если счет был успешно оплачен, то Tiyn Business отправляет магазину уведомление об успешной оплате, которое содержит идентификатор платежного токена; Магазин возвращает ответ-подтверждение о проведенной операции.
  4. Магазин отправляет в Tiyn Business запрос на создание подписки, где указывает идентификатор платежного токена первого счета и данные подписки;
  5. Tiyn Business обрабатывает запрос и если подписка создана корректно, возвращает ответ, содержащий идентификатор подписки;
  6. В случае если наступил момент следующей оплаты счета Tiyn Business создает счет и проводит его аналогично первому платежу, но списание средств осуществляется уже без подтверждения клиентом;
  7. Tiyn Business отправляет магазину уведомление об успешной/неуспешной оплате счета, которое содержит идентификатор подписки, на основе которой создан счет; Магазин возвращает ответ-подтверждение о проведенной операции.

Пример запроса на создание подписки

curl https://business.tiyn.io/merchant-api/api/v2/subscriptions \
  -X POST \
  -H 'x-api-key: <Ключ доступа>' \
  -H 'x-sign: <ЭЦП>' \
  -H 'Content-Type: application/json; charset=utf-8' \
  -d '{
    "requestId": "1df6b40c-e8a7-fcd1-a799-a0cfa3edab3a",
    "paymentToken": "d1f6b55c-e8a1-add7-a719-a1cfd3eda3ad",
    "customerEmail": "email@gmail.com",
    "name": "Подписка на сервис",
    "amount": 444.44,
    "startDate": "2026-02-11 00:00:00.000000+03:00",
    "interval": "month",
    "period": 1,
    "maxPeriods": 12,
    "currency": "KZT"
}'

paymentToken - идентификатор платежного токена, полученный в нотификации (callback), после оплаты счета.

Описание параметров запроса на создание подписки
Параметр Обязательный Валидация Описание
requestId Да Уникальный, непустая строка, максимум 100 символов Идентификатор запроса
paymentToken Да Непустая строка, максимум 100 символов Идентификатор платежного токена
customerEmail Да Адрес электронной почты, максимум 100 символов Email плательщика
name Да Непустая строка, максимум 100 символов Название подписки
amount Да Десятичное число с двумя знаками после запятой Сумма периодического списания
startDate Да Дата в формате yyyy-MM-dd HH:mm:ss.ffffffzzz Дата и время первого периодического списания
interval Да day, week, month Интервал
period Да Целое число Период. В комбинации с интервалом, 1 month - раз в месяц, 2 week - 1 раз в 2 недели.
maxPeriods Да Целое число Максимальное количество платежей в подписке
currency Нет KZT Валюта, в которой будет оформлена подписка

Пример успешного ответа на запрос на создание подписки

{
    "success": true,
    "data": {
        "uuid": "5c91a9f9-984b-4ed5-818b-8136fdd551e2",
        "requestId": "1df6b40c-e8a7-fcd1-a799-a0cfa3edab3a"
    }
}
Описание параметров успешного ответа на запрос на создания подписки
Параметр Обязательный Валидация Описание
success Да Всегда true Признак успешности выполнения команды
data Да Объект Данные подписки
Описание параметров объекта data
Параметр Обязательный Валидация Описание
uuid Да Непустая строка Идентификатор подписки
requestId Да Уникальный, непустая строка Идентификатор запроса

Пример ответа с ошибкой на запрос на создание подписки

{
    "success": false,
    "error": {
        "code": "7",
        "message": "Ошибка создания подписки"
    }
}
Описание параметров ответа с ошибкой на запрос на создание подписки
Параметр Обязательный Валидация Описание
success Да Всегда false Признак успешности выполнения команды
error Да Объект Данные об ошибке
Описание параметров объекта error
Параметр Обязательный Валидация Описание
code Да Непустая строка Код ошибки (см. Описание кодов ошибок)
message Да Непустая строка Описание ошибки

Отмена подписки

Метод позволяет отменить активную подписку.

Пример запроса на отмену подписки

curl https://business.tiyn.io/merchant-api/api/v2/subscriptions/<uuid> \
  -X DELETE \
  -H 'x-api-key: <Ключ доступа>' \
  -H 'x-sign: <ЭЦП>' \
  -H 'Content-Type: application/json; charset=utf-8' \

uuid - идентификатор подписки, полученный в ответе на ее создание.

Пример успешного ответа на запрос на отмены подписки

{
    "success": true,
    "data": null
}
Описание параметров успешного ответа на запрос на отмены подписки
Параметр Обязательный Валидация Описание
success Да Всегда true Признак успешности выполнения команды
data Да Объект Данные запроса

Получение баланса магазина

Пример запроса на получение данных

Метод позволяет по ключу доступа получить баланс данного магазина. Если магазин работает с несколькими валютами, то баланс будет получен по каждой из валют.

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 Да Непустая строка, максимум 500 символов Описание выплаты
destination Да Объект Реквизиты выплаты
payoutMethod Да Непустая строка Способ вывода
Описание параметров объекта destination для способа вывода на банковскую карту по реквизитам
{
    ...
    "destination": {
        "pan": "41233543544386", 
        "cardholder": "Ivan Pupkin"
    },
    "payoutMethod": "BankCard"
}
Параметр Обязательный Валидация Описание
pan Да Непустая строка. 16-19 цифр Номер банковской карты
cardholder Нет Непустая строка Имя и фамилия владельца банковской карты латинскими буквами
Описание параметров объекта destination для способа вывода на банковскую карту по платежному токену
{
    ...
    "destination": {
        "payoutToken": "837c06b4-b791-4f2c-89b1-a45f78cb1568"
    },
    "payoutMethod": "BankCard"
}
Параметр Обязательный Валидация Описание
payoutToken Да Непустая строка Платежный токен банковской карты

Пример успешного ответа на запрос на создание выплаты

{
  "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 Да Непустая строка Идентификатор корреляции запроса

Сохранение банковской карты

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

Пример запроса на сохранение банковской карты

curl https://business.tiyn.io/merchant-api/api/v2/payout-cards \
  -X POST \
  -H 'x-api-key: <Ключ доступа>' \
  -H 'Content-Type: application/json; charset=utf-8' \
  -d '{
       "pan": "41233543544386"
}'
Описание параметров запроса на сохранение банковской карты
Параметр Обязательный Валидация Описание
pan Да Непустая строка. 16-19 цифр Номер банковской карты

Пример успешного ответа на запрос сохранения банковской карты

{
  "success": true,
  "data": {
    "payoutToken": "c6eae048-072c-44cb-aaa8-3822989cfb9c"
  }
Описание параметров успешного ответа при сохранении банковской карты
Параметр Обязательный Валидация Описание
success Да Всегда true Признак успешности выполнения команды
data Да Объект Данные выплаты
Описание параметров объекта data
Параметр Обязательный Валидация Описание
payoutToken Да Непустая строка Платежный токен банковской карты

Пример ответа с ошибкой на запрос сохранения банковской карты

{
  "success": false,
  "error": {
    "code": "14",
    "message": "Ошибка сохранения банковкой карты",
    "correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
  }
}
Описание параметров ответа с ошибкой отклонения выплаты
Параметр Обязательный Валидация Описание
success Да Всегда false Признак успешности выполнения команды
error Да Объект Данные об ошибке
Описание параметров объекта error
Параметр Обязательный Валидация Описание
code Да Непустая строка Код ошибки (см. Описание кодов ошибок)
message Да Непустая строка Описание ошибки
correlationId Да Непустая строка Идентификатор корреляции запроса

Платежная форма Tiyn.js

Tiyn.js — это безопасная и кастомизируемая платёжная форма для приёма платежей на сайте, которая не требует от мерчанта сертификата PCI DSS. Карточные данные вводятся внутри защищённого iframe, загружаемого с PCI DSS совместимого CDN Tiyn.

Сценарий оплаты с помощью платежной формы

  1. Магазин отправляет в Tiyn Business запрос на создание счета.
  2. Если счет создан корректно, то в ответ на запрос Tiyn Business вернет uuid счета.
  3. Магазин инициализирует платежную форму с передачей необходимых параметров, а именно uuid счета и параметрами кастомизации.
  4. Tiyn.js создаёт защищённый iframe, загружаемый с PCI DSS совместимого CDN Tiyn.
  5. Плательщик заполняет банковские реквизиты и нажимает кнопку оплаты внутри iframe. Данные карты передаются напрямую в Tiyn Business.
  6. Tiyn Business обрабатывает платеж.
  7. После завершения обработки Tiyn Business отправляет событие CHECKOUT_SUBMIT_RESULT в iframe с результатом оплаты счета.
  8. Магазин получает событие CHECKOUT_SUBMIT_RESULT.
    • В случае успешной оплаты счета плательщик перенаправляется на страницу, указанную при создании счета в параметре successUrl;
    • В случае неуспешной оплаты происходит перенаправление на страницу, указанную при создании счета в параметре failUrl;
  9. Tiyn Business отправляет магазину уведомление об успешной/неуспешной оплате счета.
  10. Магазин возвращает ответ-подтверждение о проведенной операции.

Интеграция

Подключение Tiyn.js возможно одним из перечисленных ниже способов.

Вариант 1. Подключение через script tag (Tilda, WordPress, любой HTML)

Для подключения необходимо добавить на свою страницу следующий код:


<script src="https://business.tiyn.io/tiynjs/tiyn.js"></script>
<div id="payment"></div>
<script>
  var checkout = Tiyn.createCheckout({
    invoiceToken: 'YOUR_TOKEN', // uuid счета
    locale: 'ru'
  });
  checkout.mount('#payment');

  checkout.on('CHECKOUT_SUBMIT_RESULT', function(event) {
    if (event.success) {
      alert('Оплата прошла!');
    }
  });
</script>

Вариант 2. Подключение через npm (Vanilla JS)

Установка пакета:


npm install @tiynjs/sdk

Использование в коде:


   import { loadSDK } from '@tiynjs/sdk';

   const sdk = loadSDK(); // по умолчанию CDN: https://business.tiyn.io/tiynjs
   const checkout = sdk.createCheckout({
     invoiceToken: 'YOUR_TOKEN', // uuid счета
     locale: 'ru',
   });

   checkout.mount('#checkout-container');

   checkout.on('CHECKOUT_SUBMIT_RESULT', (event) => {
     console.log('Результат:', event);
   });

Вариант 3: Подключение через npm (React)

Установка пакетов:


npm install @tiynjs/sdk @tiynjs/react

Использование компонента:


import { loadSDK } from '@tiynjs/sdk';
import { Checkout } from '@tiynjs/react';

const sdk = loadSDK();

function PaymentPage() {
  return (
     console.log(result)}
    />
  );
}

Кастомизация формы

Есть возможность управлять внешним видом формы, передавая объект theme при создании экземпляра createCheckout. Это позволяет полностью адаптировать форму под дизайн сайта магазина.

tiynjs

sdk.createCheckout({
  theme: {
    colors: {
      primary: '#4778F5',
      text: '#1a1a2e',
      border: '#e0e0e0',
      buttonText: '#ffffff',
      icon: '#666666',
      inputBackground: '#ffffff',
      containerBackground: '#ffffff',
    },
    typography: { fontFamily: 'Inter, sans-serif', fontWeight: '400' },
    borders: { radius: '12px' },
    spacing: { fieldGap: '16px', containerPadding: '24px' },
  }
});
Описание параметров объекта theme
Параметр Валидация Описание
colors Объект Цветовая схема
typography Объект Стиль текста
borders Объект Границы
spacing Объект Отступы
Описание параметров объекта colors
Параметр Валидация Описание
primary Строка Акцентный цвет — кнопка «Оплатить», ссылки, фокус полей
text Строка Основной цвет текста — заголовки, лейблы, значения полей
border Строка Цвет рамок полей ввода и разделителей
buttonText Строка Цвет текста внутри основной кнопки
icon Строка Цвет вспомогательных иконок и secondary-текста
inputBackground Строка Фон полей ввода
containerBackground Строка Фон всего виджета оплаты
Описание параметров объекта typography
Параметр Валидация Описание
fontFamily Строка Шрифтовой стек — основной шрифт + fallback-цепочка
fontWeight Строка Базовая насыщенность шрифта (400 = regular)
Описание параметров объекта borders
Параметр Валидация Описание
radius Строка Скругление углов полей, кнопок, карточек
Описание параметров объекта spacing
Параметр Валидация Описание
fieldGap Строка Отступ между полями формы
containerPadding Строка Внутренний отступ контейнера виджета

API Tiyn.js

Методы SDK

loadSDK(options?)

Загружает SDK с CDN.

Параметр Тип По умолчанию Описание
cdnUrl string https://business.tiyn.io/tiynjs URL CDN с tiyn.js и checkout.html
apiBaseUrl string https://business.tiyn.io/payment-flow-bff URL API бэкенда (менять не нужно)

Возвращает: объект SDK с методом createCheckout.

createCheckout(options)

Создаёт экземпляр платёжной формы.

Параметр Тип Описание
invoiceToken string uuid счета, полученный при создании счета
locale string Локаль ('ru', 'en')
theme Partial<CheckoutTheme> Объект с параметрами темы

Возвращает: экземпляр Checkout с методами для управления формой.

Методы экземпляра checkout

После создания экземпляра через createCheckout доступны следующие методы:

Метод Описание
mount(selector) Монтирует платёжную форму в DOM-элемент.
unmount() Удаляет форму из DOM.
on(event, handler) Подписывается на событие. Возвращает функцию для отписки.
updateTheme(theme) Динамически обновляет тему оформления.
setLocale(locale) Динамически меняет язык формы ('ru', 'en').
setInvoiceToken(token) Меняет идентификатор инвойса для новой попытки платежа.

События

События, на которые можно подписаться, используя метод on():

Событие Данные в event Описание
CHECKOUT_READY {} Форма полностью загружена и готова к работе.
CHECKOUT_RESIZE { height } Высота iframe изменилась (например, при появлении ошибки). Позволяет динамически подстраивать контейнер на сайте.
CHECKOUT_SUBMIT_RESULT { success, data?, error? } Возвращает результат попытки оплаты.
CHECKOUT_STEP_CHANGE { step } Изменился этап платежа (например, 'methodSelection', 'cardForm', 'processing', 'paid', ...).

Перечень возможных значений статусов счета

Название Описание
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",
            "paymentDetails": {
                "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 Да Непустая строка Метод оплаты, выбранный плательщиком в процессе оплаты (см. Перечень возможных значений статусов счета)
paymentDetails Нет Объект Дополнительные данные платежа
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 Ошибка выполнения возврата
7 Ошибка создания подписки
8 Ошибка при получении данных магазина
9 Ошибка создания выплаты
10 Ошибка при получении данных выплаты
13 Ошибка при подтверждении двухэтапной выплаты
14 Ошибка при отклонении двухэтапной выплаты
-1 Системная ошибка

Тестирование

Тестовые карты для проведения платежей и осуществления выплат (для тестовых магазинов Tiyn Business)

Платежи

Авторизационные данные:

Номер карты (PAN) 3ds Поддержка токена Результат
5555555555554477 Да, v1 Нет Успешно
4111111111111111 Да, v2 Нет Успешно
4311111111111119 Нет Нет Успешно
4111111111111160 Нет Нет Отклонен
4111111111111152 Да Да Успешно
5555555555554501 Нет Да Успешно
4111111111111137 Да Да Отклонен
5105105105105134 Нет Да Отклонен

Выплаты

Номер карты (PAN) Результат
4111111111111111 Успешно
5555555555555599 Ожидание
4222222222222222 Отклонена (Недостаточно средств)