Здесь показаны различия между двумя версиями данной страницы.
Both sides previous revision Предыдущая версия Следущая версия | Предыдущая версия | ||
api-2.0 [2014/04/02 10:39] admin [Купоны] |
api-2.0 [2017/07/27 12:07] admin удалено |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ==== API 2.0 ==== | ||
- | API построено на REST архитектуре. JSON возвращается в ответ на все запросы к API, в том числе и при возникновении ошибок. Имеет предсказуемые, ресурсо-ориентированные URL-адреса, использует HTTP-коды для передачи состояния ошибок, а также использует встроенные функции HTTP-аутентификации и методы GET, POST, PUT, DELETE. | ||
- | ==== Запросы от OnPay к сайту мерчанта ==== | ||
===== Check ===== | ===== Check ===== | ||
Строка 18: | Строка 15: | ||
Пример запроса: | Пример запроса: | ||
- | <pre><code class="json">{ | + | <code class="json"> |
- | "type":"check", | + | { |
- | "pay_for":"55446", | + | "type":"check", |
- | "expired_at":"2014-02-03T18:43:21+04:00" | + | "pay_for":"55446", |
- | "amount":50000, | + | "expired_at":"2014-02-03T18:43:21+04:00" |
- | "way":"RUR", | + | "amount":50000, |
- | "mode":"fix", | + | "way":"RUR", |
- | "signature":"82f67760dbc5331963b7e00bc6df77f1" | + | "mode":"fix", |
- | }</code></pre> | + | "signature":"82f67760dbc5331963b7e00bc6df77f1" |
+ | } | ||
+ | </code> | ||
Ответ мерчанта | Ответ мерчанта | ||
Строка 37: | Строка 36: | ||
Пример: | Пример: | ||
- | <pre><code class="json"> | + | <code class="json"> |
- | { | + | { |
- | "code":0, | + | "code":0, |
- | "type":"check", | + | "type":"check", |
- | "pay_for":"55446", | + | "pay_for":"55446", |
- | "signature":"172de16ada92791b3753b3121d471f5c" | + | "signature":"172de16ada92791b3753b3121d471f5c" |
- | } | + | } |
- | </code></pre> | + | </code> |
===== Pay ===== | ===== Pay ===== | ||
Строка 64: | Строка 63: | ||
| balance.amount | bigint | Сумма, зачисляемая на баланс | | | balance.amount | bigint | Сумма, зачисляемая на баланс | | ||
| balance.way | string | Валюта зачисления на баланс | | | balance.way | string | Валюта зачисления на баланс | | ||
+ | | order.from_amount | float | Сумма из ордера, которую должен был заплатить плательщик | | ||
+ | | order.from_way | string | Валюта из ордера, в которой должен был заплатить плательщик | | ||
+ | | order.to_amount | float | Сумма из ордера, которая должна была поступить на баланс магазина | | ||
+ | | order.to_way | string | Валюта из ордера, в которой должен был пополниться баланс магазина | | ||
Пример запроса: | Пример запроса: | ||
- | <pre><code class="json"> | + | <code class="json"> |
- | { | + | { |
- | "type":"pay", | + | "type": "pay", |
- | "pay_for":"55446", | + | "pay_for": "55446", |
- | "signature":"82f67760dbc5331963b7e00bc6df77f1", | + | "signature": "82f67760dbc5331963b7e00bc6df77f1", |
- | "user":{ | + | "user": { |
- | "email":"mail@mail.ru", | + | "email": "mail@mail.ru", |
- | "phone":"9631478946", | + | "phone": "9631478946", |
- | "note":"" | + | "note": "" |
- | }, | + | }, |
- | "payment":{ | + | "payment": { |
- | "id":7121064, | + | "id": 7121064, |
- | "date_time":"2013-12-05T12:07:09+04:00", | + | "date_time": "2013-12-05T12:07:09+04:00", |
- | "amount":10200, | + | "amount": 10200, |
- | "way":"USD", | + | "way": "USD", |
- | "rate":33121445, | + | "rate": 33121445, |
- | "release_at":null | + | "release_at": null |
- | }, | + | }, |
- | "balance":{ | + | "balance": { |
- | "amount":"3300", | + | "amount": 3378.39, |
- | "way":"RUR" | + | "way": "RUR" |
- | } | + | }, |
- | } | + | "order": { |
- | </pre></code> | + | "from_amount": 102.00, |
+ | "from_way": "USD", | ||
+ | "to_amount": 3378.39, | ||
+ | "to_way": "RUR" | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
Ответ мерчанта | Ответ мерчанта | ||
Строка 98: | Строка 107: | ||
| pay_for | string | Номер заказа | | | pay_for | string | Номер заказа | | ||
| signature | string | Контрольная подпись, строка для построения "code;pay_for;api_key" | | | signature | string | Контрольная подпись, строка для построения "code;pay_for;api_key" | | ||
+ | | receipt | json | Содержит информацию о списке покупок в чеке | | ||
+ | | receipt.items | array | Список товаров в чеке | | ||
+ | | receipt.items.name | string | Название товара | | ||
+ | | receipt.items.price | float | Цена за единицу товара | | ||
+ | | receipt.items.quantity | float | Количество | | ||
+ | | receipt.sum | float | Сумма чека | | ||
Пример: | Пример: | ||
- | <pre><code class="json"> | + | <code class="json"> |
- | { | + | { |
- | "code":0, | + | "code": 0, |
- | "type":"pay", | + | "type": "pay", |
- | "pay_for":"55446", | + | "pay_for": "55446", |
- | "signature":"172de16ada92791b3753b3121d471f5c" | + | "signature": "172de16ada92791b3753b3121d471f5c", |
- | } | + | "receipt": { |
- | </code></pre> | + | "items": [ |
+ | { | ||
+ | "name": "product 1", | ||
+ | "price": 100.00, | ||
+ | "quantity": 2.8 | ||
+ | }, | ||
+ | { | ||
+ | "name": "product 2", | ||
+ | "price": 18.50, | ||
+ | "quantity": 4 | ||
+ | }, | ||
+ | { | ||
+ | "name": "product 3", | ||
+ | "price": 500.00, | ||
+ | "quantity": 1 | ||
+ | } | ||
+ | ], | ||
+ | "sum": 854.00 | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
==== Запросы от мерчанта к OnPay ==== | ==== Запросы от мерчанта к OnPay ==== | ||
Строка 115: | Строка 150: | ||
адрес - json_interfaces/payments/:id, где id - номер платежа в системе OnPay | адрес - json_interfaces/payments/:id, где id - номер платежа в системе OnPay | ||
- | Используется для получения данных о прошедшем платеже. Используемые параметры: | + | Используется для получения данных о прошедшем платеже. HTTP метод - GET. Используемые параметры: |
| Название | Тип | Описание | | | Название | Тип | Описание | | ||
| login | string | Логин сайта | | | login | string | Логин сайта | | ||
Строка 121: | Строка 156: | ||
Пример запроса: | Пример запроса: | ||
- | <pre><code class="json"> | + | <code class="json"> |
- | { | + | { |
- | "login":"onpay", | + | "login":"onpay", |
- | "signature":"1d15f90df20da53d7206e9f7db7d2c9d" | + | "signature":"1d15f90df20da53d7206e9f7db7d2c9d" |
- | } | + | } |
- | </code></pre> | + | </code> |
В ответ будет выдан JSON с данными: | В ответ будет выдан JSON с данными: | ||
Строка 144: | Строка 179: | ||
Пример ответа: | Пример ответа: | ||
- | <pre><code class="json"> | + | <code class="json"> |
- | { | + | { |
- | "signature":"172de16ada92791b3753b3121d471f5c", | + | "signature": "172de16ada92791b3753b3121d471f5c", |
- | "user":{ | + | "user": { |
- | "email":"mail@mail.ru", | + | "email": "mail@mail.ru", |
- | "phone":"9631478946", | + | "phone": "9631478946", |
- | "note":"" | + | "note": "" |
- | }, | + | }, |
- | "payment":{ | + | "payment": { |
- | "id":"7121064", | + | "id": "7121064", |
- | "date_time":"2013-12-05T12:07:09+04:00", | + | "date_time": "2013-12-05T12:07:09+04:00", |
- | "amount":10200, | + | "amount": 10200, |
- | "way":"USD", | + | "way": "USD", |
- | "rate":33121445, | + | "rate": 33121445, |
- | "release_at":null | + | "release_at": null |
- | }, | + | }, |
- | "balance":{ | + | "balance": { |
- | "amount":"3300", | + | "amount": "3300", |
- | "way":"RUR" | + | "way": "RUR" |
- | } | + | } |
- | } | + | } |
- | </pre></code> | + | </code> |
===== Получить курс обмена ===== | ===== Получить курс обмена ===== | ||
Строка 177: | Строка 212: | ||
Пример запроса: | Пример запроса: | ||
- | <pre><code class="json"> | + | <code class="json"> |
- | { | + | { |
- | "login":"onpay", | + | "login":"onpay", |
- | "signature":"65ded5353c5ee48d0b7d48c591b8f430" | + | "signature":"65ded5353c5ee48d0b7d48c591b8f430" |
- | }</code></pre> | + | } |
+ | </code> | ||
В ответ будет выдан JSON с данными: | В ответ будет выдан JSON с данными: | ||
Строка 191: | Строка 227: | ||
Пример ответа: | Пример ответа: | ||
- | <pre><code class="json"> | + | <code class="json"> |
- | { | + | { |
- | "from":"USD", | + | "from":"USD", |
- | "to":"RUR", | + | "to":"RUR", |
- | "rate":33121445 | + | "rate":33121445 |
- | "signature":"4671aeaf49c792689533b00664a5c3ef" | + | "signature":"4671aeaf49c792689533b00664a5c3ef" |
- | } | + | } |
- | </code></pre> | + | </code> |
- | + | ||
- | ===== Купоны ===== | + | |
- | + | ||
- | Общий адрес интерфейса - json_interfaces/coupons/ | + | |
- | + | ||
- | h3. Создание Купона | + | |
- | + | ||
- | метод - POST | + | |
- | адрес - json_interfaces/coupons/ | + | |
- | + | ||
- | | Название | Тип | Описание | | + | |
- | | login | string | Логин сайта | | + | |
- | | type | string | Тип купона - для величины в процентах percent, для постоянной суммы const | | + | |
- | | percent_off | bigint | Предоставляемая скидка, в процентах, используется только для типа percent (для const - 0) | | + | |
- | | max_amount | bigint | Ограничение сверху по предоставляемой сумме скидки, используется только для типа percent, указывается в центах. 0 для купона без ограничения (для const - 0) | | + | |
- | | value | bigint | Величина скидки, используется только для типа const, указывается в центах (для percent - 0) | | + | |
- | | min_amount | bigint | Ограничение снизу, купон может использоваться только для платежей выше указанной суммы, указывается в центах, используется только для типа const (для percent - 0) | | + | |
- | | max_redemptions | int | Ограничение сверху по количеству использований | | + | |
- | | expired_at | string | Дата истечения скидочной акции в формате "CCYY-MM-DDThh:mm:ssTZD" где TZD смещение часового пояса в формате [+-]hh:mm | | + | |
- | | signature | string | Контрольная подпись для "login;type;percent_off;max_amount;value;min_amount;max_redemptions;expired_at;api_key" | | + | |
- | + | ||
- | Пример запроса для процентной скидки: | + | |
- | <pre><code class="json"> | + | |
- | { | + | |
- | "login":"onpay", | + | |
- | "type":"percent", | + | |
- | "percent_off":10, | + | |
- | "max_amount":100000, | + | |
- | "value":0, | + | |
- | "min_amount":0, | + | |
- | "max_redemptions":1, | + | |
- | "expired_at":"2013-12-05T12:07:09+04:00", | + | |
- | "signature":"1d15f90df20da53d7206e9f7db7d2c9d" | + | |
- | } | + | |
- | </code></pre> | + | |
- | + | ||
- | Пример запроса для постоянной скидки: | + | |
- | <pre><code class="json"> | + | |
- | { | + | |
- | "login":"onpay", | + | |
- | "type":"const", | + | |
- | "percent_off":0, | + | |
- | "max_amount":0, | + | |
- | "value":10000, | + | |
- | "min_amount":100000, | + | |
- | "max_redemptions":1, | + | |
- | "expired_at":"2013-12-05T12:07:09+04:00", | + | |
- | "signature":"d41d8cd98f00b204e9800998ecf8427e" | + | |
- | } | + | |
- | </code></pre> | + | |
- | + | ||
- | В ответ будет выдан JSON с данными: | + | |
- | | Название | Тип | Описание | | + | |
- | | code | string | Уникальный код купона | | + | |
- | | type | string | Тип купона - для величины в процентах percent, для постоянной суммы const | | + | |
- | | percent_off | bigint | Предоставляемая скидка, в процентах, только для типа percent (для const - 0) | | + | |
- | | max_amount | bigint | Ограничение сверху по предоставляемой сумме скидки, только для типа percent. 0 для купона без ограничения (для const - 0) | | + | |
- | | value | bigint | Величина скидки, только для типа const, указывается в центах (для percent - 0) | | + | |
- | | min_amount | bigint | Ограничение снизу, купон может использоваться только для платежей выше указанной суммы, только для типа const (для percent - 0) | | + | |
- | | max_redemptions | int | Ограничение сверху по количеству использований | | + | |
- | | expired_at | string | Дата истечения скидочной акции в формате "CCYY-MM-DDThh:mm:ssTZD" где TZD смещение часового пояса в формате [+-]hh:mm | | + | |
- | | redemptions_count | int | Количество использований | | + | |
- | | state | string | Текущее состояние, new для купона с не исчерпанным лимитом использований, complete для использованного максимально допустимое кол-во раз, expired для купона с истекшим временем действия и не исчерпанным лимитом использований, deleted для удаленного купона | | + | |
- | | signature | string | Контрольная подпись "code;type;redemptions_count;state;api_key" | | + | |
- | + | ||
- | Пример ответа для процентной скидки: | + | |
- | <pre><code class="json"> | + | |
- | { | + | |
- | "code":"3whhZ4U0J9B0tATiOb", | + | |
- | "type":"const", | + | |
- | "percent_off":10, | + | |
- | "max_amount":100000, | + | |
- | "value":0, | + | |
- | "min_amount":0, | + | |
- | "max_redemptions":1, | + | |
- | "expired_at":"2013-12-05T12:07:09+04:00", | + | |
- | "redemptions_count":0, | + | |
- | "state":"new", | + | |
- | "signature":"172de16ada92791b3753b3121d471f5c" | + | |
- | } | + | |
- | </code></pre> | + | |
- | + | ||
- | Пример ответа для постоянной скидки: | + | |
- | <pre><code class="json"> | + | |
- | { | + | |
- | "code":"3whhZ4U0J9B0tATiOb", | + | |
- | "type":"const", | + | |
- | "percent_off":0, | + | |
- | "max_amount":0, | + | |
- | "value":10000, | + | |
- | "min_amount":100000, | + | |
- | "max_redemptions":1, | + | |
- | "expired_at":"2013-12-05T12:07:09+04:00", | + | |
- | "redemptions_count":0, | + | |
- | "state":"new", | + | |
- | "signature":"172de16ada92791b3753b3121d471f5c" | + | |
- | } | + | |
- | </code></pre> | + | |
- | + | ||
- | h3. Получение купона | + | |
- | + | ||
- | метод - GET | + | |
- | адрес - json_interfaces/coupons/:code, где code - уникальный код купона | + | |
- | + | ||
- | Используется для просмотра текущего состояния купона. | + | |
- | | Название | Тип | Описание | | + | |
- | | login | string | Логин сайта | | + | |
- | | signature | string | Контрольная подпись для "login;code;"get";api_key" | | + | |
- | + | ||
- | Пример запроса: | + | |
- | <pre><code class="json"> | + | |
- | { | + | |
- | "login":"onpay", | + | |
- | "signature":"1d15f90df20da53d7206e9f7db7d2c9d" | + | |
- | } | + | |
- | </code></pre> | + | |
- | + | ||
- | Ответ будет аналогичен как и у запроса для создания купона. | + | |
- | + | ||
- | h3. Удаление купона | + | |
- | + | ||
- | метод - DELETE | + | |
- | адрес - json_interfaces/coupons/:code, где code - уникальный код купона | + | |
- | + | ||
- | Используется для отключения купона до истечения его срока годности или исчерпания количества использований. | + | |
- | | Название | Тип | Описание | | + | |
- | | login | string | Логин сайта | | + | |
- | | signature | string | Контрольная подпись для "login;code;"delete";api_key" | | + | |
- | + | ||
- | Пример запроса: | + | |
- | <pre><code class="json"> | + | |
- | { | + | |
- | "login":"onpay", | + | |
- | "signature":"1d15f90df20da53d7206e9f7db7d2c9d" | + | |
- | } | + | |
- | </code></pre> | + | |
- | + | ||
- | Ответ будет аналогичен как и у запроса для создания купона. | + | |
- | + | ||
- | h1. Ошибки | + | |
- | + | ||
- | В любом ответе могут присутствовать данные об ошибке, они записываются в конец сообщения в следующем формате: | + | |
- | | Название | Тип | Описание | | + | |
- | | params | string | Перечисляются все ошибочные параметры | | + | |
- | | params.code | string | Код ошибки | | + | |
- | | params.message | string | Текст ошибки | | + | |
- | | params.name | string | Название параметра | | + | |
- | | type | string | Тип ошибки | | + | |
- | | message | string | Текст сообщения | | + | |
- | + | ||
- | JSON вида: | + | |
- | <pre><code class="json"> | + | |
- | { | + | |
- | "error":{ | + | |
- | "params":[ | + | |
- | { | + | |
- | "code":"required", | + | |
- | "message":"Description cannot be blank.", | + | |
- | "name":"description" | + | |
- | } | + | |
- | ], | + | |
- | "type":"invalid_param_error", | + | |
- | "message":"Invalid data parameters" | + | |
- | } | + | |
- | }</code></pre> | + | |
- | + | ||
- | h1. Примечания | + | |
- | + | ||
- | 1) Для хеширования строки подписи используется алгоритм SHA1 | + | |
- | 2) Методы запросов: | ||
- | | Запрос | метод | | ||
- | | check | POST | | ||
- | | pay | POST | | ||
- | | state | GET | | ||
- | | rate | GET | | ||
- | | Создание купона | POST | | ||
- | | Получение купона | GET | | ||
- | | Удаление купона | DELETE | |