Перейти к содержанию

Руководство разработчика PartnerApi

1 Комментарии для разработчиков

Все запросы к API протоколируются на серверах ООО "Сквозные решения".

Все запросы отправляются в API по HTTPS POST по защищенному каналу (ГОСТ 2012) с защитой передачи персональных данных физических лиц. Формат данных запросов: application/xml или application/json-patch+json.

Оплата проводится в 2 этапа. Сначала создается Сделка, в которой будут указаны сведения о получателе Оплаты и товаре, затем проводится Оплата по данной Сделке.

2 Использование API

Для получения доступа к использованию автоматизированной системе учета металла (далее по тексту – АСУ-Мет) и Partner АСУ-Мет необходимо подать заявку в ООО “Сквозные решения” через своего персонального менеджера. После согласования заявки на присоединение к АСУ-Мет Ваш персональный менеджер предоставит Вам следующие данные:

1) Логин и пароль к веб-интерфейсу АСУ-Мет, где для Вас будет заведен профиль Вашей организации и ваши ТТ;

2) ApiKey - ключ для доступа к API.

После получения этих данных Вы должны:

  • зайти в АСУ-Мет, используя свои логин и пароль, и завести в список сотрудников Вашей организации,
  • задать связку сотрудников, которые будут выполнять операции по оплате сделок по приему сырья (товаров, оказании услуг), с ТТ,
  • заполнить в карточках сотрудников идентификаторы сотрудников в Вашей БД (XML-идентификатор обмена с Вашей БД), чтобы в дальнейшем отправлять все запросы к Partner API от имени Ваших сотрудников, используя логин АСУ-Мет.

Более подробно о работе с веб-интерфейсом АСУ-Мет можно ознакомиться в Руководстве пользователя АСУ-Мет. После выполнения предыдущих шагов Вы можете начинать интеграцию АСУ-Мет с Вашей БД.

3 Авторизация

Каждый запрос к API сопровождается авторизационной информацией. Авторизация в API идет в заголовке запроса Authorization. В заголовок помещается строка вида: Basic LiceneeId:ApiKey:UserLogin:UserPass, где

  • LiceneeId - идентификатор партнера (GUID, 36 символов);

  • ApiKey - ключ партнера (GUID, 36 символов);

  • UserLogin - логин пользователя АСУ-Мет (номер телефона, в формате 79ХХХХХХХХХ - 11 символов);

  • UserPass: пароль пользователя АСУ-Мет (латинские буквы и цифры, максимум 8 символов).

В случае неуспешной авторизации API выдает 401 ошибку (код статуса ответа 401 Unauthorized).

Авторизация по временному паролю недоступна. Временный пароль изменяется только в личном кабинете cabinet.pay2b.ru.

4 Методы

4.1 Создание сделки

Для стенда Цуз.РФ - Создание оплаты

Описание

Метод вносит в АСУ-Мет новую Сделку от имени авторизованного Оператора.

Метод отправляет на телефонный номер Оператора СМС с кодом подтверждения сделки.

Для проведения сделки необходимо выполнить запрос к Partner API на подтверждение проведения сделки.

Внимание!

АСУ-Мет может отправить только 3 СМС-подтверждения сделки, одно - данным методом, второе и третье методом “Отправка повторного СМС на подтверждение сделки”. Если все 3 СМС не дошли, были введены некорректно, АСУ-Мет заблокирует дальнейшие изменения в карточке сделки.

Для каждого типа выплаты существует свой "withdrawTypeId" - идентификатор, который необходимо передавать в составе запроса. Доступные для лицензиата типы выплат представлены в справочнике Получение списка доступных типов выплат.

Для клиентов РНКО "Единая касса" доступны только выплаты на карты и withdrawTypeId не передается.

В зависимости от типа выплаты (На карту или через СБП) в составе запроса необходимо передавать либо "cardNumber"- номер карты, либо "sbpBankId" - id банка участника системы быстрых платежей.

POST  /payment
{
    "externalId": "string",
    "withdrawTypeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", 
    "pzu": "string",
    "psa": {
        "number": "string",
        "date": "string",
        "scan": "string",
        "fileName": "string"
    },
    "client": {
        "surname": "string",
        "name": "string",
        "lastname": "string",
        "passportSerieNumber": "string",
        "cardNumber": "string",
        "sbpBankId": "string",
        "phone": "string",
        "birthday": "string",
        "birthplace": "string",
        "passportfrom": "string",
        "address": "string"
    },
    "products": {
        "product": [
            {
                "productId": "string",
                "clogging": 0,
                "price": 0,
                "grossWeight": 0,
                "tareWeight": 0,
                "weight": 0,
                "units": "string"
             }
        ],
    "summTotal": 0
    }
}
<Payment>
    <ExternalId>string</ExternalId>
    <WithdrawTypeId>3fa85f64-5717-4562-b3fc-2c963f66afa6</WithdrawTypeId>
    <Pzu>string</Pzu>
    <Psa>
        <Number>string</Number>
        <Date>string</Date>
        <Scan>string</Scan>
        <FileName>string</FileName>
    </Psa>
    <Client>
        <Surname>string</Surname>
        <Name>string</Name>
        <Lastname>string</Lastname>
        <PassportSerieNumber>string</PassportSerieNumber>
        <CardNumber>string</CardNumber>
        <SbpBankId>string</SbpBankId>
        <Phone>string</Phone>
        <Birthday>string</Birthday>
        <Birthplace>string</Birthplace>
        <Passportfrom>string</Passportfrom>
        <Address>string</Address>
    </Client>
    <Products>
        <Product>
            <ProductId>string</ProductId>
            <Clogging>0</Clogging>
            <Price>0</Price>
            <GrossWeight>0</GrossWeight>
            <TareWeight>0</TareWeight>
            <Weight>0</Weight>
            <Units>string</Units>
        </Product>
        <SummTotal>0</SummTotal>
    </Products>
