Pay API v1.2.1
API для оплаты покупок в торговых точках, подключённых к Koshelek Pay.
Общие сведения
Руководство предназначено для торгово-сервисных предприятий (ТСП), интегрирующих платёжный сервис Koshelek Pay для организации оплаты товаров и услуг в точках обслуживания клиентов.
О версиях Pay API
- Изменения в Pay API фиксируются на странице История изменений.
 - Интеграция с новыми партнёрами осуществляется по последней версии Pay API.
 - Провайдеры платежей «СБП» и «Долями» доступны начиная с версии Pay API 0.9.0.
 
Изменения: Pay API v1.2.0 → v1.2.1
Объект invoice
- Параметр 
taxAmount: отменена обязательность передачи параметра. 
Подключение к API
Провайдером API выступает сервер Кошелька. Потребителями API являются кассовое ПО и узлы ЦОД ТСП.
Партнёру передаются следующие параметры для подключения к Pay API:
| Параметр | Описание | 
|---|---|
login | 
Имя пользователя и пароль для авторизации запросов API (используется HTTP Basic Authentication). | 
password | 
Пароль для авторизации запросов API. | 
API Base URL (test) | 
URL для тестового подключения: https://api-test.koshelek.app/{partner-name} | 
API Base URL (production) | 
URL для промышленного подключения: https://api.koshelek.app/{partner-name} | 
Параметр API Base URL уникален для каждого партнёра. Например, API Base URL для партнёра с именем name будет выглядеть так:
| Параметр | Значение | 
|---|---|
API Base URL (test) | 
https://api-test.koshelek.app/name | 
API Base URL (production) | 
https://api.koshelek.app/name | 
Идентификаторы, участвующие в информационном обмене
В информационном обмене с партнёром (ТСП) используется ряд параметров, идентифицирующих ТСП. Параметры перечислены в таблице ниже. Параметры со значением «СБП» в столбце «Контекст» используются в платежах через Систему быстрых платежей (СБП).
| Параметр | Контекст | Описание | 
|---|---|---|
brandName | 
Общий | |
legalName | 
Общий | |
Stores:storeId | 
Общий | storeId). | 
partnerLogin | 
Общий, если у кассы есть онлайн-хост | |
partnerPassword | 
Общий, если у кассы есть онлайн-хост | |
Terminals:terminalId | 
Общий | terminalId). | 
legalId | 
СБП | |
merchantId | 
СБП | storeId:merchantId. | 
account | 
СБП | |
memberId | 
СБП | merchantId), и в котором у организации находится счёт (account). | 
paymentPurpose | 
СБП | /checkout. | 
subscriptionPurpose | 
СБП | |
postbackUrl(deprecated)  | 
Авторизация
Взаимодействие осуществляется по протоколу HTTPS. Для авторизации запросов к Pay API необходимо использовать HTTP Basic Authentication (RFC 7617). Данные для авторизации запросов передаются в HTTP-заголовке Authorization.
Note
Используемая версия протокола TLS: не ниже 1.2.
Кодировки
Как в запросах, так и в ответах используется кодировка UTF-8.
Формат и структура сообщений
Все методы API ожидают тип данных в заголовке: Content-Type = application/json и возвращают тело ответа в формате application/json.
Коды HTTP
| HTTP code | Назначение | 
|---|---|
200 | 
В случае успешной обработки запроса, со стороны узла платформы Кошелька будет возвращён тип данных, описанный в документации запроса, и HTTP-код 200. | 
422 | 
В случае ошибки обработки запроса, со стороны узла Кошельком будет возвращён HTTP-ответ с кодом 422, содержащий JSON-объект, описывающий ошибку. В частности, этот объект содержит строковое сообщение с описанием причины ошибки на русском языке. | 
Структура объекта, описывающего ошибку:
| Поле | Тип | Обязательность | Назначение | 
|---|---|---|---|
code | 
String | Да | Код ошибки (см. ниже). | 
details | 
String | Нет | Описание ошибки. | 
Коды ошибок
| Код | Описание | Рекомендации кассиру | 
|---|---|---|
EXTERNAL_PROVIDER_ERROR | 
Общий код ошибки провайдера платежей. | Попробуйте ещё раз или выберите другой способ оплаты | 
UNKNOWN_SESSION_ID | 
cardSession не существует / не прошёл валидацию. | 
Повторно отсканируйте карту лояльности и повторите | 
UNKNOWN_TRANSACTION_ID | 
transactionId не найден. | 
Попробуйте ещё раз или выберите другой способ оплаты | 
UNKNOWN_PARTNER_ID | 
merchant не найден. | 
Техническая ошибка. Обратитесь к администратору, т.к. магазин не найден | 
WRONG_TRANSACTION_STATE_CHANGE | 
Невозможен перевод транзакции в ожидаемое состояние. | Попробуйте ещё раз или выберите другой способ оплаты | 
PAYMENT_TRANSACTION_IS_NOT_PAID | 
Нет оплаты по транзакции оплаты. | Попробуйте ещё раз через "X" минут или обратитесь к администратору (Примечание: “X” — конфигурируемый параметр) | 
CANCEL_REFUNDING_BY_BANK | 
Возврат отменён банком. | Возврат отменён банком | 
TRANSACTION_FOR_SESSION_ID_ALREADY_EXISTS | 
Транзакция уже существует для сессии. | Техническая ошибка. обратитесь к системному администратору | 
TRANSACTION_FOR_SESSION_ID_ALREADY_PAYED | 
Транзакция уже обработана. | Техническая ошибка. обратитесь к системному администратору | 
TRANSACTION_IN_PROCESSING | 
Транзакция в обработке. | Оплата уже проведена | 
NOT_ENOUGH_LIMIT_TO_PAY | 
Превышен лимит для совершения операции. | Слишком большая сумма чека оплаты Долями. Попробуйте оплату СБП или смешанную оплату. | 
TOTAL_AMOUNT_IS_TOO_SMALL | 
Сумма покупки ниже установленного лимита. | Сумма чека слишком маленькая | 
SUBSCRIPTION_IS_NOT_FOUND | 
Привязанный счёт пользователя не найден (платёж через СБП с привязанного счёта пользователя). | Привязка счёта СБП не найдена. Попробуйте оплату Долями. | 
PAYMENT_DECLINED_BY_EXTERNAL_PROVIDER | 
Платёж отклонён банком (платёж через СБП с привязанного счёта пользователя). | Проверьте достаточность средств или попробуйте оплату Долями | 
PAYMENT_TRANSACTION_IS_NOT_PAID | 
Возврат отклонён, т. к. транзакция оплаты с данным transactionId не была завершена, списание средств не выполнялось. | 
Покупка не найдена. Обратитесь к администратору. | 
TERMINAL_STATE_OF_PAYMENT_TRANSACTION | 
Возврат отклонён, т. к. транзакция:
  | 
Возврат уже выполнен | 
PAYMENT_TRANSACTION_IS_BEING_REFUNDED_ALREADY | 
Возврат отклонён, т.к. уже есть незавершенная транзакция отмены. Дождитесь завершения процесса возврата по транзакции отмены с refTransactionId незавершенной предыдущей транзакции отмены. | 
Дождитесь результата возврата | 
REQUESTED_REFUND_AMOUNT_IS_GREATER_THAN_AVAILABLE | 
Возврат отклонён, т.к. запрошенная сумма к возврату превышает сумму оплаты по транзакции оплаты с данным transactionId. | 
Сумма возврата превышает сумму оплаты | 
UNEXPECTED_REFUND_AMOUNT_LEFT_FROM_EXTERNAL_PROVIDER | 
Возврат отклонён, т.к. транзакция оплаты с данным transactionId не была завершена, списание средств не выполнялось. | 
Возврат отклонён, покупка не завершена | 
PAYMENT_ORDER_IS_NOT_FOUND | 
Только для транзакций СБП. Не найдено платежное поручение в банке ТСП при выполнении операции возврата. | Возврат отклонён, т.к. магазин не поддерживает возвраты. Обратитесь к администратору. |