Merchant API
Подготовка к интеграции
Регистрация и создание магазина через Tiyn Business
Для подготовки к интеграции необходимо:
- Зарегистрировать личный кабинет Tiyn Business по кнопке Подключиться на
странице tiyn.io;
- В личном кабинете создать магазин в разделе Магазины, перейти в настройки магазина и заполнить раздел Общие
настройки;
- Перейти в раздел настроек магазина Технические настройки и сгенерировать новый секретный ключ (
secretPhrase)
для формирования подписи;
- Если требуется передача уведомлений об изменении статусов счета в одну из ваших систем (Callback), заполнить поле
ResultURL адресом для получения уведомлений;
- Активировать созданный магазин, связавшись с персональным менеджером.
HTTP-заголовки
Взаимодействие с сервисом происходит посредством передачи HTTP-запросов.
Запросы могут включать следующие заголовки:
Content-Type: application/json; charset=utf-8
x-api-key: <API Key>
x-sign: <электронно-цифровая подпись> (кроме получения данных счета и данных магазина)
Алгоритм формирования ЭЦП
ЭЦП формируется следующим образом:
- От сформированного тела запроса (body) вычисляется хеш по алгоритму HMAC-SHA512. В качестве ключа используется
secretPhrase), кодировка UTF-8
- Полученное значение переводится в base64
Примеры реализации алгоритма формирования x-sign
Пример на языке C#
Пример на языке PHP
Схема проведения запроса
- Магазин отправляет в Tiyn Business запрос на создание счета;
- Tiyn Business обрабатывает запрос и, если счет создан корректно, возвращает данные, содержащие ссылку для
перехода на оплату;
- Плательщик переходит по ссылке выбирает способ оплаты и вводит платежные данные;
- Tiyn Business отправляет запрос на списание денежных средств эквайеру;
- Tiyn Business получает ответ об успешной/неуспешной оплате счета от эквайера;
происходит переадресация плательщика на страницу магазина
- В случае успешной оплаты счета плательщик перенаправляется на страницу, указанную при создании счета в параметре
successUrl;
- В случае неуспешной оплаты происходит перенаправление на страницу, указанную при создании счета в параметре
failUrl;
- Tiyn Business отправляет магазину уведомление об успешной/неуспешной оплате счета;
Магазин возвращает ответ-подтверждение о проведенной операции.
Получение доступных методов оплаты
Метод позволяет получить актуальный список методов оплаты, доступных для магазина. Полученные значения используются
при создании счета в параметре preferredPaymentMethods. Список зависит от настроек магазина, поэтому для его
получения и создания счета необходимо использовать один и тот же x-api-key.
Порядок использования
- Получить список доступных методов оплаты с помощью
GET /merchant-api/api/v2/payment-methods;
- Выбрать из ответа один или несколько методов, которые должны быть доступны плательщику;
- Передать выбранные значения без изменений в параметре
preferredPaymentMethods при создании счета.
Если параметр preferredPaymentMethods не передан, плательщику будут доступны все включенные для магазина методы
оплаты.
Пример запроса на получение методов оплаты
Для запроса требуется только ключ доступа магазина. Заголовок x-sign передавать не требуется.
curl https://business.tiyn.io/merchant-api/api/v2/payment-methods \
-X GET \
-H 'x-api-key: <Ключ доступа>'
Пример успешного ответа на запрос на получение методов оплаты
{
"success": true,
"data": {
"paymentMethods": [
"BankCard",
"google_pay",
"sbp"
]
}
}
Значения BankCard, google_pay и sbp приведены в качестве примера. Фактический состав массива определяется настройками
магазина. Если для магазина нет доступных методов оплаты, API вернет пустой массив.
Описание параметров успешного ответа на запрос на получение методов оплаты
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда true |
Признак успешности выполнения команды |
| data |
Да |
Объект |
Доступные методы оплаты магазина |
Описание параметров объекта data
| Параметр |
Обязательный |
Валидация |
Описание |
| paymentMethods |
Да |
Массив строк |
Методы оплаты, доступные для передачи в preferredPaymentMethods |
Пример ответа при ошибке авторизации
{
"success": false,
"error": {
"code": "-1",
"message": "Unauthorized",
"correlationId": "01ee1da0-a25b-476d-a290-5eda640e14b2"
}
}
Описание параметров ответа при ошибке авторизации
| Параметр |
Обязательный |
Валидация |
Описание |
| success |
Да |
Всегда false |
Признак успешности выполнения команды |
| error |
Да |
Объект |
Данные об ошибке |
Описание параметров объекта error
| Параметр |
Обязательный |
Валидация |
Описание |
| code |
Да |
Непустая строка |
Код ошибки |
| message |
Да |
Непустая строка |
Описание ошибки |
| correlationId |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Создание счета
Метод позволяет создать счет на оплату и отправить его плательщику.
Чтобы ограничить выбор плательщика, передайте в preferredPaymentMethods один или несколько значений из актуального
ответа GET /merchant-api/api/v2/payment-methods. На странице оплаты будут доступны только указанные методы.
Пример запроса на создание счета
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,
"preferredPaymentMethods": [
"BankCard",
"google_pay",
"sbp"
]
}'
Описание параметров запроса на создание счета
| Параметр |
Обязательный |
Валидация |
Описание |
| 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 |
Признак создания платежного токена |
| preferredPaymentMethods |
Нет |
Непустой массив уникальных строк. Каждое значение должно присутствовать в ответе GET /merchant-api/api/v2/payment-methods |
Методы оплаты, которые будут доступны плательщику. Если параметр не передан, ограничение не применяется |
Пример успешного ответа на запрос на создание счета
{
"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 |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Оплата счета через Google Pay™
Google Pay™ доступен для оплаты счета только на платежной странице Tiyn Business. Магазин создает счет через API,
получает paymentLink и перенаправляет плательщика по этой ссылке. Если способ оплаты Google Pay активирован для
магазина, на платежной странице будет отображена кнопка Google Pay.
Для подключения Google Pay магазину необходимо связаться с менеджером Tiyn Business и предоставить:
- наименование компании;
- домен интернет-ресурса, на котором размещен магазин.
Магазину не требуется выполнять прямую интеграцию с Google Pay API или передавать данные Google Pay в API
Tiyn Business: обработка Google Pay выполняется на платежной странице Tiyn Business.
Поддерживаемые способы оплаты
При оплате через Google Pay поддерживаются платежные системы Visa и Mastercard.
Tiyn Business поддерживает два метода авторизации Google Pay:
PAN_ONLY - платеж по данным банковской карты, сохраненной в Google Pay; Tiyn Business может применить
стандартный card/3DS flow по правилам банка-эквайера;
CRYPTOGRAM_3DS - платеж по токенизированной карте с криптограммой Google Pay; аутентификация выполняется через
Google Pay.
Требования Google Pay
Если магазин упоминает Google Pay или использует материалы Google Pay в своих интерфейсах, необходимо соблюдать
Google Pay Web brand guidelines и использовать
официальные материалы Google Pay без изменения цветов, пропорций или внешнего вида.
Использование Google Pay регулируется
Google Pay and Wallet APIs Acceptable Use Policy и
Google Pay API Terms of Service.
Оплата счета
Метод позволяет передать детали платежа для осуществления оплаты.
Google Pay не принимается через метод PUT /merchant-api/api/v2/invoices/<uuid>/pay. Для оплаты через Google Pay
используйте paymentLink, полученный при создании счета, или платежную форму Tiyn.js.
Оплата счета возможна:
- по реквизитам банковской карты;
- по платежному токену. Токен создается при создании счета, если был передан параметр createToken=true (см. Создание счета).
Пример запроса оплаты счета
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 |
Да |
Непустая строка |
Идентификатор корреляции запроса |
Создание подписки
Метод позволяет создать подписку для проведения регулярных платежей, совершаемых без подтверждения клиентом.
Алгоритм работы с подпиской
- Магазин отправляет в Tiyn Business запрос на создание счета, где указывает параметр
createToken=true для создания платежного токена. Предварительно данную возможность необходимо согласовать с менеджером;
- Логика оплаты счета описана в "Схеме проведения запроса";
- В случае если счет был успешно оплачен, то Tiyn Business отправляет магазину уведомление об успешной оплате, которое содержит идентификатор платежного токена;
Магазин возвращает ответ-подтверждение о проведенной операции.
- Магазин отправляет в Tiyn Business запрос на создание подписки, где указывает идентификатор платежного токена первого счета и данные подписки;
- Tiyn Business обрабатывает запрос и если подписка создана корректно, возвращает ответ, содержащий идентификатор подписки;
- В случае если наступил момент следующей оплаты счета Tiyn Business создает счет и проводит его аналогично первому платежу, но списание средств осуществляется уже без подтверждения клиентом;
- 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.
Если для магазина активирован Google Pay, кнопка Google Pay может отображаться внутри платежной формы Tiyn.js.
Требования к подключению, ограничения и политики Google Pay такие же, как для оплаты по paymentLink.
Сценарий оплаты с помощью платежной формы
- Магазин отправляет в Tiyn Business запрос на создание счета.
- Если счет создан корректно, то в ответ на запрос Tiyn Business вернет uuid счета.
- Магазин инициализирует платежную форму с передачей необходимых параметров, а именно uuid счета и параметрами кастомизации.
- Tiyn.js создаёт защищённый iframe, загружаемый с PCI DSS совместимого CDN Tiyn.
- Плательщик заполняет банковские реквизиты и нажимает кнопку оплаты внутри iframe. Данные карты передаются напрямую в Tiyn Business.
- Tiyn Business обрабатывает платеж.
- После завершения обработки Tiyn Business отправляет событие
CHECKOUT_SUBMIT_RESULT в iframe с результатом оплаты счета.
- Магазин получает событие
CHECKOUT_SUBMIT_RESULT.
- В случае успешной оплаты счета плательщик перенаправляется на страницу, указанную при создании счета в параметре
successUrl;
- В случае неуспешной оплаты происходит перенаправление на страницу, указанную при создании счета в параметре
failUrl;
- Tiyn Business отправляет магазину уведомление об успешной/неуспешной оплате счета.
- Магазин возвращает ответ-подтверждение о проведенной операции.
Интеграция
Подключение 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. Это позволяет полностью адаптировать форму под дизайн сайта магазина.

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)
Платежи
Авторизационные данные:
- expiration date = 12/30;
- сvc/cvv2 = 123;
- 3ds=123456.
| Номер карты (PAN) |
3ds |
Поддержка токена |
Результат |
| 5555555555554477 |
Да, v1 |
Нет |
Успешно |
| 4111111111111111 |
Да, v2 |
Нет |
Успешно |
| 4311111111111119 |
Нет |
Нет |
Успешно |
| 4111111111111160 |
Нет |
Нет |
Отклонен |
| 4111111111111152 |
Да |
Да |
Успешно |
| 5555555555554501 |
Нет |
Да |
Успешно |
| 4111111111111137 |
Да |
Да |
Отклонен |
| 5105105105105134 |
Нет |
Да |
Отклонен |
Выплаты
| Номер карты (PAN) |
Результат |
| 4111111111111111 |
Успешно |
| 5555555555555599 |
Ожидание |
| 4222222222222222 |
Отклонена (Недостаточно средств) |