</Payment>

В случае успеха создания сделки будет следующий ответ:

{
    "id": "string",
    "sum": 0,
    "date": "string"
}
<Payment>
    <Id>string</Id>
    <Sum>0</Sum>
    <Date>string</Date>
</Payment>

В случае ошибки в теле ответа возвращается текст ошибки:

  • ошибка с кодом 400 «Ошибки создания сделки»,
  • ошибка с кодом 422 «Ошибка отправки смс»
  • ошибка badrequest «Поле SummTotal должно быть формата ХХХХ.ХХ».
  • ошибка с кодом 409 «Сделка с указанным ExtrenalId: 9e6b3a66-cf63-4417-926e-29ca0b70a09d уже существует. Номер сделки: 123».
Параметр запроса Описание параметра запроса
ExternalID

Токен идемпотентности (GUID). Не является обязательным

Передается в случае если необходимо ограничить создание одной и той же сделки

Если переданное значение неуникально, возникнет ошибка и вернется ответ содержащий номер ранее созданной сделки

WithdrawTypeId Идентификатор типа выплаты из справочника Получение списка доступных типов выплат. Для получения используется метод GET /withdrawTypes

Для клиентов РНКО "Единая касса" withdrawTypeId не передается

Pzu ID Торговой точки, с которой оформляется Оплата
Psa Приемо-сдаточный акт
Psa:Number Номер ПСА
Psa:Date Дата ПСА Форматы: "dd.MM.yyyy", "dd.MM.yyyy HH:mm"
Psa: Scan

Скан ПСА в формате pdf, размером не более 800Кб.

Скан должен быть переведен в бинарный формат и упакован в base64

Client Все поля раздела Client являются обязательными
Client:Surname Фамилия клиента, физ. лица, принесшего сырье, товар Лицензиату
Client:Name Имя клиента
Client:Lastname

Отчество клиента

Если отчества нет, то указать “Нет”

Client:PassportSerieNumber

Серия и номер паспорта

Формат для паспортов РФ: “ХХ ХХ ХХХХХХ”, где первые 4 цифры - серия паспорта РФ, последние 6 - номер паспорта (Возможные форматы паспортов см. ниже)

Client:CardNumber

Номер карты, на которую клиенту зачисляются денежные средства

Формат: XXXXXXXXXXXXХXXX, т.е. 16 цифр карты без пробелов и прочих символов

Передается в случае выплаты на карту

Client:SbpBankId

Id банка участника СБП из справочника Получить список банков участников СБП. Для получения используется метод GET /sbp/members

Передается в случае выплаты через СБП

Client:Phone Номер телефона клиента (10 цифр) Формат: ХXXXXXXXXX
Client:Birtday Дата рождения клиента. Формат: дд.мм.гггг
Client:Birthplace Место рождения
Client:Passportfrom Кем выдан паспорт
Client:Address Прописка
Products Массив узлов Product
Product:ProductId ID категории из справочника Категории лома. Метод POST/categories. Например: A2
Product:Clogging

% засора сырья (товара), в пределах от 0 до 99, с шагом 0.01

Формат: дробная часть отделяется точкой

Product:Units

Единицы измерения.

Возможные варианты:

”gramm”- вес в граммах и цена в руб./гр;

”kilogramm” - вес в кг и цена в руб./кг;

“tonna” - вес в т и цена в руб./т.

Product:Price

Цена за единицу массы сырья (товара), руб. с шагом 0.01.

Формат: дробная часть отделяется точкой

Product:GrossWeight

Вес брутто сырья (товара), в соответствующих единицах измерения с шагом 0.001.

Формат: дробная часть отделяется точкой. Если значение не передано, то рассчитывается по формуле

Product:TareWeight

Вес тары, в соответствующих единицах измерения с шагом 0.001.

Формат: дробная часть отделяется точкой

Product:Weigh

Вес нетто сырья (товара), в соответствующих единицах с шагом 0.001

Формат: дробная часть отделяется точкой

Products:SummTotal

Итоговая сумма (поле необязательное)

В случае отправки данного поле расхождение с суммой, считаемой на основе product не должно превышать 10 копеек. Расчет суммы по строке по формуле: Цена * Вес нетто

Округление расчетной суммы платежа:

  • округление каждой позиции при создании сделки до 2 цифр после запятой, т.е. до целой копейки;
  • округление каждой позиции при расчете уже существующих сделок до 2 цифр после запятой, т.е. до целой копейки;
  • поле SummTotal должно быть формата ХХХХ.ХХ.
Параметр ответа Описание параметра ответа
Id

ID созданной Сделки, которую необходимо подтвердить СМС-кодом, обратившись к методу “Создание сделки (2-я стадия)” после выполнения данного метода

Если Status > 1, то данное поле будет пустое.

Date

Дата регистрации Сделки в АСУ-Мет

Формат: Unix Timestamp

Sum

