Skip to main content

API для эквайринга

Общие принципы


Настройки у клиента

У клиента в настройках CRM для API-эквайринга указываются следующие параметры:

  • Идентификатор продавца (MerchantID), являющегося клиентом и эквайера, и CRM
  • URL для регистрации счёта (на стороне эквайера)
  • Секретный ключ
  • Булев признак использования онлайн-кассы
  • Параметры чека для ОФД

Идентификатор продавца - строка с макс. длиной 36 символов. Выдаётся эквайером.

Секретный ключ - строка с длиной 8-64 символа. Допустимы только символы ASCII, исключая пробел. Формируется пользователем и сохраняется на обеих сторонах, либо формируется эквайером.


Схема взаимодействия CRM и эквайера

Платёж производится одностадийным способом:

  1. Клиент инициирует оплату счёта в CRM (нажимает кнопку "Оплатить")
  2. CRM отправляет запрос к эквайеру на URL для регистрации счёта,
    предоставляя параметры счёта, а также CallbackUrl и ReturnUrl
  3. Эквайер возвращает URL для оплаты и OrderId (идентификатор транзакции эквайера)
  4. CRM перенаправляет браузер клиента на URL для оплаты
  5. По мере выполнения оплаты эквайер уведомляет CRM о статусах платежа посредством вызовов CallbackUrl
    (как минимум один раз: при успешном или неуспешном завершении процесса оплаты)
  6. Эквайер перенаправляет браузер клиента на ReturnUrl

Формат запросов

При вызове URL для регистрации счёта CRM использует HTTP-метод POST в формате JSON и Content-Type равным application/json; charset="utf-8".

При получении входящих запросов от эквайера на CallbackUrl CRM так же ожидает метод POST. Допустимые форматы: JSON или application/x-www-form-urlencoded.


Аутентификация

Выполняется на основе уникального в рамках эквайера MerchantID.


Безопасность

При вызове URL для регистрации счёта CRM добавляет в запрос электронную подпись. При получении запросов на CallbackUrl CRM так же ожидает от эквайера аналогичную подпись.

Подпись представляет собой HTTP-заголовок "Content-Signature", равный Base64(HMAC-SHA256(Body, ASCII(Key))),
т.е. формируется следующим образом:

  1. Берётся полное содержимое тела POST-запроса
  2. Вычисляется подпись HMAC-SHA256, где в качестве ключа выступают ASCII-коды символов строки секретного ключа
  3. Полученная бинарная подпись преобразуется в Base64-строку
  4. В запрос добавляется HTTP-заголовок "Content-Signature" с полученной строкой в качестве значения

При несовпадении подписи при вызове CallbackUrl вернёт соответствующую ошибку.

Секретный ключ по сети не передаётся.

Также для избежания повторной обработки запроса на регистрацию счёта CRM формирует и передаёт в качестве параметра ключ идемпотентности.


Функции


Регистрация счёта (CRM->эквайер)

Вызывается при нажатии пользователем кнопки "Оплатить" в CRM.

Список параметров:

Наименование Формат Обяз-ый Описание
idempotenceKey Строка
<= 32 симв.
+ Ключ идемпотентности.
merchantId Строка
<= 36 симв.
+ Идентификатор продавца.
amount Число + Общая сумма.
currency Число + Код валюты по ISO 4217 (рос. рубль = 643).
language Строка
2 симв.
+ Желательный язык интерфейса при оплате, исходя из текущего языка клиента в CRM. Возможные значения: "ru", "en".
invoiceNumber Строка
< 40 симв.
+ Идентификатор платежа в CRM.
clientName Строка + Имя клиента (Фамилия И.О.)
clientEmail Строка -/+ E-mail клиента. Обязательный только в случае использования онлайн-кассы, в противном случае может отсутствовать.
clientPhone Строка - Номер мобильного телефона клиента
description Строка + Общее описание платежа
receipt Объект -/+ Параметры чека для ОФД. Обязательный только в случае использования онлайн-кассы, в противном случае отсутствует.
callbackUrl Строка + URL для обратного вызова от эквайера к CRM для информирования CRM о статусах платежа в процессе оплаты.
returnUrl Строка + URL для возврата на сайт продавца (т.е. в CRM).
Объект Receipt
Наименование Формат Обяз-ый Описание
taxCode Строка + Идентификатор системы налогообложения.
email Строка + E-mail клиента для отправки чека.
items Массив объектов + Товарные позиции в чеке (на данный момент всегда одна).
Объект массива items (позиция в чеке)
Наименование Формат Обяз-ый Описание
name Строка + Наименовании позиции.
amount Число + Сумма.
quantity Число + Количество (на данный момент всегда 1).
vatCode Число + Идентификатор ставки НДС.
paymentSubject Строка - Признак предмета расчёта (может отсутствовать для эквайринга вне РФ).
paymentMode Строка - Признак способа расчета (может отсутствовать для эквайринга вне РФ).
Идентификаторы системы налогообложения (taxCode)
Osn Общая система налогообложения
UsnIncome Упрощенная (УСН, доходы)
UsnIncomeOutcome Упрощенная (УСН, доходы минус расходы)
Envd Единый налог на вмененный доход (ЕНВД)
Esn Единый сельскохозяйственный налог (ЕСН)
Patent Патентная система налогообложения
Идентификаторы ставки НДС (vatCode)

