# Формат запроса к API

Взаимодействие с API 1Payment — через **HTTP-запросы** на `https://api.1payment.com/<имя_метода>`. Конкретный URL и набор полей — на странице каждой операции в разделах приёма платежей и выплат.

Успешные и ошибочные ответы методов — **JSON**.

## Способы передачи параметров

| Способ | Как передать | Заголовки |
|  --- | --- | --- |
| **GET** | Параметры в query string. Используется в примерах по умолчанию. | — |
| **POST** | Тело `application/x-www-form-urlencoded`, те же поля, что в query для GET. | `Content-Type: application/x-www-form-urlencoded` |
| **POST JSON** | Тело `application/json` с тем же набором полей. | `Content-Type: application/json` |


В документации параметры часто показаны для **GET**, но для одного и того же метода допустимы **GET**, **POST** или **POST JSON** — выберите удобный вариант на своём сервере.

## Подпись запроса (`sign`)

Защищённые методы требуют параметр `sign` — MD5, lowercase (hex) от строки:


```text
<имя_метода> + <параметры_без_sign_в_порядке_A-Z_через_&> + <API_KEY>
```

**Пример** (метод `init_form`, в конец строки подставляется значение ключа проекта):


```text
init_formamount=100.00&partner_id=123&project_id=456&shop_url=myshop.ru&user_data=order_777secret_key
```

- В подпись входят только **фактически переданные** поля, кроме `sign`.
- `API_KEY` — ключ **проекта** (не глобальный ключ партнёра).
- Префикс метода (`init_form`, `init_payment`, `status_payment` и т.д.) — как в документации операции.
- Значения параметров в строке подписи — **как переданы**, без URL-кодирования. В PHP **не** используйте `http_build_query()` для формирования строки подписи (она кодирует `:` и другие символы); для HTTP-тела или query string `http_build_query()` допустим отдельно на шаге отправки запроса.


На страницах методов есть виджет проверки подписи. Ошибка проверки — `error_code` = `2`, см. [Коды ошибок (API)](/pages/error-codes-api).

## Колбеки (уведомления)

Финальный статус платежа 1Payment отправляет **POST** JSON на ваш `notify_url`. Подпись колбека — **без** префикса имени метода: `md5(<параметры_в_порядке_A-Z_через_&> + <API_KEY>)`. Ваш сервер должен ответить **HTTP 200 OK**.

Полный перечень полей колбека и особенности по каждому методу — на страницах операций в разделах «Уведомления о статусе (колбеки)».

## Связанные разделы

- [Коды ошибок (API)](/pages/error-codes-api)
- [Типы платежей](/pages/payment-types)
- [Типы выплат](/pages/payout-types)
- [Статусы транзакций](/pages/transaction-statuses)