Сумма оплаты, SummTotal из создания запроса, если оно не было указано то подсчитанная суммированием строк товарного раздела Products из запроса.

Расчет суммы по строке по формуле:

Цена * Вес нетто

Заполнение PassportSerieNumber :

Страна Формат данных Пример
Абхазия ABH [0-9]{2} [0-9]{6} ABH 01 010101
Азербайджан AZE [A-Za-z]{1}[0-9]{7,8} AZE x58303527
Армения ARM [A-Za-z]{1,2}[0-9]{6,7} ARM a4573826
Белоруссия BLR [A-Za-z]{2}[0-9]{7} BLR mp0000000
Грузия GEO [0-9]{2}[A-Za-z]{2}[0-9]{5} GEO 07AE65843
Казахстан

KAZ [N,S,D]{1}[0-9]{8},

KAZ [0-9]{9},

KAZ [0-9]{12}

KAZ N12345678,

KAZ 123456789,

KAZ 123456789012

Примечание! 1 из представленных вариантов

Киргизия KGZ [A-Za-z]{2}[0-9]{7} KGZ AC6504732
Латвия LVA [A-Za-z]{2}[0-9]{7} LVA LV7685946
Литва LTU [A-Za-z]{2}[0-9]{6} LTU LD654897
Молдавия MDA [A-Za-z]{2}[0-9]{7} MDA AA7229867
Россия RUS [0-9]{2} [0-9]{6} RUS 11 11 111111
Таджикистан TJK [0-9]{6,9} TJK 654897
Туркмения TKM [A-Za-z]{1}[0-9]{7} TKM A6594638
Узбекистан UZB [A-Za-z]{2}[0-9]{7} UZB CA7540943
Украина UKR [A-Za-z]{1}[0-9]{6} UKR D654897
Эстония EST C[0-9]{7} EST C0000001

Возможные ошибки при создании сделки

Ошибка Комментарий
1 Доступ запрещен В случае ошибок авторизации
2 Пользователь не может проводить оплаты на указанном ПЗУ Когда: в точках пользователя нет данной точки
3 Сделка с указанным ExtrenalId уже существует
4 Ошибки во входных параметрах. Нельзя указать дату ПСА выше текущей В случае, если дата ПСА указана в будущем времени
5 Ошибки во входных параметрах.Неверный формат даты скана ПСА Дата не соответвует допустимому формату
6 Необходимо указать продукты Не указан товар
7 Продукт не найден Указанного товара не существует в системе, проверьте доступные товары, см. справочник Категории лома
8 Продукт не активен Данный продукт был отключен для использования, обратитесь к технической поддержке для его активации
9 Ввод различных товаров запрещен
10 В соответствии с настройками вес не может быть применен
11 В соответствии с настройками процент засора не может быть применен
12 В соответствии с настройками должен быть указан только один продукт в товарном разделе
13 В соответствии с настройками товарный раздел не должен быть указан
14 Поле Сумма товарного раздела должно быть больше 0
15 Поле Вес товарного раздела должно быть больше 0
16 Не указаны паспортные данные
17 Неверный формат серии и номера паспорта Проверьте формат паспорта, см. справочник значений PassportSerieNumber
18 Оплата доступна только для карт банков РФ При оплате на иностранную карту из РФ
19 Лицо не достигло возраста 18 лет

4.2 Редактирование сделки

Для стенда Цуз.РФ - Редактирование оплаты

Описание

Метод позволяет редактировать созданную сделку.

Передаваемые параметры аналогичны параметрам создания сделки

POST /payment/edit/{id}
{
    "externalId": "string",
    "withdrawTypeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "pzu": "string",
    "psa": {
        "number": "string",
        "date": "string",
        "scan": "string",
        "fileName": "string"
    },
    "client": {
         "surname": "string",
         "name": "string",
         "lastname": "string",
         "passportSerieNumber": "string",
         "cardNumber": "string",
         "sbpBankId": "string",
         "phone": "string",
         "birthday": "string",
         "address": "string",
         "passportfrom": "string",
         "birthplace": "string"
    },
    "products": {
        "product": [
          {
            "productId": "string",
            "clogging": 0,
            "price": 0,
            "weight": 0,
            "units": "string"
           }
        ],
        "summTotal": 0
    },
    "dealNumber": 0
}
<Payment>
    <ExternalId>string</ExternalId>
    <WithdrawTypeId>3fa85f64-5717-4562-b3fc-2c963f66afa6</WithdrawTypeId>
    <Pzu>string</Pzu>
    <Psa>
        <Number>string</Number>
        <Date>string</Date>
        <Scan>string</Scan>
        <FileName>string</FileName>
    </Psa>
    <Client>
        <Surname>string</Surname>
        <Name>string</Name>
        <Lastname>string</Lastname>
        <PassportSerieNumber>string</PassportSerieNumber>
        <CardNumber>string</CardNumber>
        <SbpBankId>string</SbpBankId>
        <Phone>string</Phone>
        <Birthday>string</Birthday>
        <Birthplace>string</Birthplace>
        <Passportfrom>string</Passportfrom>
        <Address>string</Address>
    </Client>
    <Products>
        <Product>
            <ProductId>string</ProductId>
            <Clogging>0</Clogging>
            <Price>0</Price>
            <Weight>0</Weight>
            <Units>string</Units>
        </Product>
        <SummTotal>0</SummTotal>
    </Products>
