Download OpenAPI specification:Download
Описание API произведено в формате OpenAPI 3.0.0.
Взаимодействие с сервисом осуществляется по схеме запрос-ответ. Запросы отправляются в формате JSON методом POST. В качестве безопасного доступа к сервису во всех методах используется JWT-токен, он генерируется GET-запросом /public/login, параметр accessToken
Статус | Описание | Финальный |
---|---|---|
CREATED | Заказ создан | Да |
DECLINED | Заказ отклонен | Да |
EXPIRED | Время актуальности заказа истекло | Да |
IN_PROCESS | Статус заказа не определен, неoбходимо запросить уточнение | Нет |
IPS_ACCEPTED | Успешная оплата по СБП | Да |
QRCDATA_CREATED | Получение QR кода прошло успешно | Нет |
PAID | Выплата произведена | Да |
REFUNDED | Заказ возмещен | Да |
Уведомления (webhook, callback) предствляют собой POST запросы, отправляемые системой по факту изменения статуса заказа на адрес, указанный в параметре CallbackUrl метода order. Формат уведомлений соответствует ответу на запрос статуса. Система будеет осуществлять повторные попытки отправки уведомлений до получения http-кода 200 или истечения тайм-лимита. В заголовке http запроса передается параметр payment-sign - подпись, результат подписи исходного тела нотификации (Body из http запроса) приватным ключом, в кодировке base64. Для валидации подписи необходимо использовать публичный ключ:
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtlD5ORxXDUgnnD9Ri2IB
UcT2Ru1fMi9kub8errQdLaXdFRDZJ1mNHlMJx+CHkhM5GNkMmidAhPcYRs4h/yIb
YLiRSsR+Zl6krjcrEvrTIZ1BySNAxEuCzWGFM27Ef01xNOSPEgtptAmop6vRuaiS
ha2vB5rHN1hSks1td/7xDcFG+C4cnDsTYp39rUvSSMtkW6FCbBoxNPrNOSlZGykx
OFBhOYd/uOK4z/zFSy07f4rA32KNn3zJE5eb6tzNMRNa6lOL96x0OYzw/P6oaS5b
sugVehAM1TGBCzm4Xmz1VZVBhxd3V7VoJuf/0C0W2Yfer+E/G0s3DDWmjzqhbvrc
Eb0y1kOZn4Z39jswv5Bkk8NyqHfNe0dE4pX+dSnfhC/9J5xFZy/CknclEM/0waY8
36iYIy+MaRsQdWXjbvP1AVk/yq2RlXCaOnK7GPvxAP1qjcgt56cGUOks9H9X6lba
PcJd+KDWde1aZZJLUpxu7JDIVTruDy/KrxDtJYi7Mz40Y6pnsKXzPHzVr0km9LI9
zK1j24OS1RIbO2fMM9D2zNQnSUV//aR+/xb7W2UgL2L0GRl7nDzqQL2dLvStHG9O
yUtnH5R/hPuIZqIDZx1N52F1JwArfDY0j9t5suAqN0VXJe2N77cYJ0x2LDeg+rLl
KsdjLKRDtKpXormCUTs/V+0CAwEAAQ==
-----END PUBLIC KEY-----
Пример для проверки подписи при интеграции средствами openssl. В командной строке выполняем команду:
Декодируем base64:
certutil -decode catsign.txt sign.txt.dec
Проверяем подпись:
openssl dgst -sha1 -verify PublicStage.key -signature sign.txt.dec callback.txt
Где catsign.txt - подпись из заголовка Payment-Sign, PublicStage.key - публичный ключ, callback.txt - тело коллбека.
В случае успешной проверки будет сообщение Verified OK.
Проверка статуса заказа get обязательна по истечении срока жизни заказа. Через 30 мин после создания заказа отправка уведомления не гарантирована.
login | string Логин (email) кассира в системе |
password | string пароль кассира в системе |
{- "login": "mail@email.com",
- "password": "Password123"
}
{- "success": true,
- "description": "login success",
- "accessToken": "string",
- "expiresAccess": "string",
- "refreshToken": "string",
- "expiresRefresh": "string"
}
tspId | integer <unit64> Id ТСП по которому проходит оплата |
dateFrom | string <date-time> дата начала периода отслеживания заказов |
dateTo | string <date-time> дата окончания периода отслеживания заказов |
status | string текущий статус заказа |
limit | number Limit count orders. Default 30 |
offset | number Offset of orders. Default 0 |
{- "success": true,
- "description": "string",
- "orders": [
- {
- "id": "string",
- "externalOrderId": "Order1",
- "merchantOrderId": "merchantOrderId232",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "orderAmount": 100,
- "paymentAmount": 10000,
- "orderCurrency": "USD",
- "paymentCurrency": "RUB",
- "status": "string",
- "paymentType": "string",
- "partner": {
- "id": 0,
- "name": "string"
}, - "agent": {
- "id": 0,
- "name": "string"
}, - "merchant": {
- "id": 0,
- "name": "string"
}, - "tsp": {
- "id": 0,
- "name": "string"
}, - "cashier": {
- "id": 0,
- "name": "string"
}
}
], - "meta": {
- "totalCount": 0,
- "filters": [
- {
- "id": "status",
- "label": "Статус",
- "type": "select",
- "dropdownElements": [
- {
- "id": "status",
- "label": "Статус"
}
]
}, - {
- "id": "tspId",
- "label": "ТСП",
- "type": "select",
- "dropdownElements": [
- {
- "id": 1,
- "label": "TSPname"
}
]
}, - {
- "id": "date",
- "label": "Дата",
- "type": "date"
}
]
}
}
Создать заказ можно двумя способами. В первом случае в orderAmount передается сумма заказа в валюте, после создания заказа сумма будет переконвертирована в рубли и платеж будет принят в рублях, все комиссии будут включены в итоговую сумму оплаты. Во втором случе сумма передается в поле paymentAmount, сумма к оплате останется в рублях, но система сконвертирует ее в валюту и вычтет комиссии. Сумма должна передаваться в копейках (центах, евроцентах etc.). Пример если передать в orderAmount значение 100, сумма к оплате будет составлять 100+комиссия. Если передать в paymentAmount 100, сумма к оплате будет 100, также в OrderAmount будет зафиксирована сумма за вычетом комиссий. Для создания заказа на выплату обязательно должен быть передан type PayOut, без указанного типа продолжить создание выплаты не получится. При создании заказа на прием тип можно не передавать, по умолчанию type PayIn.
merchantOrderId | string идентификатор заказа продавца, может был заполнен номером заказа из системы продавца |
paymentAmount required | integer сумма, которую оплатит покупатель, передается в копейках |
orderCurrency required | string изначальная валюта заказа, доступные валюты USD, EUR, AED, THB, RUB, TRY |
paymentCurrency | string итоговая валюта заказа, в которой будет произведена оплата |
tspId required | integer Id ТСП по которому проходит оплата |
description | string описание заказа, поле для заметки по заказу |
callbackUrl | string адрес, на который будет отправлен коллбек |
{- "merchantOrderId": "merchantOrderId",
- "orderAmount": 100,
- "orderCurrency": "EUR",
- "tspId": 1,
- "description": "comment",
- "callbackUrl": "callback.com"
}
{- "success": true,
- "description": "",
- "order": {
- "id": "orderId",
- "merchantOrderId": "merchantOrderId",
- "orderAmount": 100,
- "paymentAmount": 10530,
- "orderCurrency": "EUR",
- "paymentCurrency": "RUB",
- "type": "payIn"
}
}
id required | integer Идентификатор заказа в системе |
{- "success": true,
- "description": "string",
- "order": {
- "id": "string",
- "externalOrderId": "Order1",
- "status": "string",
- "paymentInfo": {
- "qrc": {
- "qrcId": "string",
- "payload": "string"
}, - "rate": 0,
- "receipt": true,
- "paymentType": "IPS"
}, - "merchantOrderId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "callbackUrl": "callback.com",
- "orderAmount": 0,
- "paymentAmount": 0,
- "orderCurrency": "string",
- "paymentCurrency": "string",
- "cashier": {
- "id": 0,
- "name": "string"
}, - "merchant": {
- "id": 0,
- "name": "string"
}, - "agent": {
- "id": 0,
- "name": "string"
}, - "partner": {
- "id": 0,
- "name": "string"
}, - "tsp": {
- "id": 0,
- "name": "string"
}
}
}
для создания выплаты order обязательно должен быть создан с параметром type PayOut. При получении статуса IN_PROCESS неoбходимо запросить уточнение
id required | integer |
pan required | string номер карты получателя |
holder | string Имя и Фамилия получателя |
phone | string номер телефона получателя |
{- "pan": 4189732800687140,
- "holder": "Ivan Ivanov",
- "phone": 79998887766
}
{- "success": true,
- "description": "",
- "order": {
- "externalOrderId": "externalOrderId",
- "status": "PAID",
- "authCode": "string",
- "rrn": "string"
}
}