Общие положения

API для работы с платежами в виджете Payer. Перед тем как его использовать для какого-либо аккаунта amoCRM (Kommo) требуется установить сам виджет из маркета.

Точка входа запросов: https://payer.amocrm.catcode.io/api/v1/

API поддерживают работу с виджетом Триггер от F5, который может отправлять автоматические запросы в Payer, чтобы создавать платежи поштучно или целые рассрочки (см. описание в методах).

Авторизация

Для авторизации требуется получить секретный токен, отправив запрос на почту support@catcode.io, где необходимо указать ID аккаунта, название виджета и причину использования API.

Подпись запросов происходит с помощью Basic-авторизации в Authorization-заголовке. Необходимо передать закодированную в base64 строку вида <platform>:<account_id>:<token>, где:

  • platform – одна из двух платформ: amocrm или kommo;
  • account_id – ID аккаунта amoCRM или Kommo;
  • token – токен для аккаунта выданный по запросу.

В конечном итоге заголовок должен быть примерно следующим: Authorization: Basic MjE3Nzg0MT36ZThhMGQzNDdlMzYzOTY5YTViN6k0OGMxYg==

Формат ответа

Все ответы возвращаются в JSON-формате в соответствии с JSend, где обязательно присутствуют следующие ключи:

  1. status – результирующий статус работы запроса:
  • success – запрос валидный, обработан успешно и в процессе не возникло ошибок. Данные результата в data.
  • fail – обязательные поля не заполнены или содержат некорректные данные. В data массив полей со списками допущенных ошибок.
  • error – в процессе обработки запроса возникла ошибка по вине некорректного запроса или ошибки на сервере. В data поясняющий текст.
  1. data – результат запроса, формат которого зависит от статуса выше.

Другими словами, по полю status можно определять как работать с полем data. При этом HTTP-статус ответа зависит от серьёзности ошибки и может использоваться для определения проблемной стороны.

Примеры ответов со статусами:

  • Успешный ответ 200 OK

    {
        "status": "success",
        "data": {
            "payments": [
                {
                    "id": 83255,
                    "remote_id": "111222333",
                    "amount": 130,
                    "date_expected": "2021-04-24",
                    "date_actual": null,
                    "paid": false,
                    "lead_id": 28838899
                },
                {
                    "id": 82617,
                    "remote_id": null,
                    "amount": 6139273,
                    "date_expected": "2021-05-26",
                    "date_actual": "2021-05-14",
                    "comment": "Платёж №1",
                    "paid": true,
                    "lead_id": 28838899
                }
            ]
        }
    }
    
  • Переданы невалидные параметры 400 Bad Request

    {
        "status": "fail",
        "data": {
            "date_to": [
                "Это значение не является допустимой датой."
            ]
        }
    }
    
  • Ошибка авторизации 401 Unauthorized

    {
        "status": "error",
        "data": "Неавторизованный вызов, проверьте заголовок Authorization"
    }
    
  • Ошибка сервера 500 Internal Server Error

    {
        "status": "error",
        "data": "Запрос выполнить не удалось, обратитесь в поддержку"
    }