</Payment>

В случае успеха изменения сделки будет ответ:

{
    "id": "string",
    "sum": 0,
    "date": "string"
}
<Payment>
    <Id>string</Id>
    <Sum>0</Sum>
    <Date>string</Date>
</Payment>

4.3 Отправка СМС с новым кодом подтверждения

Описание

Метод отправляет СМС-код подтверждения на мобильный телефон сотрудника, совершающего выплату, в случае, если необходимо повторно запросить код подтверждения.

Id - ID оплаты, полученной методом “Создание Сделки”.

POST /payment/sendsms
{
    "id": 0
}
<PaymentSendSms>
    <Id>0</Id>
</PaymentSendSms>

В случае успеха возвращается ответ с кодом 200.

4.4 Подтверждение оплаты по сделке

Для стенда Цуз.РФ - Подтверждение оплаты

Описание

Метод предназначен для подтверждения оплаты по созданой сделки.

Необходимо ввести код из смс или фиксированный код подтверждения. Смс с кодом подтверждения приходит автоматически при создании сделки, если не установлен фиксированный код.

В ответе на запрос возвращается статус сделки.

POST / paymentconfirm
{
    "id": 0,
    "smsCode": "string"
}
  <PaymentConfirm>
      <Id>0</Id>
      <SmsCode>string</SmsCode>
  </PaymentConfirm>

Тело ответа: В случае успеха возвращается ответ с кодом 200.

{
    "id": "string",
    "status": "string"
}
<Payment>
    <Id>string</Id>
    <Status>string</Status>
</Payment>
Параметр запроса Описание параметра запроса
id Номер сделки
smsCode Код подтверждения
Параметр ответа Описание параметра ответа
id Идентификатор сделки
status Статус сделки

4.5 Проверка статуса оплаты

Для стенда Цуз.РФ - Проверка статуса платежа

Описание

Метод позволяет получить статус оплаты

Id - Номер сделки, полученной методом “Создание Сделки”.

POST /checkpay/{id}

В случае успеха возвращается ответ с кодом 200.

{
    "id": 0,
    "status": "string",
    "paymentState": "string",
    "paymentStateDescription": "string",
    "paymentReason": "string"
}
<PaymentStatus>
    <Id>0</Id>
    <Status>string</Status>
    <PaymentState>string</PaymentState>
    <PaymentStateDescription>string</PaymentStateDescription>
    <PaymentReason>string</PaymentReason>
</PaymentStatus>
Параметр ответа Описание параметра запроса
Id ID сделки, полученной методом “Создание Сделки”
Status Статус сделки
PaymentState Статус оплаты (Ответ процессинга)
PaymentStateDescription Описание статуса оплаты
PaymentReason Описание ответа от процессинга

В случае ошибки в теле ответа возвращается текст ошибки.

1) Ошибка с кодом 400 «Ошибки во входных параметрах»:

{
    "message": "string",
    "fields": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
    }
}
<ErrorSerializator>
    <Message>string</Message>
    <Fields>
        <Field key="string" value="string" />
    </Fields>
</ErrorSerializator>

2) Ошибка с кодом 403 «Отказано в доступе».

3) Ошибка с кодом 404 «Оплата/лицензиат не найдены».

4) Ошибка с кодом 500 «Внутренняя ошибка»:

{
    "message": "string",
    "fields": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
    }
}
<ErrorSerializator>
    <Message>string</Message>
    <Fields>
        <Field key="string" value="string" />
    </Fields>
</ErrorSerializator>

4.6 Получение списка сотрудников

Описание

Метод позволяет получить список сотрудников лицензиата. Также в методе реализована пагинация и поиск по телефону или ФИО сотрудника.

POST /listemployees
{
    "recordsOnPage": 0,
    "page": 0,
    "query": "string",
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "pointsId": "string"
}
<Filter>
    <RecordsOnPage>0</RecordsOnPage>
    <Page>0</Page>
    <Query>string</Query>
    <Id>string</Id>
    <PointsId>string</PointsId>
<Filter>

В случае успеха возвращается ответ с кодом 200.

{
    "employer": [
     {
        "userId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "name": "string",
        "surname": "string",
        "middleName": "string",
        "phone": "string",
        "isActive": true,
        "createDate": "2023-09-29T15:13:30.016Z",
        "userPoint": [
        {
            "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "address": "string",
            "name": "string"
        }
        ],
        "userRole": [
         {
            "role": "string"
         }
        ]
     }
    ]
}
<ListEmployees>
    <Employee>
        <UserId>3fa85f64-5717-4562-b3fc-2c963f66afa6</UserId>
        <Name>string</Name>
        <Surname>string</Surname>
        <MiddleName>string</MiddleName>
        <Login>string</Login>
        <Phone>string</Phone>
        <IsActive>true</IsActive>
        <CreateDate>2024-04-10T08:30:42.065Z</CreateDate>
        <UserPoint>
            <Id>3fa85f64-5717-4562-b3fc-2c963f66afa6</Id>
            <Address>string</Address>
            <Name>string</Name>
        </UserPoint>
        <UserRole>
            <Role>string</Role>
        </UserRole>
    </Employee>
</ListEmployees>
Параметр запроса Описание параметра запроса
Page

Номер страницы

Если не задавать или 0, то первая страница с результатами

RecordsOnPage

Количество записей на страницу

Если не задавать или 0 - то все записи из БД будут в одном ответе