Сюда включены возможные ставки не только РФ, но и Республики Казахстан.

-1 Без НДС
0 НДС по ставке 0%
5 НДС по ставке 5%
7 НДС по ставке 7%
10 НДС по ставке 10%
12 НДС по ставке 12%
18 НДС по ставке 18%
20 НДС по ставке 20%
22 НДС по ставке 22%
105 НДС по расчетной ставке 5/105
107 НДС по расчетной ставке 7/107
110 НДС по расчетной ставке 10/110
112 НДС по расчетной ставке 12/112
118 НДС по расчетной ставке 18/118
120 НДС по расчетной ставке 20/120
122 НДС по расчетной ставке 22/122
Признаки предмета расчёта (paymentSubject)
Service Услуга
Commodity Товар
Job Работа
IntellectualActivity Результаты интеллектуальной деятельности
Payment Платеж
AgentCommission Агентское вознаграждение
Composite Составной предмет расчета
Another Другое
Признаки способа расчета (paymentMode)
FullPrepayment Полная предоплата
PartialPrepayment Частичная предоплата
Advance Аванс
FullPayment Полный расчет
PartialPayment Частичный расчет и кредит


Пример запроса
{
	"idempotenceKey": "e0a51c144a1e43e2b43555938f36c56b", // Ключ идемпотентности
	"merchantId": "123", // Идентификатор продавца
	"amount": 123.45, // Общая сумма
	"currency": 643, // Код валюты по ISO 4217
	"language": "ru", // Желательный язык интерфейса при оплате
	"invoiceNumber": "3628", // Идентификатор платежа в CRM
	"clientName": "Иванов И.И.", // Имя клиента
	"clientEmail": "some@mail.com", // E-mail клиента
	"clientPhone": "79251234567", // Номер мобильного телефона клиента
	"description": "Оплата за курс английского языка", // Общее описание платежа
	"receipt": { // Параметры чека для ОФД
		"taxCode": "UsnIncome", // Идентификатор системы налогообложения
		"email": "some@mail.com", // E-mail клиента для отправки чека
		"items": [{ // Товарные позиции в чеке
			"name": "Оплата за курс английского языка", // Наименовании позиции
			"amount": 123.45, // Сумма
			"quantity": 1, // Количество
			"vatCode": 22, // Идентификатор ставки НДС
			"paymentSubject": "Service", // Признак предмета расчёта
			"paymentMode": "FullPrepayment" // Признак способа расчета
		}]
	},
	"callbackUrl": "https://demo.t8s.ru/Acquire/ApiCallback", // URL для обратных вызовов
	"returnUrl": "https://demo.t8s.ru/Acquire/ApiComplete" // URL для возврата на сайт продавца
}


Возвращаемые данные должны быть представлены в виде JSON.

В случае успеха функция должна возвращать объект с двумя обязательными полями:

  • OrderId: идентификатор транзакции эквайера
  • PayUrl: URL страницы оплаты

В случае ошибки функция должна возвращать текст ошибки в поле «Error». Этот текст может быть отображён для пользователя CRM.

Если возвращаемый код состояния HTTP свидетельствует об ошибке, так же будет отображён соответствующий ему текст ошибки, но текст в поле «Error» имеет больший приоритет.


Обратный вызов (CallbackUrl, эквайер->CRM)

Вызывается эквайером при изменении статуса платежа при оплате.

Обязательным является только вызов при статусе "succeeded" или ошибке/отказе.
Статусы "pending ,"authorized" и "confirmation", являющиеся переходными в процессе оплаты, на данный момент игнорируются, но сохраняются в логах CRM.

Список параметров:

Наименование Формат Обяз-ый Описание
orderId Строка + Идентификатор транзакции эквайера.
status Строка + Текущий статус платежа.
issuer Строка - Название банка-эмитента.
method Строка - Способ оплаты (например, "BankCard").
instrument Строка - Платёжный инструмент (например, номер карты: "410000XXXXXX0000").
Статусы платежа (status)
Pending В обработке
Authorized Авторизован
Confirmation На подтверждении
Succeeded Успешно завершён
... Любой другой статус (например "Rejected" или "Отклонён") является статусом ошибки и будет отображён пользователю


В случае ошибки функция возвращает поле: "Error" с кодом состояния HTTP 500.