Примечание: NOTIFICATION=CREATE_UNIT&ACTION=CREATE_UNIT&UNIT_ID=…&PARENT_ID=…&INN=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID +PROFILE_ID+OBJECT_ID+ключ)
Подразделы ЮЛ и ИП
Личный кабинет
В личном кабинете (ЛК) находятся настройки и счета клиентов маркетплейсов.
Доступ к ЛК предоставляется после заключения Договора об информационно-технологическом взаимодействии.
После регистрации на email маркетплейса направляется уведомление с описанием структуры личного кабинета.
В структуре этого ЛК маркетплейса 3 группы:
- Зарегистрированные клиенты - группа, в которой Система МОНЕТА.РУ создает личный кабинет для клиентов маркетплейса - юридических лиц и индивидуальных предпринимателей (далее ЮЛ/ИП) при регистрации.
Активные клиенты - в этой группе находятся клиенты маркетплейса ЮЛ/ИП, для которых включен прием платежей.
Перевод в Активные клиенты из группы Зарегистрированные клиенты, осуществляется после заполнения личного кабинета ЮЛ/ИП и выполнения требований по размещению информации о ЮЛ/ИП на сайте маркетплейса.
Информация, обязательная для размещения на сайте и (или) в мобильном приложении по каждому клиенту маркетплейса и примеры размещения указана здесь: https://www.payanyway.ru/info/w/ru/public/w/partnership/howto/terms.html
После перевода в группу “Активные клиенты” для ЮЛ/ИП необходимо скачать заявление о присоединении к Договору и создать расширенный счёт, на котором будут учитываться платежи.
Клиенты без заявления - группа, в которой находятся ЮЛ/ИП, не приславшие заявление о присоединении к Договору в течение 30 дней с момента регистрации в Системе МОНЕТУ.РУ, согласно п.2.5. Договора о переводах без открытия счетов в системе МОНЕТА.РУ и осуществлении информационно-технологического взаимодействия для юридических лиц и индивидуальных предпринимателей - резидентов РФ, или не согласованные НКО МОНЕТА.
После основных этапов подключения Система МОНЕТА.РУ направляет уведомления маркетплейсу: обязательные E-mail уведомления и настраиваемые URL-уведомления.
Если маркетплейс обеспечивает безопасную сделку или мультикорзину, будет создан еще один личный кабинет, в котором будут находиться транзитный и комиссионный счета маркетплейса. Информация об этом личном кабинете индивидуальна, поэтому предоставляется в виде письма на логин маркетплейса.
URL-уведомления при редактировании профиля продавца
Для настройки URL-уведомления необходимо отправить URL вашего обработчика на mp@payanyway.ru
URL-уведомления отправляются методом POST.
Content-type: application/x-www-form-urlencoded.
Encoding: UTF-8
На адрес вашего обработчика Система “МОНЕТА.РУ” будет направлять следующие уведомления:
CREATE_UNIT - Создание дочернего юнита.
EDIT_CONTRACT - Изменение статуса договора.
Статусы:
INACTIVE- статус договора после регистрации в Системе “МОНЕТА.РУ”ACTIVE- статус договора после перевода юнита продавца из группы Зарегистрированные клиенты в Рабочую группу.RESTRICTED- статус договора после перевода из Рабочей группы в Клиенты без заявления.
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=EDIT_CONTRACT&UNIT_ID=…&CONTRACT_ID=…&OLD_STATUS=…&NEW_STATUS=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID+CONTRACT_ID+OLD_STATUS+NEW_STATUS+ключ)
CREATE_ACCOUNT - Создание счетов.
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=CREATE_ACCOUNT&UNIT_ID=…&ACCOUNT_ID=…&ACCOUNT_TYPE=…&ACCOUNT_CREDIT_EXTID=…& ACCOUNT_DEBIT_EXTID=…&ACCOUNT_NUMBER=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID+ACCOUNT_ID+ACCOUNT_TYPE+ключ)
SEND_AGREEMENT - Продавцу сформировано Заявление о присоединении к Договору.
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=SEND_AGREEMENT&UNIT_ID=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID +PROFILE_ID+OBJECT_ID+ключ)
EDIT_PROFILE - Редактирование Основного профиля.
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=EDIT_PROFILE&UNIT_ID=…&PROFILE_ID=…&OBJECT_ID=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID +PROFILE_ID+OBJECT_ID+ключ)
MOVE_UNIT - Перенос юнита. PARENT_ID - новый родительский юнит.
Примечание: NOTIFICATION=PROFILE_UPDATE &ACTION=MOVE_UNIT&UNIT_ID=…&PARENT_ID=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID+PARENT_ID+ключ)
CREATE_BANK_ACCOUNT - Создание банковских реквизитов.
Примечание: NOTIFICATION=PROFILE_UPDATE &ACTION=CREATE_BANK_ACCOUNT&UNIT_ID=…&PROFILE_ID=…&OBJECT_ID=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID+PROFILE_ID+OBJECT_ID+ключ)
EDIT_BANK_ACCOUNT - Редактирование банковских реквизитов.
Примечание: NOTIFICATION=PROFILE_UPDATE &ACTION=EDIT_BANK_ACCOUNT&UNIT_ID=…&PROFILE_ID=…&OBJECT_ID=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID+PROFILE_ID+OBJECT_ID+ключ)
CREATE_LEGAL_INFO - Создание юридических реквизитов.
Примечание: NOTIFICATION=PROFILE_UPDATE &ACTION=CREATE_LEGAL_INFO &UNIT_ID=…&PROFILE_ID=…&OBJECT_ID=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID+PROFILE_ID+OBJECT_ID+ключ)
EDIT_LEGAL_INFO - Редактирование юридических реквизитов.
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=EDIT_LEGAL_INFO&UNIT_ID=…&PROFILE_ID=…&OBJECT_ID=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID+PROFILE_ID+OBJECT_ID+ключ)
CREATE_DOCUMENT - Создание документа.
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=CREATE_DOCUMENT&UNIT_ID=…&PROFILE_ID=…&OBJECT_ID=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID+PROFILE_ID+OBJECT_ID+ключ)
EDIT_DOCUMENT - Редактирование документа.
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=EDIT_DOCUMENT&UNIT_ID=…&PROFILE_ID=…&OBJECT_ID=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID+PROFILE_ID+OBJECT_ID+ключ)
CREATE_FOUNDER - Создание Учредителя. PROFILE_ID равен OBJECT_ID.
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=CREATE_FOUNDER&UNIT_ID=…&PROFILE_ID=…&OBJECT_ID=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID+PROFILE_ID+OBJECT_ID+ключ)
EDIT_FOUNDER - Редактирование Учредителя. PROFILE_ID равен OBJECT_ID.
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=EDIT_FOUNDER&UNIT_ID=…&PROFILE_ID=…&OBJECT_ID=…&MNT_SIGNATURE=md5(ACTION+UNIT_ID+PROFILE_ID+OBJECT_ID+ключ)
EDIT_PROFILE - Обновление профиля.
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=EDIT_PROFILE&UNIT_ID=…&UPDATE_DETAILS=…&MNT_SIGNATURE= md5(ACTION+UNIT_ID+UPDATE_DETAILS+ключ)
CONDITION_REJECTED - Продавец не прошёл проверку соответствия ПиУ.
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=CONDITION_REJECTED&UNIT_ID=…&PAYEE_DETAILS=…&PAYER_DETAILS=…&SITE_DETAILS=…&PAYMENT_INFO_DETAILS=…&CORRECT_DATA_DETAILS=…&MNT_SIGNATURE=… ACTION+UNIT_ID+ключ
RECEIVED_AGREEMENT - получено заявление о присоединении к Договору
Примечание: NOTIFICATION=PROFILE_UPDATE&ACTION=RECEIVED_AGREEMENT&UNIT_ID=…&PAYEE_DETAILS=&PAYER_DETAILS=&SITE_DETAILS=&PAYMENT_INFO_DETAILS=&CORRECT_DATA_DETAILS=&MNT_SIGNATURE=…
На уведомление следует ответить http-status=200 или строчкой: SUCCESS
Если адрес обработчика не может быть вызван по какой-либо причине, либо в ответе придёт не SUCCESS, то уведомление будет направлено повторно. Всего 8 раз в течении суток, с увеличивающейся периодичностью: 12 минут, 24 минуты, 48 минут и т. д.
Варианты подключения к Монете
Глава содержит информацию о подключении клиента маркетплейса юридического лица и индивидуального предпринимателя (далее ЮЛ/ИП) в качестве получателя платежей или плательщика в Системе МОНЕТА.РУ.
Подключение к Системе состоит из трех основных этапов:
- Регистрация
- Заполнение личного кабинета
- Создание бизнес-счета (расширенного счета)
Вариант 1. Клиент маркетплейса подключается самостоятельно. Клиент регистрируется на сайте https://payanyway.ru по специальной ссылке.
В этом случае клиент имеет доступ к личному кабинету на сайте https://payanyway.ru и может сам заполнить личный кабинет, указать все настройки, необходимые для приема платежей и управлять денежными средствами.
Вариант 2. Маркетплейс регистрирует клиента с помощью интерфейса MerchantAPI, предварительно запросив необходимые данные у ЮЛ/ИП, например, в личном кабинете на сайте маркетплейса.
В этом случае клиент маркетплейса не имеет доступ к личному кабинету на сайте https://payanyway.ru. Маркетплейс отображает своему клиенту в личном кабинете на сайте маркетплейса информацию из личного кабинета в Cистеме МОНЕТА.РУ, например, доступный баланс, историю операций.
В обоих вариантах клиент маркетплейса становится клиентом НКО “МОНЕТА” (ООО), принимая условия Договора о переводах без открытия счетов в Системе МОНЕТА.РУ и осуществлении информационно-технологического взаимодействия для юридических лиц и индивидуальных предпринимателей — резидентов РФ.
Во втором варианте с условиями Договора маркетплейс должен ознакомить ЮЛ/ИП на своем сайте до регистрации в Системе МОНЕТА.РУ, разместив информацию об “НКО МОНЕТА” (ООО) и ссылку на Договор о переводах без открытия счетов в Системе МОНЕТА.РУ и осуществлении информационно-технологического взаимодействия для юридических лиц и индивидуальных предпринимателей — резидентов РФ.
Подразделы Варианты подключения к Монете
Клиент маркетплейса подключается самостоятельно
Основные этапы взаимодействия НКО “МОНЕТА” (ООО) с маркетплейсом и клиентом юридическим лицом и индивидуальным предпринимателем (далее ЮЛ/ИП) при самостоятельном подключении к Системе МОНЕТА.РУ:
- Клиент регистрируется на сайте маркетплейса
- Маркетплейс переводит клиента на сайт https://payanyway.ru по специальной ссылке для регистрации в Системе МОНЕТА.РУ.
Формат ссылки:
https://site/backoffice/auth/register?marketplacePublicId=stringValue&marketplaceVerificationCode=stringValue&site=value&inn=valueВ этой ссылке маркетплейс указывает ИНН клиента и сайт.
В поле “сайт” может быть указана как страница клиента на сайте маркетплейса, так и URL собственного сайта клиента, зависит от бизнес-кейса маркетплейса.
- Клиент регистрируется на сайте https://payanyway.ru. Указывает номер телефона, e-mail.
- В Системе МОНЕТА.РУ создается личный кабинет для клиента.
- Система МОНЕТА.РУ отправляет маркетплейсу E-mail и URL (CREATE_UNIT) уведомления о регистрации клиента.
- Маркетплейс фиксирует в своей системе соответствие “ИНН клиента - юнит клиента” в Системе МОНЕТА.РУ.
- Система МОНЕТА.РУ отправляет клиенту E-mail уведомление о регистрации на адрес электронной почты, указанный при регистрации на сайте https://payanyway.ru.
- Клиент активирует учетную запись и заполняет личный кабинет на сайте https://payanyway.ru.
- Сотрудник НКО МОНЕТА (ООО) проверяет заполненный личный кабинет и страницу клиента на наличие информации, обязательной для размещения на сайте и (или) в мобильном приложении:
- Наименование юридического лица или ИП (Фамилия, Имя, Отчество полностью)
- ИНН для юридического лица, ОГРНИП для индивидуального предпринимателя
- Адрес регистрации (для ИП достаточно указать город)
- Контактный телефон и адрес электронной почты
- Порядок оформления и сроки исполнения заказа, его оплаты, доставки и возврата
- Система МОНЕТА.РУ включает прием платежей для клиента.
- Система МОНЕТА.РУ отправляет маркетплейсу E-mail и URL (EDIT_CONTACT) уведомления о включении приема платежей для клиента и о необходимости создать счет.
- Маркетплейс учитывает в своей системе, что клиенту включен прием платежей.
- Система МОНЕТА.РУ отправляет клиенту E-mail уведомление о включении приема платежей для него и о необходимости создать счет.
- Клиент создает бизнес-счет в Системе МОНЕТА.РУ.
- Система МОНЕТА.РУ отправляет клиенту E-mail уведомление о созданном счете.
- клиент принимает уведомление о созданном счете к сведению.
- Система МОНЕТА.РУ отправляет маркетплейсу E-mail и URL (CREATE_ACCOUNT) уведомления о созданном счете для клиента.
- Маркетплейс фиксирует в своей системе соответствие ИНН-юнит-счет и указывает настройки для счета клиента, необходимые для приема платежей.
Для того, чтобы на каждом счете клиента не указывать настройки, маркетплейс может добавлять в настройках счета клиента счет-прототип методом EditAccountRequest (стр.129 MONETA.MerchantAPI).
- Система МОНЕТА.РУ отправляет клиенту E-mail уведомление о необходимости ему отправить в НКО заявление о присоединении к Договору.
- Система МОНЕТА.РУ отправляет маркетплейсу E-mail и URL (SEND_AGREEMENT) уведомления о необходимости клиенту отправить в НКО заявление о присоединении к Договору.
- Клиент отправляет в НКО “МОНЕТА” (ООО) заявление о присоединении к Договору.
- НКО “МОНЕТА” (ООО) получает заявление о присоединении к Договору.
- Система МОНЕТА.РУ отправляет клиенту E-mail уведомление о получении заявления о присоединении к Договору.
- Система МОНЕТА.РУ отправляет E-mail уведомление маркетплейсу о получении заявления о присоединении к Договору.
- Маркетплейс и клиент принимают к сведению уведомление о получении заявления.
Маркетплейс подключает клиента
Пример очередности запросов для подключения юридического лица и/или индивидуального предпринимателя с помощью интерфейса MerchantAPI.
- CreateProfileRequest - Создание личного кабинета (юнита) клиента (продавца) маркетплейса.
По указанному ИНН, НКО МОНЕТА (ООО) добавит в личный кабинет клиента данные о клиенте, полученные из выписки ЕГРЮЛ/ЕГРИП и отправит макетплейсу URL- уведомление об обновлении данных клиента.
- CheckProfileRequest - Получение списка недостающих данных в юните клиента маркетплейса. В ответе содержится список параметров и запросов, с помощью которых можно заполнить недостающие данные в подпрофилях базового профиля (юнита).
- EditProfileRequest базового профиля - Заполнение базового профиля клиента.
- EditProfileRequest профиля руководителя - Заполнение подпрофиля руководителя.
- EditProfileRequest профиля руководителя (либо CheckProfile) - Получение id документа руководителя.
- EditProfileDocumentRequest документа руководителя - Заполнение документа руководителя.
- EditProfileRequest профиля учредителя - Заполнение подпрофиля учредителя.
- EditProfileRequest профиля бенефициарного владельца - Заполнение подпрофиля бенефициарного владельца.
- FindProfileDocumentsRequest документа бенефициарного владельца (либо CheckProfile) - Получение id документа бенефициарного владельца.
- EditProfileDocumentRequest паспорта бенефициарного владельца - Заполнение паспорта бенефициарного владельца.
- CreateBankAccountRequest - Создание банковских реквизитов.
- FindLegalInformationRequest профиля юридических реквизитов - Получение id юридических реквизитов.
- SaveLegalInformationRequest - Заполнение подпрофиля юридических реквизитов
- EditProfileRequest базового профиля с атрибутом CONDITIONS_CORRECT_DATA - Подтверждение готовности юнита клиента к проверке сотрудниками НКО.
Система МОНЕТА.РУ отправляет уведомление сотруднику коммерческого отдела НКО “МОНЕТА” (ООО) о необходимости проверить личный кабинет (юнит) клиента маркетплейса.
Сотрудник проверяет личный кабинет клиента и активирует его.
Система МОНЕТА.РУ отправляет маркетплейсу URL-уведомление MOVE_UNIT о переводе юнита клиента из группы “Зарегистрированные клиенты” в “Активные клиенты”
После перевода в группу “Активные клиенты” потребуется отправить следующие запросы:
- CreateAccount - создание расширенного счета для клиента.
- FindProfileDocumentFiles - скачать заявление о присоединении к оферте.
- EditProfile - передать дату и способ отправки заявления о присоединении к оферте.
Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Примечание: Приведенный выше список запросов для регистрации продавца не является строгой последовательностью запросов в Систему МОНЕТА.РУ.
Последовательность запросов, отправляемых маркетплейсом в Систему МОНЕТА.РУ, зависит от организационно-правовой формы клиента и данным по учредителям, бенефициарным владельцам клиента.
Подразделы Маркетплейс подключает клиента
Определения
Базовый профиль - профиль, принадлежащий личному кабинету (юниту) юридического лица и индивидуального предпринимателя (далее ЮЛ/ИП).
Базовый профиль добавляется Системой МОНЕТА.РУ при создании личного кабинета (юнита).
Получатель платежей, продавец - юридическое лицо; физическое лицо, зарегистрированное в качестве индивидуального предпринимателя, для которых маркетплейс обеспечивает взаимодействие с НКО “МОНЕТА” (ООО) по приему платежей в рамках Договора о переводах без открытия счетов в Системе МОНЕТА.РУ и осуществления информационно-технологического взаимодействия для юридических лиц и индивидуальных предпринимателей - резидентов РФ..
Является клиентом НКО “МОНЕТА” и клиентом маркетплейса.
Система МОНЕТА.РУ - совокупность программных и аппаратных средств, обеспечивающих информационное и технологическое взаимодействие между НКО, Плательщиком, Получателем и Эмитентом при совершении Переводов с использованием сети Интернет.
СМЭВ - это Система Межведомственного Электронного Взаимодействия, которая позволяет получать данные о юридическом лице и индивидуальном предпринимателе, которые доступны в выписке ЕГРЮЛ/ЕГРИП.
Маркетплейс / Торговая Площадка / Платформа - владелец Сервиса, обеспечивающего Плательщикам и Получателям возможность инициирования Распоряжений Плательщиков для осуществления НКО Переводов, а также регистрацию Получателей и Плательщиков в Системе НКО. Маркетплейс - технологический партнер, которого привлек клиент для взаимодействия с НКО “МОНЕТА” (ООО) согласно п. 1.5 Договора о переводах без открытия счетов в Системе “МОНЕТА.РУ” и осуществления информационно-технологического взаимодействия для юридических лиц и индивидуальных предпринимателей - резидентов РФ.
Набор полей в личном кабинете клиента
Данная информация предоставляется по запросу маркетплейса на mp@payanyway.ru.
Создание профиля
Создание личного кабинета (юнита) для клиента маркетплейса.
Обязательные параметры запроса: INN, ORGANISATION_SHORT_NAME, EMAIL, URL, UNITID - номер юнита группы “Зарегистрированные клиенты”.
Ответ содержит номер созданного личного кабинета (юнита) клиента.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"CreateProfileRequest":{
"unitId":НОМЕР ЮНИТА ГРУППЫ "ЗАРЕГИСТРИРОВАННЫЕ ПАРТНЕРЫ ПЛОЩАДКИ",
"profileType":"organization",
"profile":{
"attribute":[
{
"key":"ORGANIZATION_NAME_SHORT",
"value":"ООО Маркетплейс"
},
{
"key":"INN",
"value":"1234567890"
},
{
"key":"CONTACT_EMAIL",
"value":"test@test.ru"
},
{
"key":"URL",
"value":"payanyway.marketplace.ru"
}
]
}
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"CreateProfileResponse":12345
}
}
}<?php
if (isset($_POST['org_name_short']) && isset($_POST['org_inn']) && isset($_POST['org_email']) && isset($_POST['org_url'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\CreateProfileRequest();
$request->unitId = 1111111111;
$request->profileType = \Moneta\Types\ProfileType::organization;
$profile = new \Moneta\Types\Profile();
//краткое название организации
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "ORGANIZATION_NAME_SHORT";
$attribute->value = $_POST['org_name_short'];
$profile->addAttribute($attribute);
//ИНН организации
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "INN";
$attribute->value = $_POST['org_inn'];
$profile->addAttribute($attribute);
//контактный e-mail
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "CONTACT_EMAIL";
$attribute->value = $_POST['org_email'];
$profile->addAttribute($attribute);
//адрес сайта организации
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "URL";
$attribute->value = $_POST['org_url'];
$profile->addAttribute($attribute);
$request->profile = $profile;
//создание новой организации(продавца)
$result = $monetaSdk->monetaService->CreateProfile($request);
if (is_array($result) || (strlen($result) !== strlen(intval($result)))) {
throw new Exception(print_r($result, true));
}
echo "UNIT ID нового продавца: $result<br/><br/>";
echo "Запишите UNIT ID нового продавца. Он понадобится для совершения дальнейших шагов.";
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
Краткое название организации:<br/>
<input type="text" name="org_name_short" placeholder="ООО "Маркетплейс""/><br/><br/>
ИНН организации:<br/>
<input type="text" name="org_inn"/><br/><br/>
Контактный e-mail:<br/>
<input type="text" name="org_email"/><br/><br/>
Url сайта:<br/>
<input type="text" name="org_url" placeholder="http://example.ru"/><br/><br/>
<input type="submit" value="Создать профиль организации"/>
</form>
';
}Полученное значение unitid маркетплейсу необходимо сохранить в своей системе учета.
Каждому юниту (unitid) соответствует базовый профиль (profileid), его значение можно получить в ответе на запрос CheckProfileRequest.
Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Проверка полей профиля
Получение информации о незаполненных полях созданного личного кабинета (юнита).
В ответ маркетплейс получит номер базового профиля (profileid) и номера подпрофилей.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"CheckProfileRequest":{
"unitId":12345
}
}
}
}Ответ:
{"Envelope": {"Body": {"CheckProfileResponse": {
"foundersTotalShare": 0,
"daysBeforePartnerLock": 30,
"requestInfo": [
{
"method": "EditProfile",
"scope": "Founder",
"profile": {
"profileId": 55555,
"profile": {"attribute": [
{
"value": "number{0...100}",
"key": "FOUNDER_SHARE_PERCENTAGE"
},
{
"value": "number{0...}",
"key": "FOUNDER_SHARE_NUMERATOR"
},
{
"value": "number{0...}",
"key": "FOUNDER_SHARE_DENOMINATOR"
}
]},
"unitId": 12345
},
"action": "REQUEST"
},
{
"method": "EditProfile",
"scope": "Personal",
"profile": {
"profileId": 54321,
"profile": {"attribute": [
{
"value": "address@domain.com",
"key": "FINANCE_EMAIL"
},
{
"value": "number{79001112233}",
"key": "PHONE_SUPPORT"
},
{
"value": "string",
"key": "FIO_CONTACT"
},
{
"value": "Y|N",
"key": "CONDITIONS_PAYER"
},
{
"value": "EXIST|NONE",
"key": "BUDGET_ARREARS_ABSENCE"
},
{
"value": "Y|N",
"key": "CONDITIONS_PAYEE"
},
{
"value": "string",
"key": "PLANNED_TURNOVERS"
},
{
"value": "string",
"key": "REGISTRATION_AUTHORITY_RU"
},
{
"value": "string",
"key": "AGREEMENT_SIGNER_FIO"
},
{
"value": "Y|N",
"key": "CONDITIONS_CORRECT_DATA"
},
{
"value": "number{79001112233}",
"key": "PHONE_CONTACT"
},
{
"value": "Y|N",
"key": "CONDITIONS_PAYMENT_INFO"
},
{
"value": "country: isocode[RUS], isocode2L[RU], name[Россия|Russia]",
"key": "COUNTRY"
},
{
"value": "POWER_OF_ATTORNEY|ARTICLES_OF_ASSOCIATION|OTHER",
"key": "ACTING_DOCUMENT"
},
{
"value": "string",
"key": "FIO_ACCOUNTANT"
},
{
"value": "string",
"key": "POST_ADDRESS"
},
{
"value": "address@domain.com",
"key": "TECHNICAL_EMAIL"
},
{
"value": "Y|N",
"key": "CONDITIONS_SITE"
},
{
"value": "number{79001112233}",
"key": "PHONE_ACCOUNTANT"
}
]},
"unitId": 12345
},
"action": "REQUEST"
},
{
"method": "EditProfile",
"scope": "Director",
"profile": {
"profileId": 44444,
"profile": {"attribute": [
{
"value": "country: isocode[RUS], isocode2L[RU], name[Россия|Russia]",
"key": "NATIONALITY"
},
{
"value": "string",
"key": "LEGAL_ADDRESS"
},
{
"value": "string",
"key": "PLACE_OF_BIRTH"
},
{
"value": "string",
"key": "POST_ADDRESS"
},
{
"value": "Y|N",
"key": "RF_RESIDENT"
},
{
"value": "YYYY-MM-DD",
"key": "DATE_OF_BIRTH"
},
{
"value": "number{79001112233}",
"key": "PHONE_CONTACT"
}
]},
"unitId": 12345
},
"action": "REQUEST"
},
{
"juridical": {"attribute": [ {
"value": "number{11 [КЧ | 222 [КЧ | 333 [КЧ | 444]]]}",
"key": "OKATO"
}]},
"scope": "Juridical",
"action": "CALL_SERVICE_SUPPORT"
},
{
"bank": {
"unitId": 12345,
"attribute": [
{
"value": "number{12345678901234567890}",
"key": "ACCOUNT"
},
{
"value": "number{123456789}",
"key": "BIK"
}
]
},
"method": "CreateBankAccount",
"scope": "Bank",
"action": "REQUEST"
}
],
"status": "DATA_REQUIRED"
}}}}<?php
if (isset($_POST['unit_id'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\CheckProfileRequest();
$request->unitId = $_POST['unit_id'];
$result = $monetaSdk->monetaService->CheckProfile($request);
if (is_array($result) && 'OK' !== $result['status']) {
throw new Exception(print_r($result, true));
}
echo "<pre>";
print_r($result);
echo "</pre>";
} catch (Exception $e) {
echo "Необходимо заполнить следующие данные:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации(площадки):<br/>
<input type="text" name="unit_id"/><br/><br/>
<input type="submit" value="Проверить данные профиля"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Заполнение базового профиля
Рекомендуем маркетплейсу приступать к заполнению созданного личного кабинета (юнита) клиента после получения URL - уведомления EDIT_PROFILE.
Заполнение базового профиля личного кабинета (юнита) клиента маркетплейса.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"EditProfileRequest":{
"unitId":12345,
"profileId": 54321,
"profile": {"attribute": [
{
"value": "MP@domain.com",
"key": "FINANCE_EMAIL"
},
{
"value": "79001112233",
"key": "PHONE_SUPPORT"
},
{
"value": "TEST TET TEST",
"key": "FIO_CONTACT"
},
{
"value": "Y",
"key": "CONDITIONS_PAYER"
},
{
"value": "NONE",
"key": "BUDGET_ARREARS_ABSENCE"
},
{
"value": "Y",
"key": "CONDITIONS_PAYEE"
},
{
"value": "100000",
"key": "PLANNED_TURNOVERS"
},
{
"value": "TEST",
"key": "REGISTRATION_AUTHORITY_RU"
},
{
"value": "TEST TEST TEST",
"key": "AGREEMENT_SIGNER_FIO"
},
{
"value": "79001112233",
"key": "PHONE_CONTACT"
},
{
"value": "Y",
"key": "CONDITIONS_PAYMENT_INFO"
},
{
"value": "RU",
"key": "COUNTRY"
},
{
"value": "ARTICLES_OF_ASSOCIATION",
"key": "ACTING_DOCUMENT"
},
{
"value": "TEST TEST TEST",
"key": "FIO_ACCOUNTANT"
},
{
"value": "Йошкар-Ола, ул. гоголя. д.2 стр. А",
"key": "POST_ADDRESS"
},
{
"value": "MP@domain.com",
"key": "TECHNICAL_EMAIL"
},
{
"value": "Y",
"key": "CONDITIONS_SITE"
},
{
"value": "79001112233",
"key": "PHONE_ACCOUNTANT"
}
]}
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"EditProfileResponse":{
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\EditProfileRequest();
$request->unitId = $_POST['unit_id'];
$request->profileId = $_POST['profile_id'];
$profile = new \Moneta\Types\Profile();
//E-mail финансовой службы
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "FINANCE_EMAIL";
$attribute->value = $_POST['finance_email'];
$profile->addAttribute($attribute);
//Телефон по техническим вопросам
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "PHONE_SUPPORT";
$attribute->value = $_POST['phone_support'];
$profile->addAttribute($attribute);
//ФИО контакта по техническим вопросам
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "FIO_CONTACT";
$attribute->value = $_POST['fio_contact'];
$profile->addAttribute($attribute);
//Статус "На сайте присутствует контактная информация для плательщиков, доступная без регистрации"
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "CONDITIONS_PAYER";
$attribute->value = $_POST['conditions_payer'];
$profile->addAttribute($attribute);
//Сведения о наличии задолженности перед бюджетом по налогам и сборам
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "BUDGET_ARREARS_ABSENCE";
$attribute->value = $_POST['budget_arrears_absence'];
$profile->addAttribute($attribute);
//Статус "На сайте присутствует информация о получателе платежей, доступная без регистрации плательщика"
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "CONDITIONS_PAYEE";
$attribute->value = $_POST['conditions_payee'];
$profile->addAttribute($attribute);
//Планируемые ежемесячные обороты
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "PLANNED_TURNOVERS";
$attribute->value = $_POST['planned_turnovers'];
$profile->addAttribute($attribute);
//Наименование регистрирующего органа (свидетельство о регистрации)
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "REGISTRATION_AUTHORITY_RU";
$attribute->value = $_POST['registration_authority_ru'];
$profile->addAttribute($attribute);
//ФИО для подписи в договоре
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "AGREEMENT_SIGNER_FIO";
$attribute->value = $_POST['agreement_signer_fio'];
$profile->addAttribute($attribute);
//Контактный телефон
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "PHONE_CONTACT";
$attribute->value = $_POST['phone_contact'];
$profile->addAttribute($attribute);
//Статус "Описание порядка и процесса оплаты, а также информация о временном промежутке между оплатой и отгрузкой (доставкой) товара или предоставлением услуги доступны без регистрации"
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "CONDITIONS_PAYMENT_INFO";
$attribute->value = $_POST['conditions_payment_info'];
$profile->addAttribute($attribute);
//Страна
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "COUNTRY";
$attribute->value = $_POST['country'];
$profile->addAttribute($attribute);
//Документ, на основании которого действует директор
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "ACTING_DOCUMENT";
$attribute->value = $_POST['acting_document'];
$profile->addAttribute($attribute);
//Подробности по документу, на основании которого действует директор, только для "Другой"
if ($_POST['acting_document_details']) {
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "ACTING_DOCUMENT_DETAILS";
$attribute->value = $_POST['acting_document_details'];
$profile->addAttribute($attribute);
}
//ФИО контакта по финансовым вопросам
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "FIO_ACCOUNTANT";
$attribute->value = $_POST['fio_accountant'];
$profile->addAttribute($attribute);
//Почтовый адрес
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "POST_ADDRESS";
$attribute->value = $_POST['post_address'];
$profile->addAttribute($attribute);
//E-mail технической поддержки
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "TECHNICAL_EMAIL";
$attribute->value = $_POST['technical_email'];
$profile->addAttribute($attribute);
//Статус "Сайт полностью функционален и заполнен контентом"
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "CONDITIONS_SITE";
$attribute->value = $_POST['conditions_site'];
$profile->addAttribute($attribute);
//Телефон по финансовым вопросам
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "PHONE_ACCOUNTANT";
$attribute->value = $_POST['phone_accountant'];
$profile->addAttribute($attribute);
$request->profile = $profile;
//сохранение базового профиля организации(продавца)
$result = $monetaSdk->monetaService->EditProfile($request);
if (!empty($result)) {
throw new Exception(print_r($result, true));
}
echo "Данные профиля успешно сохранены.";
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
ID базового профиля (Personal):<br/>
<input type="text" name="profile_id" required="required"/><br/><br/>
E-mail финансовой службы:<br/>
<input type="email" name="finance_email" placeholder="address@domain.com" required="required"/><br/><br/>
Телефон по техническим вопросам:<br/>
<input type="tel" name="phone_support" placeholder="79001112233" required="required"/><br/><br/>
ФИО контакта по техническим вопросам:<br/>
<input type="text" name="fio_contact" placeholder="Иванов Иван Иванович" required="required"/><br/><br/>
Наименование регистрирующего органа (свидетельство о регистрации):<br/>
<input type="text" name="registration_authority_ru" required="required"/><br/><br/>
Статус "На сайте присутствует контактная информация <strong>для плательщиков</strong>, доступная без регистрации":<br/>
<input type="radio" name="conditions_payer" value="Y"/>Да
<input type="radio" name="conditions_payer" value="N" checked="checked"/>Нет<br/><br/>
Сведения о наличии задолженности перед бюджетом по налогам и сборам:<br/>
<select name="budget_arrears_absence" required="required">
<option value=""></option>
<option value="EXIST">Есть задолженность</option>
<option value="NONE">Нет задолженности</option>
</select><br/><br/>
Статус "На сайте присутствует информация <strong>о получателе платежей</strong>, доступная без регистрации плательщика":<br/>
<input type="radio" name="conditions_payee" value="Y"/>Да
<input type="radio" name="conditions_payee" value="N" checked="checked"/>Нет<br/><br/>
Планируемые ежемесячные обороты:<br/>
<input type="text" name="planned_turnovers" required="required" placeholder="100000"/><br/><br/>
ФИО для подписи в договоре:<br/>
<input type="text" name="agreement_signer_fio" required="required"/><br/><br/>
Контактный телефон:<br/>
<input type="tel" name="phone_contact" placeholder="79001112233" required="required"/><br/><br/>
Статус "Описание порядка и процесса оплаты, а также информация о временном промежутке между оплатой и отгрузкой (доставкой) товара или предоставлением услуги доступны без регистрации":<br/>
<input type="radio" name="conditions_payment_info" value="Y"/>Да
<input type="radio" name="conditions_payment_info" value="N" checked="checked"/>Нет<br/><br/>
Страна:<br/>
<select name="country" required="required">
<option value=""></option>
<option value="RUS">Россия</option>
</select><br/><br/>
Документ, на основании которого действует директор:<br/>
<select name="acting_document" required="required">
<option value=""></option>
<option value="POWER_OF_ATTORNEY">Доверенность</option>
<option value="ARTICLES_OF_ASSOCIATION">Устав</option>
<option value="OTHER">Другой</option>
</select><br/>
Подробности по документу, на основании которого действует директор, <strong>только для "Другой"</strong>:<br/>
<input type="text" name="acting_document_details"/><br/><br/>
ФИО контакта по финансовым вопросам:<br/>
<input type="text" name="fio_accountant" placeholder="Иванов Иван Иванович" required="required"/><br/><br/>
Почтовый адрес:<br/>
<input type="text" name="post_address" required="required"/><br/><br/>
E-mail технической поддержки:<br/>
<input type="email" name="technical_email" placeholder="address@domain.com" required="required"/><br/><br/>
Статус "Сайт полностью функционален и заполнен контентом":<br/>
<input type="radio" name="conditions_site" value="Y"/>Да
<input type="radio" name="conditions_site" value="N" checked="checked"/>Нет<br/><br/>
Телефон по финансовым вопросам:<br/>
<input type="tel" name="phone_accountant" placeholder="79001112233" required="required"/><br/><br/>
<input type="submit" name="submit" value="Сохранить профиль организации"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Заполнение подпрофиля руководителя
Заполнение подпрофиля руководителя в личном кабинете (юните) клиента маркетплейса.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"EditProfileRequest":{
"unitId":12345,
"profileId":44444,
"profile":{
"attribute":[
{
"value":"RU",
"key":"NATIONALITY"
},
{
"value":"LEGAL_ADDRESS",
"key":"LEGAL_ADDRESS"
},
{
"value":"PLACE_OF_BIRTH",
"key":"PLACE_OF_BIRTH"
},
{
"value":"POST_ADDRESS",
"key":"POST_ADDRESS"
},
{
"value":"Y",
"key":"RF_RESIDENT"
},
{
"value":"YYYY-MM-DD",
"key":"DATE_OF_BIRTH"
},
{
"value":"79123456789",
"key":"PHONE_CONTACT"
},
{
"value":"123456789012",
"key":"INN"
}
]
}
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"EditProfileResponse":{
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\EditProfileRequest();
$request->unitId = $_POST['unit_id'];
$request->profileId = $_POST['profile_id'];
$profile = new \Moneta\Types\Profile();
//Гражданство
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "NATIONALITY";
$attribute->value = $_POST['nationality'];
$profile->addAttribute($attribute);
//Место рождения
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "PLACE_OF_BIRTH";
$attribute->value = $_POST['place_of_birth'];
$profile->addAttribute($attribute);
//Адрес регистрации
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "LEGAL_ADDRESS";
$attribute->value = $_POST['legal_address'];
$profile->addAttribute($attribute);
//Почтовый адрес
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "POST_ADDRESS";
$attribute->value = $_POST['post_address'];
$profile->addAttribute($attribute);
//Тип партнёра
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "RF_RESIDENT";
$attribute->value = $_POST['rf_resident'];
$profile->addAttribute($attribute);
//Дата рождения
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "DATE_OF_BIRTH";
$attribute->value = $_POST['date_of_birth'];
$profile->addAttribute($attribute);
//Контактный телефон
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "PHONE_CONTACT";
$attribute->value = $_POST['phone_contact'];
$profile->addAttribute($attribute);
//ИНН
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "INN";
$attribute->value = $_POST['inn'];
$profile->addAttribute($attribute);
$request->profile = $profile;
//сохранение подпрофиля руководителя организации
$result = $monetaSdk->monetaService->EditProfile($request);
if (!empty($result)) {
throw new Exception(print_r($result, true));
}
echo "Данные подпрофиля руководителя успешно сохранены.";
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
ID подпрофиля руководителя (Director):<br/>
<input type="text" name="profile_id" required="required"/><br/><br/>
Гражданство:<br/>
<select name="nationality" required="required">
<option value=""></option>
<option value="RU">Россия</option>
</select><br/><br/>
Место рождения:<br/>
<input type="text" name="place_of_birth" required="required" placeholder="г. Уфа, ул. Новая, д.333, кв. 777"/><br/><br/>
Адрес регистрации:<br/>
<input type="text" name="legal_address" required="required" placeholder="г. Москва, ул. Новая, д.333, кв. 777"/><br/><br/>
Почтовый адрес:<br/>
<input type="text" name="post_address" required="required" placeholder="г. Москва, ул. Новая, д.333, кв. 777"/><br/><br/>
Тип подпрофиля:<br/>
<select name="rf_resident" required="required">
<option value=""></option>
<option value="Y">Резидент РФ</option>
<option value="N">Нерезидент РФ</option>
</select><br/><br/>
Дата рождения:<br/>
<input type="date" name="date_of_birth" required="required"/><br/><br/>
Контактный телефон:<br/>
<input type="text" name="phone_contact" required="required" placeholder="79123456789"/><br/><br/>
ИНН:<br/>
<input type="text" name="inn" required="required" placeholder="123456789012"/><br/><br/>
<input type="submit" name="submit" value="Сохранить подпрофиль руководителя"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Поиск документа руководителя
Получение id документа руководителя в личном кабинете (юните) клиента маркетплейса.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"FindProfileDocumentsRequest":{
"unitId":12345,
"profileId":44444
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"FindProfileDocumentsResponse":{
"document":[
{
"id":5057,
"attribute":[
{
"approved":true,
"value":"YYYY-MM-DDT14:07:35.000+03:00",
"key":"modificationdate"
}
],
"type":"PASSPORT",
"hasAttachedFiles":false
}
]
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\FindProfileDocumentsRequest();
$request->unitId = $_POST['unit_id'];
$request->profileId = $_POST['profile_id'];
//поиск документа у подпрофиля руководителя
$result = $monetaSdk->monetaService->FindProfileDocuments($request);
if (count($result)) {
echo "<pre>";
print_r($result);
echo "</pre>";
} else {
echo "Не найдено ни одного документа";
}
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
ID подпрофиля руководителя (Director):<br/>
<input type="text" name="profile_id" required="required"/><br/><br/>
<input type="submit" name="submit" value="Найти документы руководителя"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Заполнение документа подпрофиля руководителя
Заполнение документа руководителя в личном кабинете (юните) клиента маркетплейса.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"EditProfileDocumentRequest":{
"unitId": 12345,
"profileId": 44444,
"id": 5057,
"attribute": [
{
"value": "YYYY-MM-DD",
"key": "ISSUED"
},
{
"value": "0000",
"key": "NUMBER"
},
{
"value": "000000",
"key": "SERIES"
},
{
"value": "ISSUER",
"key": "ISSUER"
}
],
"type": "PASSPORT"
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"EditProfileDocumentResponse":{
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$doc = new \Moneta\Types\EditProfileDocumentRequest();
$doc->unitId = $_POST['unit_id'];
$doc->profileId = $_POST['profile_id'];
$doc->id = $_POST['doc_id'];
$doc->type = $_POST['doc_type'];
//Когда выдан документ
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "ISSUED";
$attribute->value = $_POST['issued'];
$doc->addAttribute($attribute);
//Серия документа
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "SERIES";
$attribute->value = $_POST['series'];
$doc->addAttribute($attribute);
//Номер документа
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "NUMBER";
$attribute->value = $_POST['number'];
$doc->addAttribute($attribute);
//Кем выдан документ
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "ISSUER";
$attribute->value = $_POST['issuer'];
$doc->addAttribute($attribute);
//сохранение документа подпрофиля руководителя
$result = $monetaSdk->monetaService->EditProfileDocument($doc);
if (!empty($result)) {
throw new Exception(print_r($result, true));
}
echo "Данные документа подпрофиля руководителя успешно сохранены.";
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
ID подпрофиля руководителя (Director):<br/>
<input type="text" name="profile_id" required="required"/><br/><br/>
ID документа подпрофиля руководителя:<br/>
<input type="text" name="doc_id" required="required"/><br/><br/>
Тип документа:<br/>
<select name="doc_type" required="required">
<option value=""></option>
<option value="PASSPORT">Паспорт</option>
</select><br/><br/>
Когда выдан документ:<br/>
<input type="date" name="issued" required="required"/><br/><br/>
Серия документа:<br/>
<input type="text" name="series" required="required" placeholder="0000"/><br/><br/>
Номер документа:<br/>
<input type="text" name="number" required="required" placeholder="000000"/><br/><br/>
Кем выдан документ:<br/>
<input type="text" name="issuer" required="required"/><br/><br/>
<input type="submit" name="submit" value="Сохранить документ подпрофиля руководителя"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Заполнение подпрофиля учредителя
Заполнение подпрофиля учредителя в личном кабинете (юните) клиента маркетплейса.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"EditProfileRequest":{
"unitId":12345,
"profileId":55555,
"profile":{
"attribute":[
{
"value":"100",
"key":"FOUNDER_SHARE_PERCENTAGE"
}
]
}
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"EditProfileResponse":{
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\EditProfileRequest();
$request->unitId = $_POST['unit_id'];
$request->profileId = $_POST['profile_id'];
$profile = new \Moneta\Types\Profile();
//Доля в капитале
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "FOUNDER_SHARE_PERCENTAGE";
$attribute->value = $_POST['founder_share_percentage'];
$profile->addAttribute($attribute);
$request->profile = $profile;
//сохранение подпрофиля учредителя
$result = $monetaSdk->monetaService->EditProfile($request);
if (!empty($result)) {
throw new Exception(print_r($result, true));
}
echo "Данные подпрофиля учредителя успешно сохранены.";
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
ID подпрофиля учредителя (Founder):<br/>
<input type="text" name="profile_id" required="required"/><br/><br/>
Доля в капитале, %:<br/>
<input type="number" name="founder_share_percentage" required="required" min="0" max="100" placeholder="100"/><br/><br/>
<input type="submit" name="submit" value="Сохранить подпрофиль учредителя"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Заполнение подпрофиля бенефициарного владельца
Заполнение подпрофиля бенефициарного владельца в личном кабинете (юните) клиента маркетплейса.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"EditProfileRequest":{
"unitId":12345,
"profileId":55555,
"profile": {"attribute": [
{
"value": "RU",
"key": "NATIONALITY"
},
{
"value": "LEGAL_ADDRESS",
"key": "LEGAL_ADDRESS"
},
{
"value": "PLACE_OF_BIRTH",
"key": "PLACE_OF_BIRTH"
},
{
"value": "POST_ADDRESS",
"key": "POST_ADDRESS"
},
{
"value": "YYYY-MM-DD",
"key": "DATE_OF_BIRTH"
},
{
"value": "79001112233",
"key": "PHONE_CONTACT"
}
]}
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"EditProfileResponse":{
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\EditProfileRequest();
$request->unitId = $_POST['unit_id'];
$request->profileId = $_POST['profile_id'];
$profile = new \Moneta\Types\Profile();
//Гражданство
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "NATIONALITY";
$attribute->value = $_POST['nationality'];
$profile->addAttribute($attribute);
//Место рождения
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "PLACE_OF_BIRTH";
$attribute->value = $_POST['place_of_birth'];
$profile->addAttribute($attribute);
//Адрес регистрации
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "LEGAL_ADDRESS";
$attribute->value = $_POST['legal_address'];
$profile->addAttribute($attribute);
//Почтовый адрес
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "POST_ADDRESS";
$attribute->value = $_POST['post_address'];
$profile->addAttribute($attribute);
//Дата рождения
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "DATE_OF_BIRTH";
$attribute->value = $_POST['date_of_birth'];
$profile->addAttribute($attribute);
//Контактный телефон
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "PHONE_CONTACT";
$attribute->value = $_POST['phone_contact'];
$profile->addAttribute($attribute);
//ИНН
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "INN";
$attribute->value = $_POST['inn'];
$profile->addAttribute($attribute);
$request->profile = $profile;
//сохранение подпрофиля бенефициара
$result = $monetaSdk->monetaService->EditProfile($request);
if (!empty($result)) {
throw new Exception(print_r($result, true));
}
echo "Данные подпрофиля бенефициара успешно сохранены.";
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
ID подпрофиля бенефициара (Beneficiary):<br/>
<input type="text" name="profile_id" required="required"/><br/><br/>
Гражданство:<br/>
<select name="nationality" required="required">
<option value=""></option>
<option value="RU">Россия</option>
</select><br/><br/>
Место рождения:<br/>
<input type="text" name="place_of_birth" required="required" placeholder="г. Уфа, ул. Новая, д.333, кв. 777"/><br/><br/>
Адрес регистрации:<br/>
<input type="text" name="legal_address" required="required" placeholder="г. Москва, ул. Новая, д.333, кв. 777"/><br/><br/>
Почтовый адрес:<br/>
<input type="text" name="post_address" required="required" placeholder="г. Москва, ул. Новая, д.333, кв. 777"/><br/><br/>
Дата рождения:<br/>
<input type="date" name="date_of_birth" required="required"/><br/><br/>
Контактный телефон:<br/>
<input type="text" name="phone_contact" required="required" placeholder="79123456789"/><br/><br/>
ИНН:<br/>
<input type="text" name="inn" required="required" /><br/><br/>
<input type="submit" name="submit" value="Сохранить подпрофиль бенефициара"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Поиск документа бенефициарного владельца
Получение id документа бенефициарного владельца в личном кабинете (юните) клиента маркетплейса.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"FindProfileDocumentsRequest":{
"unitId":12345,
"profileId": 55555
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"FindProfileDocumentsResponse":{
"document":[
{
"id":5058,
"attribute":[
{
"approved":true,
"value":"YYYY-MM-DDT14:10:54.000+03:00",
"key":"modificationdate"
}
],
"type":"PASSPORT",
"hasAttachedFiles":false
}
]
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\FindProfileDocumentsRequest();
$request->unitId = $_POST['unit_id'];
$request->profileId = $_POST['profile_id'];
//поиск документа у подпрофиля бенефициара
$result = $monetaSdk->monetaService->FindProfileDocuments($request);
if (count($result)) {
echo "<pre>";
print_r($result);
echo "</pre>";
} else {
echo "Не найдено ни одного документа";
}
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
ID подпрофиля бенефициара (Beneficiary):<br/>
<input type="text" name="profile_id" required="required"/><br/><br/>
<input type="submit" name="submit" value="Найти документы бенефициара"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Заполнение документа бенефициарного владельца
Заполнение паспорта бенефициарного владельца в личном кабинете (юните) клиента маркетплейса.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"EditProfileDocumentRequest":{
"unitId": 12345,
"profileId": 55555,
"id": 5058,
"attribute": [
{
"value": "YYYY-MM-DD",
"key": "ISSUED"
},
{
"value": "0000",
"key": "NUMBER"
},
{
"value": "000000",
"key": "SERIES"
},
{
"value": "ISSUER",
"key": "ISSUER"
}
],
"type": "PASSPORT"
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"EditProfileDocumentResponse":{
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$doc = new \Moneta\Types\EditProfileDocumentRequest();
$doc->unitId = $_POST['unit_id'];
$doc->profileId = $_POST['profile_id'];
$doc->id = $_POST['doc_id'];
$doc->type = $_POST['doc_type'];
//Когда выдан документ
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "ISSUED";
$attribute->value = $_POST['issued'];
$doc->addAttribute($attribute);
//Серия документа
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "SERIES";
$attribute->value = $_POST['series'];
$doc->addAttribute($attribute);
//Номер документа
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "NUMBER";
$attribute->value = $_POST['number'];
$doc->addAttribute($attribute);
//Кем выдан документ
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "ISSUER";
$attribute->value = $_POST['issuer'];
$doc->addAttribute($attribute);
//сохранение документа подпрофиля бенефициара
$result = $monetaSdk->monetaService->EditProfileDocument($doc);
if (!empty($result)) {
throw new Exception(print_r($result, true));
}
echo "Данные документа подпрофиля бенефициара успешно сохранены.";
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
ID подпрофиля бенефициара (Beneficiary):<br/>
<input type="text" name="profile_id" required="required"/><br/><br/>
ID документа подпрофиля бенефициара:<br/>
<input type="text" name="doc_id" required="required"/><br/><br/>
Тип документа:<br/>
<select name="doc_type" required="required">
<option value=""></option>
<option value="PASSPORT">Паспорт</option>
</select><br/><br/>
Когда выдан документ:<br/>
<input type="date" name="issued" required="required"/><br/><br/>
Серия документа:<br/>
<input type="text" name="series" required="required" placeholder="0000"/><br/><br/>
Номер документа:<br/>
<input type="text" name="number" required="required" placeholder="000000"/><br/><br/>
Кем выдан документ:<br/>
<input type="text" name="issuer" required="required"/><br/><br/>
<input type="submit" name="submit" value="Сохранить документ подпрофиля бенефициара"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Создание банковских реквизитов клиента
Создание банковских реквизитов в личном кабинете (юните) клиента маркетплейса.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"CreateBankAccountRequest":{
"unitId":12345,
"attribute": [
{
"value": "00000000000000000000",
"key": "ACCOUNT"
},
{
"value": "000000000",
"key": "BIK"
}
]
}
}Ответ:
{
"Envelope":{
"Body":{
"CreateBankAccountResponse":{
"id":2105
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\CreateBankAccountRequest();
$request->unitId = $_POST['unit_id'];
//Номер расчётного счёта
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "ACCOUNT";
$attribute->value = $_POST['account'];
$request->addAttribute($attribute);
//БИК банка
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "BIK";
$attribute->value = $_POST['bik'];
$request->addAttribute($attribute);
//создание банковских реквизитов
$result = $monetaSdk->monetaService->CreateBankAccount($request);
if(!is_array($result) || !$result['id']){
throw new Exception(print_r($result, true));
}
echo "Идентификатор банковских реквизитов в системе MONETA.RU: ".$result['id'];
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
Номер расчётного счёта:<br/>
<input type="text" name="account" required="required" placeholder="12345678901234567890"/><br/><br/>
БИК банка:<br/>
<input type="text" name="bik" required="required" placeholder="123456789"/><br/><br/>
<input type="submit" name="submit" value="Сохранить банковские реквизиты"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Поиск юридических реквизитов
Для заполнения подпрофиля юридических реквизитов (SaveLegalInformationRequest) необходимо сначала получить id подпрофиля.
Получение id юридических реквизитов в личном кабинет (юните) клиента маркетплейса.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"FindLegalInformationRequest":{
"unitId":12345
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"FindLegalInformationResponse":{
"legalInformation":[
{
"id":1878,
"attribute":[
{
"approved":false,
"value":"okved",
"key":"okved"
},
{
"approved":false,
"value":"000000000",
"key":"kpp"
},
{
"approved":false,
"value":"1111111111111",
"key":"ogrn"
}
]
}
]
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\FindLegalInformationRequest();
$request->unitId = $_POST['unit_id'];
//получение id юридических реквизитов
$result = $monetaSdk->monetaService->FindLegalInformation($request);
if (count($result)) {
echo "<pre>";
print_r($result);
echo "</pre>";
} else {
echo "Юридические реквизиты не найдены";
}
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
<input type="submit" name="submit" value="Найти юридические реквизиты"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Заполнение юридических реквизитов
Заполнение подпрофиля юридических реквизитов в личном кабинете (юните) клиента маркетплейса Для сохранения данных в подпрофиле юридических реквизитов необходимо сначала получить id подпрофиля юридических реквизитов запросом FindLegalInformationRequest.
Примечание: Запрос является экспериментальным, может быть изменен без предупреждения.
Отправлять запрос необходимо на http://moneta.ru/schemas/messages-frontend.xsd
WSDL документ: https://moneta.ru/services-frontend.wsdl
Запрос:
{
"Envelope":{
"Header":{
"PayloadNamespace" : "http://moneta.ru/schemas/messages-frontend.xsd",
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"SaveLegalInformationRequest": {
"legalInformation": {
"unitId": "12345",
"id": 1878,
"okato": "00000000"
}
}
}
}
}Ответ:
{
"Envelope":{
"Header":{
"PayloadNamespace":"http://moneta.ru/schemas/messages-frontend.xsd",
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"SaveLegalInformationRequest":{
"legalInformation":{
"unitId":"12345",
"id":1878,
"okato":"00000000"
}
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$username = $monetaSdk->settings['monetasdk_account_username'];
$password = $monetaSdk->settings['monetasdk_account_password'];
$url = 'https://demo.moneta.ru/services';
$requestData = [
"Envelope" =>
[
"Header" =>
[
"Security" =>
[
"UsernameToken" =>
[
"Username" => $username,
"Password" => $password,
],
],
"PayloadNamespace" => "http://moneta.ru/schemas/messages-frontend.xsd",
],
"Body" =>
[
"SaveLegalInformationRequest" =>
[
"legalInformation" =>
[
"unitId" => $_POST['unit_id'],
"id" => $_POST['doc_id'],
"okato" => $_POST['okato'],
"okved" => $_POST['okved'],
],
],
],
],
];
$requestData = json_encode($requestData);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=UTF-8'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result, true);
if (!$result['Envelope']['Body']['SaveLegalInformationResponse']['id']) {
throw new Exception(print_r($result, true));
}
echo "Юридические реквизиты успешно сохранены.";
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
ID документа юридических реквизитов:<br/>
<input type="text" name="doc_id" required="required"/><br/><br/>
ОКАТО:<br/>
<input type="text" name="okato" required="required"/><br/><br/>
ОКВЭД:<br/>
<input type="text" name="okved" required="required" placeholder="XX.XX.XX, XX.XX.XX"/><br/><br/>
<input type="submit" name="submit" value="Сохранить юридические реквизиты"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Отправка профиля на проверку
Подтверждение готовности личного кабинета (юнита) клиента к проверке сотрудниками НКО “МОНЕТА” (ООО).
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"EditProfileRequest":{
"unitId":"12345",
"profile":{
"attribute":[
{
"value":"Y",
"key":"CONDITIONS_CORRECT_DATA"
}
]
}
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"EditProfileResponse":{
}
}
}
}<?php
if (isset($_POST['unit_id']) && isset($_POST['submit'])) {
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\EditProfileRequest();
$request->unitId = $_POST['unit_id'];
$request->profileId = $_POST['profile_id'];
$profile = new \Moneta\Types\Profile();
//Статус "Все необходимые данные внесены и являются актуальными"
$attribute = new \Moneta\Types\KeyValueApprovedAttribute();
$attribute->approved = false;
$attribute->key = "CONDITIONS_CORRECT_DATA";
$attribute->value = $_POST['conditions_correct_data'];
$profile->addAttribute($attribute);
$request->profile = $profile;
//сохранение базового профиля организации(продавца)
$result = $monetaSdk->monetaService->EditProfile($request);
if (!empty($result)) {
throw new Exception(print_r($result, true));
}
echo "Данные профиля успешно сохранены.";
} catch (Exception $e) {
echo "Произошла ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
} else {
echo '
<form method="post">
unit ID организации (площадки):<br/>
<input type="text" name="unit_id" required="required"/><br/><br/>
ID базового профиля (Personal):<br/>
<input type="text" name="profile_id" required="required"/><br/><br/>
Статус "Все необходимые данные внесены и являются актуальными":<br/>
<input type="radio" name="conditions_correct_data" value="Y"/>Да
<input type="radio" name="conditions_correct_data" value="N" checked="checked"/>Нет<br/><br/>
<input type="submit" name="submit" value="Сохранить профиль организации"/>
</form>
';
}Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Создание расширенного счёта
Создание расширенного счета для клиента.
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"CreateAccountRequest":{
"currency":"RUB",
"alias":"Alias",
"paymentPassword":"12345",
"unitId":12345,
"prototypeAccountId":1111111111,
"attribute":[
{
"key":"ALIAS",
"value":"Alias",
"published":true
}
]
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"CreateAccountResponse":22222222
}
}
}PrototypeAccountId необязательный элемент, это счет-прототип, с которого наследуются настройки.
Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
Получение ссылки на договор
Запрос на получение заявления о присоединении к Договору.
Для отправки запроса FindProfileDocumentFilesRequest необходимо получить id документа. Получить id документа можно запросом FindProfileDocumentsRequest.
FindProfileDocumentsRequest (JSON)
Запрос:
{
"Envelope":{
"Header":{
"Security":{
"UsernameToken":{
"Username":"Username",
"Password":"Password"
}
}
},
"Body":{
"FindProfileDocumentsRequest":{
"unitId":11111
}
}
}
}Ответ:
{
"Envelope":{
"Body":{
"FindProfileDocumentsResponse":{
"document":[
{
"id":1111,
"attribute":[
{
"approved":false,
"value":"test",
"key":"comments"
},
{
"approved":true,
"value":"2019-08-20T10:39:27.000+03:00",
"key":"modificationdate"
}
],
"type":"OTHER",
"hasAttachedFiles":false
}
]
}
}
}
}FindProfileDocumentFilesRequest
Запрос:
{
"Envelope": {
"Header": {
"Security": {
"UsernameToken": {
"Username": "USERNAME",
"Password": "PASSWORD"
}
}
},
"Body": {
"FindProfileDocumentFilesRequest": {
"documentId": 1111
}
}
}
}Ответ:
{
"Envelope": {
"Body": {
"FindProfileDocumentFilesResponse": {
"file": [
{
"approved": true,
"documentId": 1111,
"mimeType": "image\/jpeg",
"requestUri": "\/info\/private\/documents\/364640433885312461716.jpg",
"title": "Scan.jpg",
"fileId": 10001
}
]
}
}
}
}Примечание: В FindProfileDocumentFilesResponse будет содержаться ссылка на документ.
Необходимо преобразовать ссылку, добавив и получить ссылку типа: https://moneta.ru/info/private/documents/364640433885312461716.jpg
FindProfileDocumentsRequest (XML)
Запрос:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1">
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
wsu:Id="XWSSGID-1560771336320-2024615317"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:Username>USERNAME</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns2:FindProfileDocumentFilesRequest xmlns:ns2="http://moneta.ru/schemas/messages.xsd" xmlns="">
<ns2:documentId>9996</ns2:documentId>
</ns2:FindProfileDocumentFilesRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>Ответ:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:FindProfileDocumentFilesResponse xmlns:ns2="http://moneta.ru/schemas/messages.xsd">
<ns2:file>
<ns2:documentId>9996</ns2:documentId>
<ns2:blob>
<xop:Include href="cid:023786ad-d52b-4d0e-b763-fc8c4c2f5756%40moneta.ru"
xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
</ns2:blob>
<ns2:approved>true</ns2:approved>
<ns2:fileId>10001</ns2:fileId>
<ns2:mimeType>image/jpeg</ns2:mimeType>
<ns2:title>Scan.jpg</ns2:title>
</ns2:file>
</ns2:FindProfileDocumentFilesResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>Примечание: При запросе FindProfileDocumentFilesRequest необходимо включить механизм MTOM - https://en.wikipedia.org/wiki/Message_Transmission_Optimization_Mechanism
Примечание: FindProfileDocumentFilesResponse будет содержать файл. Файл будет лежать после XML, а внутри XML будет ссылка на файл.
Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI.