Id Отбор Сотрудника по Id
Query Полнотекстовый поиск Сотрудника по телефону, ФИО
PointsId

Отбор сотрудников по ID ТТ

Формат: ID1,ID2,ID3

Параметр ответа Описание параметра ответа
UserId ID Сотрудника
Name Имя Сотрудника
Surname Фамилия Сотрудника
MiddleName Отчество Сотрудника
Phone Телефон Сотрудника, он же логин
IsActive true или false
CreateDate

Дата создания карточки Сотрудника

Формат ГГГГ-ММ-ДДTЧЧ:ММ:СС.999999

UserPoint Если в UserPoint нет подчиненных узлов, значит сотрудник не привязан ни к одному ТТ.
UserPoint:Id ID ТТ, к которому привязан Сотрудник
UserPoint:Address Адрес ТТ
UserPoint:Name Представление ТТ
UserRole Массив узлов Role, содержащий роли Сотрудника.

4.7 Получение списка сделок

Описание

Метод возвращает список сделок с примененными фильтрами в массив PaymentsList узлов Payment. В узле Products столько узлов Product, сколько товарных позиций в документе Оплаты.

POST /listpayments 
{
    "recordsOnPage": 0,
    "page": 0,
    "dateFrom": "2023-09-29T15:43:42.349Z",
    "dateTo": "2023-09-29T15:43:42.349Z",
    "weightFrom": 0,
    "weightTo": 0,
    "summFrom": 0,
    "summTo": 0,
    "pzu": "string",
    "status": "All",
    "id": 0
}
<Filter>
    <RecordsOnPage>0</RecordsOnPage>
    <Page>0</Page>
    <DateFrom>2018-12-13T12:36:51.941Z</DateFrom>
    <DateTo>2018-12-13T12:36:51.941Z</DateTo>
    <WeightFrom>0</WeightFrom>
    <WeightTo>0</WeightTo>
    <SummFrom>0</SummFrom>
    <SummTo>0</SummTo>
    <Pzu>string</Pzu>
    <Status>0</Status>
    <Id>0</Id>
</Filter>

В случае успеха возвращается ответ с кодом 200.

{
    "payment": [
        {
          "id": "string",
          "externalId": "string",
          "date": "2023-09-29T15:43:42.350Z",
          "status": "string",
          "pzu": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "sumTotal": 0,
          "client": {
            "name": "string",
            "passport": "string",
            "passportCountry": "string",
            "cardNumber": "string",
            "phone": "string",
            "birthplace": "string",
            "passportfrom": "string",
            "address": "string",
            "sbpBankId": "string"
          },
          "products": [
                {
                    "productId": "string",
                    "quantity": 0,
                    "clogging": 0,
                    "price": 0,
                    "summ": 0,
                    "units": "string"
                }
          ],
          "withdrawTypeId": "976c6c2a-55e4-4010-b1ac-287d72b93136"
        }
    ],
    "page": 0,
    "pagesTotal": 0,
    "recordsOnPage": 0
}
<ListPayments>
    <Payment>
        <Id>string</Id>
        <ExternalId>string</ExternalId>
        <Date>2024-04-10T07:56:24.453Z</Date>
        <Status>string</Status>
        <Pzu>3fa85f64-5717-4562-b3fc-2c963f66afa6</Pzu>
        <SumTotal>0</SumTotal>
        <Client>
            <Name>string</Name>
            <Passport>string</Passport>
            <PassportCountry>string</PassportCountry>
            <CardNumber>string</CardNumber>
            <Phone>string</Phone>
            <Birthplace>string</Birthplace>
            <Passportfrom>string</Passportfrom>
            <Address>string</Address>
            <SbpBankId>string</SbpBankId>
        </Client>
        <Product>
            <ProductId>string</ProductId>
            <Quantity>0</Quantity>
            <Clogging>0</Clogging>
            <Price>0</Price>
            <Summ>0</Summ>
            <Units>string</Units>
        </Product>
        <WithdrawTypeId>string</WithdrawTypeId>
    </Payment>
    <Page>0</Page>
    <PagesTotal>0</PagesTotal>
    <RecordsOnPage>0</RecordsOnPage>
</ListPayments>

Таблица номеров статусов сделок, используемых для фильтрации по статусу

Id статуса Описание № для запроса
All Все 0
Completed Завершена 1
Rejected Отклонена 2
Wait В процессе выполнения 3
Accepting На согласовании 4
NoPay Не оплачена 5
PayError Ошибка оплаты 6
KycError Ошибка ломосдатчик числится в базе террористов 7

В случае ошибки с кодом 400 в теле ответа возвращается текст ошибки: «Ошибки получения сделок».

Параметр запроса Описание параметра запроса
Page Номер страницы.Если не задавать или 0, то первая страница с результатами.
RecordsOnPage Количество записей на страницу. Если не задавать или 0 - то все записи из БД будут в одном ответе.
Id Отбор по ID Сделки.
DateFrom DateTo

Отбор по диапазону дат Оплаты.

Формат даты: YYYY-MM-DDTHH:MM:SS.999999 или YYYY-MM-DD.

SummFrom SummTo Отбор по диапазону сумм Оплат.
WeightFrom WeightTo Отбор оплат по диапазону веса сырья (товара) с засором. Вес указывается в кг.
Status

Отбор по статусу, для выполнения необходимо указать номер статуса, например: "status": 2. Номера статусов приведены в таблице

