API 2.0

API построено на REST архитектуре. JSON возвращается в ответ на все запросы к API, в том числе и при возникновении ошибок. Имеет предсказуемые, ресурсо-ориентированные URL-адреса, использует HTTP-коды для передачи состояния ошибок, а также использует встроенные функции HTTP-аутентификации и методы GET, POST, PUT, DELETE.

Запросы от OnPay к сайту мерчанта

Check

Для check запроса используются параметры:

Название	Тип	Описание
type	string	Тип запроса (check)
expired_at	string	Cрок действия ордера в формате «CCYY-MM-DDThh:mm:ssTZD» где TZD смещение часового пояса в формате [+-]hh:mm
pay_for	string	Номер заказа
amount	bigint	Сумма платежа в центах, если параметр mode = free, то будет передан 0
way	string	Валюта платежа
mode	string	Тип платежа, fix или free
signature	string	Контрольная подпись, строка для построения «check;pay_for;amount;way;mode;api_key»

Пример запроса:

<pre><code class="json">{
"type":"check",
"pay_for":"55446",
"expired_at":"2014-02-03T18:43:21+04:00"
"amount":50000,
"way":"RUR",
"mode":"fix",
"signature":"82f67760dbc5331963b7e00bc6df77f1"
}</code></pre>

Ответ мерчанта

Название	Тип	Описание
code	int	Код ответа, 0 для подтверждения, 1 для отказа.
type	string	Тип запроса (check)
pay_for	string	Номер заказа
signature	string	Контрольная подпись, строка для построения «code;pay_for;api_key»

Пример:

<pre><code class="json">
{
"code":0,
"type":"check",
"pay_for":"55446",
"signature":"172de16ada92791b3753b3121d471f5c"
}
</code></pre>

Pay

Для pay запроса используются параметры:

Название	Тип	Описание
type	string	Тип запроса (pay)
signature	string	Контрольная подпись, строка для построения «pay;pay_for;payment.amount;payment.way;balance.amount;balance.way;api_key»
pay_for	string	Номер заказа
user.email	string	E-mail плательщика
user.phone	string	Телефон плательщика
user.note	string	Комментарий плательщика
payment.id	int	Номер платежа
payment.date_time	string	Дата создания платежа в формате «CCYY-MM-DDThh:mm:ssTZD» где TZD смещение часового пояса в формате [+-]hh:mm
payment.amount	bigint	Сумма платежа
payment.way	string	Валюта платежа
payment.rate	bigint	Курс обмена между валютами balance.way/payment.way
payment.release_at	string	Время зачисления платежа, для отложенных платежей строиться аналогично payment.date_time, null если уже зачислен
balance.amount	bigint	Сумма, зачисляемая на баланс
balance.way	string	Валюта зачисления на баланс
order.from_amount	float	Сумма из ордера, которую должен был заплатить плательщик
order.from_way	string	Валюта из ордера, в которой должен был заплатить плательщик
order.to_amount	float	Сумма из ордера, которая должна была поступить на баланс магазина
order.to_way	string	Валюта из ордера, в которой должен был пополниться баланс магазина
receipt	json	Содержит информацию о списке покупок в чеке
receipt.items	array	Список товаров в чеке
receipt.items.name	string	Название товара
receipt.items.price	float	Цена за единицу товара
receipt.items.quantity	float	Количество
receipt.sum	float	Сумма чека

Пример запроса:

{
"type": "pay",
"pay_for": "55446",
"signature": "82f67760dbc5331963b7e00bc6df77f1",
"user": {
"email": "mail@mail.ru",
"phone": "9631478946",
"note": ""
},
"payment": {
"id": 7121064,
"date_time": "2013-12-05T12:07:09+04:00",
"amount": 10200,
"way": "USD",
"rate": 33121445,
"release_at": null
},
"balance": {
"amount": 3378.39,
"way": "RUR"
},
"order": {
"from_amount": 102.00,
"from_way": "USD",
"to_amount": 3378.39,
"to_way": "RUR"
},
"receipt": {
"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	int	Код ответа, 0 для подтверждения, 1 для отказа(отказ не является отказом от платежа, а лишь информацией о том, что мерчант не знает о таком платеже, при этом у платежа проставится статус как «не было уведомления», и мерчант сможет активировать его вручную в личном кабинете, если такой платеж в действительности имеет место быть).
type	string	Тип запроса (pay)
pay_for	string	Номер заказа
signature	string	Контрольная подпись, строка для построения «code;pay_for;api_key»

Пример:

{
"code": 0,
"type": "pay",
"pay_for": "55446",
"signature": "172de16ada92791b3753b3121d471f5c"
}

Запросы от мерчанта к OnPay

Получить данные платежа

адрес - json_interfaces/payments/:id, где id - номер платежа в системе OnPay

Используется для получения данных о прошедшем платеже. HTTP метод - GET. Используемые параметры:

Название	Тип	Описание
login	string	Логин сайта
signature	string	Контрольная подпись «id;login;api_key»

Пример запроса:

<pre><code class="json">
{
"login":"onpay",
"signature":"1d15f90df20da53d7206e9f7db7d2c9d"
}
</code></pre>

В ответ будет выдан JSON с данными:

Название	Тип	Описание
signature	string	Контрольная подпись «payment.id;payment.amount;payment.way;balance.amount;balance.way;api_key»
user.email	string	E-mail плательщика
user.phone	string	Телефон плательщика
user.note	string	Комментарий плательщика
payment.id	int	Номер платежа
payment.date_time	string	Дата создания платежа в формате «CCYY-MM-DDThh:mm:ssTZD» где TZD смещение часового пояса в формате [+-]hh:mm
payment.amount	bigint	Сумма платежа
payment.way	string	Валюта платежа
payment.rate	bigint	Курс обмена между валютами balance.way/payment.way
payment.release_at	string	Время зачисления платежа, для отложенных платежей строиться аналогично payment.date_time, null если зачислен мгновенно
balance.amount	bigint	Сумма, зачисляемая на баланс
balance.way	string	Валюта зачисления на баланс

Пример ответа:

<pre><code class="json">
{
"signature":"172de16ada92791b3753b3121d471f5c",
"user":{
"email":"mail@mail.ru",
"phone":"9631478946",
"note":""
},
"payment":{
"id":"7121064",
"date_time":"2013-12-05T12:07:09+04:00",
"amount":10200,
"way":"USD",
"rate":33121445,
"release_at":null
},
"balance":{
"amount":"3300",
"way":"RUR"
}
}
</pre></code>

Получить курс обмена

адрес - json_interfaces/rates/:from/to/:to, где from и to - валюта из и валюта назначения соответственно

Используется для получения текущего курса валют

Название	Тип	Описание
login	string	Логин сайта
signature	string	Контрольная подпись «login;from;to;api_key»

Пример запроса:

<pre><code class="json">
{
"login":"onpay",
"signature":"65ded5353c5ee48d0b7d48c591b8f430"
}</code></pre>

В ответ будет выдан JSON с данными:

Название	Тип	Описание
from	string	Валюта из
to	string	Валюта назначения
rate	bigint	значение курса * 10e6
signature	string	Контрольная подпись «from;to;rate;api_key»

Пример ответа:

<pre><code class="json">
{
"from":"USD",
"to":"RUR",
"rate":33121445
"signature":"4671aeaf49c792689533b00664a5c3ef"
}
</code></pre>