Общие сведения
Это старая версия API. Переходите на новую версию API.
Аутентификация запросов
Запросы необходимо передавать по защищенному протоколу (https). Базовый адрес сервиса https://paymaster.ru
Все запросы выполняются от имени пользователей созданных со способом входа "Автоматический доступ". Пользователям должна быть назначена роль Операционист (получение статуса платежа и списка платежей) или Бухгалтер (Операционист + возврат платежа + список возвратов + подтверждение и отмена холдов). Все запросы должны обязательно содержать три поля: login, nonce и hash, посредством которых осуществляется аутентификация запросов:
- login - логин пользователя. Этот логин не может использоваться для входа в личный кабинет: только для аутентификации REST-запросов.
- password - пароль пользователя.
- nonce - одноразовый тикет запроса. Это произвольная строка не более, чем из 255 символов, не содержащая символа ‘;’. Вам следует генерировать одноразовый тикет для каждого запроса. Это сделано для того, чтобы злоумышленник, даже перехватив однажды запрос, не смог его повторить.
- hash - хеш полей запроса. В описании каждого запроса указано, какие поля подлежат хешированию. Значения этих полей записываются в одну строчку через точку с запятой, затем от полученной UTF8-строки считается SHA1-хеш, который кодируется base64. Если опциональный параметр не передается в запросе, но участвует в формировании хеша, то в хеш нужно вставлять вместо него пустую строку. PHP код формирования хеша: $hash = base64_encode(sha1($str, true)), где $str - строка параметров.
Если подпись запроса (hash) сформирована неверно, PayMaster возвращает код ошибки -7 (см. Коды ошибок).
Обратите внимание, что при формировании GET-строки запроса все параметры (особенно это касается hash) следует URL-кодировать!
Формат ответа
Пример ответа:
{
"ErrorCode": 0,
"Payment": {
"PaymentID": 1,
"SiteInvoiceID": "12345",
"SiteID": 1,
"CurrencyCode": "RUB",
"Amount": 100,
"PaymentCurrencyCode": "RUB",
"PaymentAmount": 100,
"State": "COMPLETE",
"IsTestPayment": false,
"LastUpdateTime": "2013-05-22T18:08:52"
}
}
В ответ на запрос PayMaster всегда выдает HTTP-код 200. Если выдается другой код, то произошла ошибка на сервере при разборе запроса. Ответы PayMaster выдает в формате JSON.
Все ответы содержат числовое поле ErrorCode, равное коду ошибки запроса (см. Коды ошибок). Параметры ответов на запросы могут быть расширены, с внесением соответствующих изменений в документацию. Пишите обработку ответов с учетом того, что вам могут прийти дополнительные поля.
Проверка платежа
Проверка по идентификатору платежа
Пример запроса:
GET /api/v1/getpayment?login=TestLogin&nonce=74DF1SM&hash=***&paymentid=1 HTTP/1.1
Host: paymaster.ru
Пример ответа:
{
"ErrorCode": 0,
"Payment": {
"PaymentID": 1,
"SiteInvoiceID": "12345",
"SiteID": 1,
"CurrencyCode": "RUB",
"Amount": 100,
"PaymentMethod": "BankCard",
"PaymentCurrencyCode": "RUB",
"PaymentAmount": 100,
"State": "COMPLETE",
"Purpose": "Оплата по заказу №12345",
"IsTestPayment": false,
"LastUpdateTime": "2017-05-22T18:08:52",
"ErrorCode": 0
}
}
GET /api/v1/getPayment
Этот запрос используется для получения информации о платеже по его номеру в системе PayMaster.
Параметры запроса
Имя | Описание |
paymentID | Идентификатор платежа в системе PayMaster (поле LMI_SYS_PAYMENT_ID) |
Хешируемые параметры: login;password;nonce;paymentID
Параметры ответа
Имя | Описание |
State | Cостояние платежа см. Список состояний платежа |
ErrorCode | Код причины отказа см. Коды ошибок |
Amount | Cумма счета |
CurrencyCode | 3-буквенный ISO код валюты |
IsTestPayment | Признак тестового платежа (платеж совершен в тестовом режиме) |
LastUpdate (LastUpdateTime для JSON) | Время последнего обновления статуса. Для завершенных платежей - время завершения платежа |
PaymentAmount | Cумма оплаты |
PaymentCurrencyCode | Валюта оплаты |
PaymentID | Идентификатор платежа |
PaymentMethod | Способ оплаты |
Purpose | Примечание к платежу |
SiteID | Идентификатор сайта - получателя платежа |
SiteInvoiceID | Номер счета (параметр LMI_PAYMENT_NO) |
UserIdentifier | Идентификатор пользователя в платежной системе |
UserPhoneNumber | Номер телефона плательщика |
Проверка по номеру счета
Пример запроса:
GET /api/v1/getpaymentbyinvoiceid?login=TestLogin&nonce=74DF1SM&hash=***&invoiceid=1&siteAlias=yyy HTTP/1.1
Host: paymaster.ru
Пример ответа:
{
"ErrorCode": 0,
"Payment": {
"PaymentID": 1,
"SiteInvoiceID": "12345",
"SiteID": 1,
"CurrencyCode": "RUB",
"Amount": 100,
"PaymentMethod": "BankCard",
"PaymentCurrencyCode": "RUB",
"PaymentAmount": 100,
"State": "COMPLETE",
"Purpose": "Оплата по заказу №12345",
"IsTestPayment": false,
"LastUpdateTime": "2017-05-22T18:08:52"
}
}
GET /api/v1/getPaymentByInvoiceID
Этот запрос используется для получения информации о платеже по его номеру в системе учета продавца.
Параметры запроса
Имя | Описание |
invoiceID | Номер счета (поле LMI_PAYMENT_NO) |
siteAlias | Идентификатор сайта (поле LMI_MERCHANT_ID) |
Хешируемые параметры: login;password;nonce;invoiceID;siteAlias
Параметры ответа
См. Детали платежа
Получение списка платежей
Пример запроса:
GET /api/v1/listpaymentsfilter?login=TestLogin&nonce=74DF1SM&hash=***&periodFrom=2011-12-01 HTTP/1.1
Host: paymaster.ru
Пример ответа:
{
"ErrorCode": 0,
"Response": {
"Overflow": false,
"Payments": [{
"PaymentID": 1,
"SiteInvoiceID": "12345",
"SiteID": 1,
"CurrencyCode": "RUB",
"Amount": 100,
"PaymentMethod": "BankCard",
"PaymentCurrencyCode": "RUB",
"PaymentAmount": 100,
"State": "COMPLETE",
"Purpose": "Оплата по заказу №12345",
"IsTestPayment": false,
"LastUpdateTime": "2017-05-22T18:08:52"
}, {
"PaymentID": 2,
"SiteInvoiceID": "12346",
"SiteID": 1,
"CurrencyCode": "RUB",
"Amount": 100,
"PaymentMethod": "BankCard",
"PaymentCurrencyCode": "RUB",
"PaymentAmount": 100,
"State": "COMPLETE",
"Purpose": "Оплата по заказу №12346",
"IsTestPayment": false,
"LastUpdateTime": "2017-05-22T18:08:52"
}
]
}
}
GET /api/v1/listPaymentsFilter
Этот запрос используется для получения списка платежей, удовлетворяющих условиям поиска.
Параметры запроса
Имя | Описание |
accountID | номер учетной записи в системе PayMaster. Его можно узнать из URL страницы "Учетная запись" в личном кабинете. Параметр accountID можно не указывать, если у вас всего одна учетная запись |
siteAlias | идентификатор сайта (LMI_MERCHANT_ID). Если указан, то будут возвращены только платежи данного сайта |
periodFrom | начало периода (yyyy-MM-dd), часовой пояс UTC. Если указан, то будут возвращены платежи только после указанной даты |
periodTo | конец периода (yyyy-MM-dd), часовой пояс UTC. Если указан, то будут возвращены платежи только до указанной даты |
invoiceID | номер счета. Если указан, то будут возвращены платежи только с таким номером счета |
state | Состояние платежа. Если указано, то будут возвращены только платежи с указанным состоянием |
Хешируемые параметры: login;password;nonce;accountID;siteAlias;periodFrom;periodTo;invoiceID;state
Параметры ответа
Имя | Описание |
Overflow | "true", если в ответе приведены не все платежи, удовлетворяющие фильтру. Если вам нужны все платежи, сузьте область поиска |
Payments | Список платежей (см. Детали платежа) |
Возвраты
Возврат платежа
Пример запроса:
POST /api/v1/refundPayment HTTP/1.1
Host: paymaster.ru
Content-Type: application/x-www-form-urlencoded
login=TestLogin&nonce=74DF1SM&hash=***&paymentID=131212&amount=23.10
Пример ответа:
{
"ErrorCode": 0,
"Refund": {
"RefundID": 1073969831,
"ExternalID": null,
"PaymentID": 131212,
"Amount": 23.10,
"ErrorCode": null,
"ErrorDesc": null,
"State": "EXECUTING"
}
}
POST /api/v1/refundPayment
Этот запрос используется для осуществления возврата по платежу.
Параметры запроса
Имя | Описание |
paymentID | Идентификатор платежа в системе PayMaster |
amount | Сумма возврата |
externalID | Идентификатор возврата в системе продавца, не обязательный (допускается не уникальное значение) |
При использовании онлайн-кассы дополнительно передаются параметры по чеку возврата.
Имя | Описание |
shoppingcart.items[n].name | Наименование позиции в чеке |
shoppingcart.items[n].qty | Кол-во товара |
shoppingcart.items[n].price | Стоимость одной единицы |
shoppingcart.items[n].tax | Ставка НДС |
Хешируемые параметры: login;password;nonce;paymentID;amount;externalID
Параметры ответа
Имя | Описание |
ExternalID | Идентификатор операции возврата |
PaymentID | Идентификатор платежа |
Status | Статус возврата, см. Список состояний возврата |
Amount | Сумма возврата |
ErrorCode | Код ошибки, если возврат неуспешен (может отсутствовать) |
ErrorDesc | Текстовое описание ошибки. Описание также может отсутствовать, если конкретная причина отказа неизвестна. |
Получение списка возвратов
Пример запроса:
GET /api/v1/listRefunds?login=TestLogin&nonce=74DF1SM&hash=***&paymentID=131212&periodFrom=2017-01-01&periodTo=2017-11-11 HTTP/1.1
Host: paymaster.ru
Пример ответа:
{
"ErrorCode": 0,
"Response": {
"Overflow": false,
"Refunds": [{
"RefundID": 1234,
"ExternalID": null,
"PaymentID": 12345,
"Amount": 10.2,
"ErrorCode": null,
"ErrorDesc": null,
"LastUpdate": "2017-04-17T23:12:02",
"State": "SUCCESS"
}, {
"RefundID": 1236,
"ExternalID": null,
"PaymentID": 12346,
"Amount": 120,
"ErrorCode": -15,
"ErrorDesc": "we’ve been waiting for too long time",
"LastUpdate": "2017-04-17T12:15:02",
"State": "FAILURE"
}
]
}
}
GET /api/v1/listRefunds
Этот запрос используется для получения списка возвратов за период.
Параметры запроса
Имя | Описание |
accountID | Номер учетной записи в системе PayMaster |
paymentID | Идентификатор платежа. Если присутствует, то выводятся возвраты только по этому платежу |
periodFrom | Начало периода (yyyy-mm-dd). Если отсутствует, то ограничения снизу нет |
periodTo | Конец периода, включительно (yyyy-mm-dd). Если отсутствует, то ограничения сверху нет |
externalID | Идентификатор возврата в системе продавца, не обязательный |
Хешируемые параметры: login;password;nonce;accountID;paymentID;periodFrom;periodTo;externalID
При этом, если параметр отсутствует, то в хешируемую строку вставляется пустая строка (т.е. будут две подряд точки с запятыми).
Параметры ответа
Имя | Описание |
ErrorCode | Код ошибки запроса (см. Коды ошибок) |
Overflow | true, если выдан не весь список возвратов. В этом случае следует указать более узкий диапазон для поиска |
Refunds | Список возвратов. Каждый объект - такой же, как и объект Response первого запроса |
Холды
Подтверждение платежа
Пример запроса:
POST /api/v1/ConfirmPayment HTTP/1.1
Host: paymaster.ru
Content-Type: application/x-www-form-urlencoded
login=TestLogin&nonce=74DF1SM&hash=***&paymentID=1232&amount=11
Пример ответа:
{
"ErrorCode": 0,
"Payment": {
"PaymentID": 1,
"SiteInvoiceID": "12345",
"SiteID": 1,
"CurrencyCode": "RUB",
"Amount": 100,
"PaymentMethod": "BankCard",
"PaymentCurrencyCode": "RUB",
"PaymentAmount": 100,
"State": "COMPLETE",
"Purpose": "Оплата по заказу №12345",
"IsTestPayment": false,
"LastUpdateTime": "2017-05-22T18:08:52"
}
}
POST /api/v1/confirmPayment
Этот метод используется для завершения платежа, по которому были холдированы средства. В некоторых случаях возможно указать для списания меньшую (чем сумма холда) сумму.
Параметры запроса
Имя | Описание |
paymentID | Идентификатор платежа в системе PayMaster (поле LMI_SYS_PAYMENT_ID) |
amount | Реальная сумма списания |
Хешируемые параметры: login;password;nonce;paymentID;amount
Отмена платежа
Пример запроса:
POST /api/v1/CancelPayment HTTP/1.1
Host: paymaster.ru
Content-Type: application/x-www-form-urlencoded
login=TestLogin&nonce=74DF1SM&hash=***&paymentID=1232&error=-8
Пример ответа:
{
"ErrorCode": 0,
"Payment": {
"PaymentID": 1,
"SiteInvoiceID": "12345",
"SiteID": 1,
"CurrencyCode": "RUB",
"Amount": 100,
"PaymentMethod": "BankCard",
"PaymentCurrencyCode": "RUB",
"PaymentAmount": 100,
"State": "COMPLETE",
"Purpose": "Оплата по заказу №12345",
"IsTestPayment": false,
"LastUpdateTime": "2017-05-22T18:08:52"
}
}
POST /api/v1/cancelPayment
Этот запрос используется для отмены холда и разблокирования средств плательщика.
Параметры запроса
Имя | Описание |
paymentID | Идентификатор платежа в системе PayMaster (поле LMI_SYS_PAYMENT_ID) |
error | Опциональный параметр. Код ошибки из списка Коды ошибок |
Хешируемые параметры: login;password;nonce;paymentID;error
Документы и выплаты
Список документов
Пример запроса:
GET /api/v1/listDocuments?login=TestLogin&nonce=74DF1SM&hash=***&accountID=123&periodFrom=2005-02-17&periodTo=2013-06-17&xml=1 HTTP/1.1
Host: paymaster.ru
Пример ответа:
<RestController.RestResponse xmlns="http://schemas.datacontract.org/2004/07/PaymasterBackoffice.Controllers"xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCode>
0
</ErrorCode>
<Response xmlns:a="http://schemas.datacontract.org/2004/07/PaymasterBackoffice.Models.REST"i:type="a:RestDocumentList">
<a:Documents>
<a:RestDocumentInfo>
<a:Created>
2013-06-17T12:57:03.6470638Z
</a:Created>
<a:Description>
Акт выполненных работ за Март 2012 г
</a:Description>
<a:DocumentID>
123456
</a:DocumentID>
<a:FileName>
act_052012.xls
</a:FileName>
</a:RestDocumentInfo>
<a:RestDocumentInfo>
<a:Created>
2013-06-17T12:57:03.6470638Z
</a:Created>
<a:Description>
Invoice #1123 for 05/2012
</a:Description>
<a:DocumentID>
123456
</a:DocumentID>
<a:FileName>
doc_052012.xls
</a:FileName>
</a:RestDocumentInfo>
</a:Documents>
</Response>
</RestController.RestResponse>
GET /api/v1/listDocuments
Этот запрос используется для получения списка документов за период.
Параметры запроса
Имя | Описание |
accountID | Номер учетной записи в системе PayMaster. Его можно узнать из URL страницы "Учетная запись" в личном кабинете |
periodFrom | Начало периода (yyyy-MM-dd), часовой пояс UTC. Если указан, то будут возвращены документы, созданные только после указанной даты |
periodTo | Конец периода (yyyy-MM-dd), часовой пояс UTC. Если указан, то будут возвращены документы, созданные только до указанной даты |
Хешируемые параметры: login;password;nonce;accountID;periodFrom;periodTo
Параметры ответа
Имя | Описание |
Created | Дата создания документа |
Description | Описание документа |
DocumentID | Идентификатор для выгрузки содержимого |
FileName | Имя файла |
Скачивание документа
Пример запроса:
GET /api/v1/getDocumentContent?login=TestLogin&nonce=74DF1SM&hash=***&documentID=123456 HTTP/1.1
Host: paymaster.ru
GET /api/v1/getDocumentContent
Этот запрос используется для скачивания документа по его идентификатору. В ответe выдается содержимое документа.
Парметры запроса
Имя | Описание |
documentID | Идентификатор документа |
Хешируемые параметры: login;password;nonce;documentID
Получение списка выплат
Пример запроса:
GET /api/v1/listTransfers?login=TestLogin&nonce=74DF1SM&hash=***&accountID=123&periodFrom=2005-02-17&periodTo=2013-06-17&xml=1 HTTP/1.1
Host: paymaster.ru
Пример ответа:
<RestController.RestResponse xmlns="http://schemas.datacontract.org/2004/07/PaymasterBackoffice.Controllers" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCode>
0
</ErrorCode>
<Response xmlns:a="http://schemas.datacontract.org/2004/07/PaymasterBackoffice.Models.REST" i:type="a:RestTransferList">
<a:Transfers>
<a:RestTransferInfo>
<a:Created>
2017-09-04T09:36:29.186576Z
</a:Created>
<a:CurrencyCode>
RUB
</a:CurrencyCode>
<a:PaymentOrderID>
11223/4
</a:PaymentOrderID>
<a:RegisterID>
54
</a:RegisterID>
<a:TransferAmount>
101150.00
</a:TransferAmount>
</a:RestTransferInfo>
<a:RestTransferInfo>
<a:Created>
2017-09-04T09:36:29.186576Z
</a:Created>
<a:CurrencyCode>
RUB
</a:CurrencyCode>
<a:PaymentOrderID>
11223/5
</a:PaymentOrderID>
<a:RegisterID>
55
</a:RegisterID>
<a:TransferAmount>
20000.00
</a:TransferAmount>
</a:RestTransferInfo>
</a:Transfers>
</Response>
</RestController.RestResponse>
GET /api/v1/listTransfers
Этот запрос используется для получения списка выплат за указанный период.
Параметры запроса
Имя | Описание |
accountID | Номер учетной записи в системе PayMaster. Его можно узнать из URL страницы "Учетная запись" в личном кабинете |
periodFrom | Начало периода (yyyy-MM-dd), часовой пояс UTC |
periodTo | Начало периода (yyyy-MM-dd), часовой пояс UTC |
Хешируемые параметры: login;password;nonce;accountID;periodFrom;periodTo
Параметры ответа
Имя | Описание |
Created | Дата совершения выплаты |
CurrencyCode | Код валюты выплаты |
TransferAmount | Сумма перечисления |
PaymentOrderID | Номер платежного поручения |
RegisterID | Идентификатор реестра |
Выгрузка реестра по выплате
Пример запроса:
GET /api/v1/getTransferRegister?login=TestLogin&nonce=74DF1SM&hash=***®isterID=123&xml=1 HTTP/1.1
Host: paymaster.ru
Пример ответа:
<RestController.RestResponse xmlns="http://schemas.datacontract.org/2004/07/PaymasterBackoffice.Controllers" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCode>
0
</ErrorCode>
<Response xmlns:a="http://schemas.datacontract.org/2004/07/PaymasterBackoffice.Models.REST" i:type="a:RestRegisterInfo">
<a:Operations>
<a:RestRegisterOperationInfo>
<a:CurrencyCode>
RUB
</a:CurrencyCode>
<a:InvoiceID>
SO223
</a:InvoiceID>
<a:OperationAmount>
1000.00
</a:OperationAmount>
<a:OperationID>
11022
</a:OperationID>
<a:Stamp>
2017-09-04T00:00:00Z
</a:Stamp>
<a:TransferAmount>
998.00
</a:TransferAmount>
</a:RestRegisterOperationInfo>
<a:RestRegisterOperationInfo>
<a:CurrencyCode>
RUB
</a:CurrencyCode>
<a:InvoiceID>
SO224
</a:InvoiceID>
<a:OperationAmount>
1500.00
</a:OperationAmount>
<a:OperationID>
11027
</a:OperationID>
<a:Stamp>
2017-09-04T00:00:00Z
</a:Stamp>
<a:TransferAmount>
1497.00
</a:TransferAmount>
</a:RestRegisterOperationInfo>
</a:Operations>
<a:PeriodFrom>
2017-09-03T00:00:00Z
</a:PeriodFrom>
<a:PeriodTo>
2017-09-04T00:00:00Z
</a:PeriodTo>
<a:RegisterID>
54
</a:RegisterID>
<a:RegisterNumber>
540/44
</a:RegisterNumber>
</Response>
</RestController.RestResponse>
GET /api/v1/getTransferRegister
Этот запрос используется для получения реестра, по которому проведена выплата средств.
Параметры запроса
Имя | Описание |
registerID | Идентификатор реестра. |
Хешируемые параметры: login;password;nonce;registerID
Параметры ответа
Имя | Описание |
PeriodFrom | Начало периода |
PeriodTo | Конец периода |
RegisterNumber | Номер реестра |
Operations | Список платежей и возвратов по реестру |
OperationID | Идентификатор операции |
InvoiceID | Номер счета мерчанта |
Stamp | Дата операции |
CurrencyCode | Код валюты операции |
OperationAmount | Сумма операции |
TransferAmount | Сумма выплаты по операции |
Справочники
Коды ошибок
Возможные значения поля ErrorCode ответа от PayMaster:
Код | Описание |
-1 | Неизвестная ошибка. Сбой в системе PayMaster. Если ошибка повторяется, обратитесь в техподдержку |
-2 | Сетевая ошибка. Сбой в системе PayMaster. Если ошибка повторяется, обратитесь в техподдержку |
-6 | Нет доступа. Неверно указан логин, или у данного логина нет прав на запрошенную информацию |
-7 | Неверная подпись запроса. Неверно сформирован хеш запроса |
-8 | Платеж отклонен продавцом на этапе предзапроса. |
-9 | Истек срок действия счета |
-10 | Платеж отклонен платежной системой |
-13 | Платеж не найден по номеру счета |
-14 | Повторный запрос с тем же nonce |
-15 | Срок жизни платежа истек, и платеж отменен |
-17 | Пользователь отказался от оплаты |
-18 | Неверное значение суммы (в случае возвратов имеется в виду значение amount) |
-19 | У пользователя недостаточно средств для оплаты |
-22 | Не удалось авторизоваться в платежной системе |
-25 | 3D Secure авторизация не пройдена |
-26 | Неверный номер карты |
-27 | Истек срок действия карты |
-28 | Карта блокировна |
-29 | Превышен лимит по сумме платежа |
-30 | Превышен лимит по количеству платежей |
-31 | Недопустимая операция по карте |
Статусы состояния платежа
Имя | Описание |
INITIATED | Платеж начат |
PROCESSING | Платеж проводится |
COMPLETE | Платеж завершен успешно |
CANCELLED | Платеж завершен неуспешно |
HOLD | Средства захолдированы |
Статусы состояния возврата
Имя | Описание |
PENDING | Поставлен в очередь на совершение операции возврата |
EXECUTING | Проведение транзакции возврата платежа |
SUCCESS | Возврат средств успешно завершен |
FAILURE | Возврат средств не осуществлен |