Возможен отбор по нескольким статусам, для этого в запросе передаются необходимые номера статусов. Например "status": 2, status: 4

Pzu

Фильтровать Оплаты по ID ТТ.

Возможен отбор по нескольким ТТ, при этом ид указываются через запятую.

Параметр ответа Описание параметра ответа
Page

Номер текущей страницы.

Если не задавать или 0, то первая страница с результатами.

RecordsOnPage

Количество записей на страницу.

Если не задавать или 0 - то все записи из БД.

PagesTotal Количество страниц в выборке.
Payment Оплата
Payment:Id ID Оплаты.
Payment:Date Дата Оплаты в UTC в формате Timestamp ГГГГ-ММ-ДДTЧЧ:ММ:СС.999999.
Payment:Status ID статуса Оплаты.
Payment:Pzu ID ТТ, с которого оформлялась Оплата.
Payment:SumTotal Сумма Оплаты.
Client Ломосдатчик (частное лицо, сдающее сырье, товар).
Client:Name ФИО клиента
Client:Passport Серия и номер паспорта.
Client:CardNumber Номер банковской карты клиента (в случае выплаты на карту).
Client:Phone

Номер телефона клиента.

Формат 79ХХХХХХХХХ.

Client:Birtday Дата рождения клиента. Формат: дд.мм.гггг
Client:Birthplace Место рождения
Client:Passportfrom Кем выдан паспорт
Client:Address Прописка
Client:SbpBankId Id банка участника СБП (в случае выплаты через СБП)
Product Товар
Product:ProductId ID категории сырья (товара).
Product:Quantity

Масса сырья (товара), в соответствующих единицах с шагом 0.0001.

Формат: дробная часть отделяется точкой.

Product:Clogging Процент засора (0 - 99) с шагом 0.01.
Product:Price

Цена за единицу массы, руб. с шагом 0.01.

Формат: дробная часть отделяется точкой.

Product:Summ

Сумма по строке, руб.

Формат: дробная часть отделяется точкой.

Product:Units Единицы измерения. Возможные значения: “kilogramm”, “tonna”
WithdrawTypeId Идентификатор типа выплаты из справочника Получение списка доступных типов выплат. Для получения используется метод GET /withdrawTypes

Для клиентов РНКО "Единая касса" withdrawTypeId не передается

4.8 Получение списка торговых точек

Описание

Метод возвращает список ТТ с примененными фильтрами в массив Points узлов Point.

POST  /points
{
    "recordsOnPage": 0,
    "page": 0,
    "id": "string",
    "status": 0
}
<Filter>
    <RecordsOnPage>0</RecordsOnPage>
    <Page>0</Page>
    <Id>string</Id>
    <Status>0</Status>  
</Filter>

В случае успеха возвращается ответ с кодом 200:

{
    "point": [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "status": true,
        "address": "string",
        "limit": 0,
        "dayLimit": 0,
        "currentDayLimit": 0,
        "title": "string",
        "pointTimeZoneId": "string"
      }
    ],
    "page": 0,
    "pagesTotal": 0,
    "recordsOnPage": 0
}
<Points>
    <Point>
        <Id>3fa85f64-5717-4562-b3fc-2c963f66afa6</Id>
        <Status>true</Status>
        <Address>string</Address>
        <Limit>0</Limit>
        <DayLimit>0</DayLimit>
        <CurrentDayLimit>0</CurrentDayLimit>
        <Title>string</Title>
        <PointTimeZoneId>string</PointTimeZoneId>
    </Point>
    <Page>0</Page>
    <PagesTotal>0</PagesTotal>
    <RecordsOnPage>0</RecordsOnPage>
</Points>
Параметр запроса Описание параметра запроса
RecordsOnPage

Количество записей на страницу.

Если не задавать или 0 - то все записи из БД будут в одном ответе.

page Страница
Id Выбор ТТ по ID.
Status

Отбор по статусу:

1 - ТТ активно;

2 - ТТ не активно.

Параметр ответа Описание параметра ответа
Page

Номер текущей страницы.

Если не задавать или 0, то первая страница с результатами.

RecordsOnPage

Количество записей на страницу.

Если не задавать или 0 - то все записи из БД.

PagesTotal Количество страниц в выборке.
Point Торговая точка
Point:Id ID торговой точки.
Point:Status

true - ТТ активно.

false - ТТ не активно.

Point:Address Адрес точки.
Point:DayLimit Установленный лимит на Оплаты на сутки для ТТ.
Point:CurrentDayLimit Текущий оставшийся лимит на Оплаты (для текущих суток).
Point:Limit Установленный лимит на единичную Оплату для ТТ.
Point:Title Название точки.
Point:PointTimeZoneId Временная зона точки.

4.9 Получение перечня Статусов Сделок

Описание

Метод возвращает перечень Статусов Сделок в массив StatusList узлов Status.

Запрос передается без параметров.

POST /listStatus

В случае успеха возвращается ответ с кодом 200:

{
    "status": [
      {
        "id": "string",
        "name": "string",
        "description": "string",
        "dealStates": [
            "string"
        ]
      }
    ]
}
<ListStatus>
    <Status>
        <Id>string</Id>
        <Name>string</Name>
        <Description>string</Description>
        <DealStates>string</DealStates>
    </Status>
</ListStatus>

В случае ошибки в теле ответа возвращается текст ошибки с кодом 400: Ошибка получения списка статусов.

Параметр ответа Описание параметра ответа
id ID Статуса
name Наименование Статуса

Описание статусов сделок

Статус Описание
New Новая сделка. Неоплачена
InProgress В процессе выполнения
LimitError Превышен лимит транзакции для лицензиата
DayLimitError Превышен суточный лимит для ПЗУ
TransactionLimitError Превышен лимит на транзакции для для ПЗУ
MinLimitError Минимальный размер транзакции составляет
MaxLimitError Максимальный размер транзакции составляет
IsAcept Требует согласования у менеджера ПЗУ
IsAceptAdmin Ожидает согласования у менеджера ПЗУ
IsAceptAccountant Ожидает согласования у бухгалтера ПЗУ
Completed Платеж проведен
Rejected Оплата отклонена
SmsLimitError Превышен лимит смс для оплаты
ZeroError Сумма не может быть меньше 0 рублей
ReadyForPay Проверка на лимиты пройдена успешно
GoToCheckPay Переход к проверке платежа
PaymentNotFound Платеж по данной оплате не производился
InfoError Ошибка во входных данных
ApprovalBan Согласования запрещенные менеджером
PointNotActive ПЗУ неактивно
PayError Ошибка оплаты
KycError Отменена. Ломосдатчик числится в реестре террористов/экстремистов.
Canceled Оплата отменена пользователем
LimitedAttemptsEntryCode Превышено количество попыток ввода кода подтверждения
SuccessfulFiscalization Успешная фискализация
DeferredFiscalization Отложенная фискализация

Группы статусов сделок

Смотреть
Группа Описание Статусы в группе
All Все

-New;

-InProgress;

-LimitError;

-DayLimitError;

-TransactionLimitError;

-MinLimitError;

-MaxLimitError;

-IsAcept;

-IsAceptAdmin;

-IsAceptAccountant;

-Completed;

-Rejected;

-SmsLimitError;

-ZeroError;

-ReadyForPay;

GoToCheckPay

-PaymentNotFound;

-InfoError;

-ApprovalBan;

-PointNotActive;

-PayError;

KycError;

-Canceled;

-LimitedAttemptsEntryCode;

-SuccessfulFiscalization;

-DeferredFiscalization.

Completed Завершена Completed
Rejected Отклонена

-SmsLimitError;

-LimitedAttemptsEntryCode;

-Rejected;

-Canceled.

Wait В процессе выполнения InProgress
Accepting На согласовании

-IsAcept;

-IsAceptAccountant;

-IsAceptAdmin.

NoPay Не оплачена

-MinLimitError;

-MaxLimitError;

-DayLimitError;

-TransactionLimitError;

-LimitError;

-New.

PayError Ошибка оплаты PayError
KycError Ошибка ломосдатчик числится в базе террористов KycError

4.10 Получение списка Категорий лома

Описание

Метод возвращает список Категорий лома в массив Categories узлов Category.

Запрос передается без параметров

POST /categories

В случае успеха возвращается ответ с кодом 200:

{
    "category": [
      {
        "id": "string",
        "name": "string"
      }
    ]
}
<Categories>
    <Category>
        <Id>string</Id>
        <Name>string</Name>
    </Category>
</Categories>
Параметр ответа Описание параметра ответа
id ID Категории сырья (товара) (Идентификатор обмена).
name Наименование Категории сырья (товара).

4.11 Получение баланса

На стенде pay2b.ru для клиентов Газпромбанк баланс возвращаться не будет

Описание

POST /balance

Метод возвращает баланс или ошибку получения баланса.

Запрос передается без параметров. Возвращает строку баланса.

В случае технической ошибки получения баланса от банка, тело ответа содержит последний баланс из кэша и содержание ошибки в header.

Содержание header:

  • информация взята из кэша (x-balance-cached)
  • пример дешифрованной ошибки: “Тестовый процессинг вернул ошибку“ (x-balance-error)
  • временная метка баланса в формате UTC (x-balance-updated).
x-balance-cached : True

x-balance-error : %d0%a2%d0%b5%d1%81%d1%82%d0%be%d0%b2%d1%8b%d0%b9+%d0%bf%d1%80%d0%be%d1%86%d0%b5%d1%81%d1%81%d0%b8%d0%bd%d0%b3+%d0%b2%d0%b5%d1%80%d0%bd%d1%83%d0%bb+%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d1%83

x-balance-updated : 06/28/2024 17:12:49

4.12 Получить список банков участников СБП

Доступно только на стенде pay2b.ru

Описание

Метод возвращает список банков участников системы быстрых платежей. Запрос передается без параметров.

GET /sbp/members
В случае успеха возвращается ответ с кодом 200:

{
  "members": [
    {
      "id": "string",
      "name": "string",
      "bik": "string"
    }
  ]
}
<GetSbpMembersResponse>
    <Members>
        <SbpMember>
            <Id>string</Id>
            <Name>string</Name>
            <Bik>string</Bik>
        </SbpMember>
    </Members>
</GetSbpMembersResponse>
Параметр ответа Описание параметра ответа
id Идентификатор банка, необходимый для передачи в составе запроса на выплату через СБП
name Наименование банка на русском языке
bik БИК банка

Если у лицензиата не настроены выплаты по СБП, то вернется ответ с кодом 409:

{
    "message": "Некорректные настройки провайдера у лицензиата, обратитесь в службу поддержки."
}

4.13 Получение списка доступных типов выплат

Доступно только на стенде pay2b.ru

Описание

Метод возращает список доступных лицензиату типов выплат.

GET /withdrawTypes
[
 {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "name": "string"
 }
]
<GetWithdrawTypesResponse>
    <WithdrawTypes>
        <WithdrawType>
            <Id>976c6c2a-55e4-4010-b1ac-287d72b93136</Id>
            <Name>BankCard</Name>
        </WithdrawType>
    </WithdrawTypes>
</GetWithdrawTypesResponse>
Параметр ответа Описание параметра ответа
id Идентификатор типа выплаты
name Наименование типа выплаты на английском языке

4.14 Детали оплаты от процессинга

Доступно только на стенде pay2b.ru

Описание

Метод возвращает сведения о получателе платежа, совершенного через СБП.

Для оплат, совершенных на банковскую карту информация не возвращается.

GET /payment/{id}/processing-details
{
  "rrn": "string",  
  "details": {
    "recipientName":"string",
    "recipientBankAccount": "string"
  }
}
<GetWithdrawDetailsResponse>
    <RRN>string</RRN>
    <Details>
        <Detail key="string" value="string" />
    </Details>
</GetWithdrawDetailsResponse>
Параметр ответа Описание параметра ответа
recipientName ФИО получателя перевода
recipientBankAccount Номер банковского счета получателя

5 Недоступные методы

Эти методы в данный момент не используются

5.1 Получение списка продуктов лома

Описание

Метод возвращает список продуктов. Запрос передается без параметров.

POST /products
В случае успеха возвращается ответ с кодом 200:

{
    "product": [
     {
        "id": "string",
        "productKey": "string",
        "name": "string"
     }
    ]
}
<id>string</id>
<productKey>string</productKey>
<name>string</name>
Параметр ответа Описание параметра ответа
id Идентификатор категории
productKey Ключ продукта
name Название категории

5.2 Создание выплаты на телефон

Описание

Метод выполняет выплату на мобильный телефон.

POST /PhonePayment
{
    "externalId": "string",
    "pointId": "string",
    "productId": "string",
    "phone": "string",
    "comment": "string",
    "numberPp": "string",
    "mobileOperator": "string",
    "summTotal": 0
}
<PhonePayment>
    <pointId>string</pointId>
    <productId>string</productId>
    <phone>string</phone>
    <comment>string</comment>
    <numberPp>string</numberPp>
    <mobileOperator>string</mobileOperator>
    <summTotal>0</summTotal>
</PhonePayment>

В случае успеха возвращается ответ с кодом 200:

{
    "id": "string",
    "sum": 0,
    "date": "string"
}
<PhonePayment>
    <id>string</id>
    <sum>0</sum>
    <date>string</date>
<PhonePayment>

В случае ошибки в теле ответа возвращается текст ошибки:

  • ошибка с кодом 400 «неверные данные»;
  • ошибка с кодом 403 «нет доступа»;
  • ошибка с кодом 404 «not found»;
  • ошибка с кодом 500 «ошибки создания оплаты».
Параметр запроса Описание параметра запроса
pointId Идентификатор точки. Обязательный.
productId Идентификатор продукта. Обязательный.
phone Телефон. Шаблон ^([0-9]{10})$. Обязательный
comment Комментарий
numberPp Номер П.П.
mobileOperator Оператор связи. Обязательный
summTotal Сумма
Параметр ответа Описание параметра ответа
id Идентификатор оплаты.
sum Сумма.
date Дата создания.

5.3 Получение списка мобильных операторов

Описание

Метод возвращает список мобильных операторов. Запрос передается без параметров.

GET /MobileOperators

В случае успеха возвращается ответ с кодом 200:

{
    "operator": [
      {
        "id": "string",
        "title": "string"
      }
    ]
}
<operator>
    <id>string</id>
    <title>string</title>
</operator>
Параметр ответа Описание параметра ответа
id Идентификатор оператора
title Название

Состояния оплаты для клиентов РНКО Единая Касса

Для клиентов РНКО Единая Касса возможны следующие состояния оплаты:

Состояние Код Ошибка да/нет
Платеж принят системой к обработке Success нет
Провайдер не существует или недоступен агенту ProviderNotExistsOrLock да
Указанная сумма платежа не попадает в допустимый диапазон AmountMinError да
У агента недостаточно средств для проведения платежа DealerBalanceLimit да
Неверно указаны платежные поля FieldsError да
Указаны не все обязательные платежные поля RequiredFieldsError да
Для данного платежа невозможна оплата. Не выполнен шаг проверки, либо проверка завершилась неудачно PaymentNotCheck да
В теге receipt указана точка, которую сервису не удалось сопоставить с текущим пользователем PointNotFound да
Внутренняя ошибка InternalError да
Неверные авторизационные данные процессинга AuthError да
Платеж принят к обработке сервером ServerOk нет
Проверяется возможность оплаты платежа PsChecking нет
Ошибка при проверке возможности проведения платежа PsCheckError да
Платеж проверен, возможна оплата PsChecked нет
Платеж посылается на оплату PsPaying нет
Запрос статуса по платежу от внешнего платежного сервиса PsStatus нет
Платеж не прошел оплату PsPayError да
Платеж прошел оплату PsOk нет
Платеж отменен Canceled нет
Платеж прошел оплату Completed нет
К началу