{"info":{"_postman_id":"7f91e324-1fe4-4936-94ab-b8a6d7a805dc","name":"MandarinPay Routes API","description":"<html><head></head><body><p>API базируется на технологии REST API. В системе используются ресурсо-ориентированные точки входа (endpoints), а все ответы, возвращаемые системой, имеют формат JSON.</p>\n<p>Все запросы к API должны осуществляться через HTTPS. Запросы с HTTP будут отклоняться.</p>\n<p>API является асинхронным (незначительная часть запросов работает синхронно): на ваш запрос вы синхронно получите <code>id</code> платежа (запроса), а затем в асинхронном режиме получите callback-уведомление, включающее полученный ранее <code>id</code> платежа (запроса), а также статус операции и прочие данные по ней.</p>\n<p><img src=\"https://nextcloud.mandarinbank.com/index.php/s/KMozCRdJEwH6Qta/preview\" alt=\"alt Marketplace-Mandarin WebSequence\"></p>\n<p>Для того, чтобы вы могли максимально протестировать API, вы можете использовать тестовое (<code>stage</code>) и боевое (<code>prod</code>) окружения. Запросы, создаваемые в тестовом окружении, никогда передаются в банковские информационные системы и, следовательно, не приводят к возникновению затрат.</p>\n<h1 id=\"glossarij\">Глоссарий</h1>\n<p><strong>Мерчант</strong> — юридическое или физическое лицо, принимающее денежные средства от клиентов или выплачивающее денежные средства.</p>\n<p><strong>Маркетплейс</strong> — мерчант (только юридическое лицо), который имеет возможность отправлять запросы на ввод/вывод средств от имени других мерчантов (саб-мерчантов).</p>\n<p><strong>Саб-мерчант</strong> — мерчант (юридическое или физическое лицо), средства на счет которого зачисляются (в случае приема платежей) или списываются (в случае выплат) по запросу от маркетплейса.</p>\n<h1 id=\"okruzheniya\">Окружения</h1>\n<h2 id=\"тестовое-окружение-stage\">Тестовое окружение (stage)</h2>\n<p>Параметр <code>{{domain}}</code> для тестового окружения принимает значение:</p>\n<p><strong>api-sandbox.mandarinpay.com</strong></p>\n<p><em>Для подключения тестового окружения Вам необходимо связаться с менеджерами MandarinPay и сообщить данные, необходимые для регистрации личного кабинета. В личном кабинете авторизационные данные можно найти, следуя <a href=\"https://mandarinbank.omnidesk.ru/knowledge_base/item/79723\">инструкции</a>.</em></p>\n<h2 id=\"боевое-окружение-prod\">Боевое окружение (prod)</h2>\n<p>Параметр <code>{{domain}}</code> для боевого окружения принимает значение:</p>\n<p><strong>api.mandarinpay.com</strong></p>\n<h1 id=\"testovye-karty\">Тестовые карты</h1>\n<p>Данные тестовых карт для проверки работоспособности <strong>на тестовом окружении</strong>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Параметр</th>\n<th>Значение</th>\n<th>Комментарий</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Срок действия</td>\n<td>Любой</td>\n<td>Позднее текущего месяца в формате ММ/ГГ</td>\n</tr>\n<tr>\n<td>CVV</td>\n<td>Любой</td>\n<td></td>\n</tr>\n<tr>\n<td>Имя держателя карты</td>\n<td>CARD HOLDER</td>\n<td></td>\n</tr>\n<tr>\n<td>Номер карты</td>\n<td>4782776496928582, 5167448623781910, 6762355253772803</td>\n<td>Для имитации неуспешных транзакций</td>\n</tr>\n<tr>\n<td>Номер карты</td>\n<td>4692065455989192, 5210177935176090, 6761438221045105</td>\n<td>Для имитации успешных транзакций (без 3DSecure)</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"monitoring-vo-vremya-otladki-heartbeat\">Мониторинг во время отладки (heartbeat)</h1>\n<p>Инструмент <strong>HeartBeat</strong> осуществляет мониторинг транзакций и callback-уведомлений:</p>\n<ul>\n<li>Мониторинг транзакций: <a href=\"https://secure.mandarinpay.com/admin/heartbeat/transactions\">HeartBeat - Транзакции</a></li>\n<li>Мониторинг привязок банковских карт: <a href=\"https://secure.mandarinpay.com/admin/heartbeat/card-bindings\">HeartBeat - Привязки</a></li>\n<li>Мониторинг callback-уведомлений: <a href=\"https://secure.mandarinpay.com/admin/heartbeat/notifications\">HeartBeat - Уведомления</a>\nЗдесь находится список callback-уведомлений, по которым не получены ответы со статусом \"200-ОК\".</li>\n</ul>\n<p>Для входа используйте <code>MerchantID</code> и <code>Secret</code> в качестве логина и пароля соответственно.</p>\n<h1 id=\"autentifikaciya\">Аутентификация</h1>\n<h2 id=\"аутентификация-через-хэш-x-auth\">Аутентификация через хэш (X-auth)</h2>\n<p>Запрос должен быть с заголовком <code>Content-Type: application/json</code>. Авторизация запросов к API происходит путем использования API Secret Key и вашего Merchant ID для формирования заголовка X-Auth следующего содержания: <code>merchantId-SHA256(merchantId-requestId-secret)-requestId</code></p>\n<p><code>requestId</code> - уникальный номер запроса, представляющий из себя текущий таймстамп в миллисекундах, либо набор байт, сгенерированный криптографически-надёжным генератором случайных числел.</p>\n<p>API запросы без заголовка или с некорректным заголовком, в том числе некорректным <code>X-Auth</code>, будут отклонены без создания транзакций.</p>\n<p>Для проверки корректности расчета <code>X-Auth</code> можете воспользоваться <a href=\"http://docs.mandarinbank.com/files/SecureMandarinSignCalculator.exe\">данной утилитой.</a></p>\n<p>Пример расчета <code>Х-Auth</code> на PHP:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>&lt;?php\nfunction gen_auth($merchantId, $secret)\n{\n     $reqid = time() .\"_\". microtime(true) .\"_\". rand();\n     $hash = hash(\"sha256\", $merchantId .\"-\". $reqid .\"-\". $secret);\n     return $merchantId .\"-\".$hash .\"-\". $reqid;\n}\n?&gt;\n</code></pre><h1 id=\"sinhronnye-otvety\">Синхронные ответы</h1>\n<p>MandarinPay использует стандартные HTTP коды для индикации успешности или неуспешности API запросов. \nВ общем случае, коды формата <code>2хх</code> означают успешность, коды формата <code>4xx</code> говорят о неуспешности запроса в связи с предоставленной информацией (отсутствие нужного формата, неверно сформированный заголовок и т.д.), коды в формате <code>5хх</code> говорят о неисправности на стороне сервера MandarinPay (довольно редкий случай).</p>\n<p><strong>Примеры ответов</strong></p>\n<p>Запрос обработан корректно, транзакция создана:\n<code>200-OK</code></p>\n<p>Для транзакции:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"id\": \"43913ddc000c4d3990fddbd3980c1725\",\n  \"userWebLink\": \"https://secure.mandarinpay.com/Pay?transaction=0eb51e74-e704-4c36-b5cb-8f0227621518\",\n  \"jsOperationId\": \"9874694yr87y73e7ey39ed80\"\n}\n</code></pre><p>Для привязки:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n    \"id\": \"0eb51e74-e704-4c36-b5cb-8f0227621518\",\n    \"userWebLink\": \"https://secure.mandarinpay.com/CardBindings/New?id=0eb51e74-e704-4c36-b5cb-8f0227621518\",\n    \"jsOperationId\": \"binding-4994591t5-194t694159t-43t5345\"\n}\n</code></pre><p>Запрос некорректен, транзакция не создана:\n<code>400-Bad Request</code></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"error\": \"Invalid request\"\n}\n</code></pre><p>Перечень полей и их описание</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Поле</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>id созданной операции</td>\n</tr>\n<tr>\n<td>userWeblink</td>\n<td>Ссылка для перенаправления пользователя при работе с платежной страницей</td>\n</tr>\n<tr>\n<td>jsOperationId</td>\n<td>Идентификатор операции для использования с CustomPay</td>\n</tr>\n<tr>\n<td>error</td>\n<td>Текстовое описание ошибки</td>\n</tr>\n</tbody>\n</table>\n</div><p>После получения прямого ответа существует три варианта развития событий:</p>\n<p><strong>1. Для использования платежной страницы</strong></p>\n<p>Перенаправить пользователя по ссылке, полученной в качестве <code>userWebLink</code> (см. в отдельной главе).</p>\n<p><strong>2. Для использования встроенной формы CustomPay</strong></p>\n<p>Использовать значение из <code>jsOperationId</code> в качестве <code>OperationId</code> в соответствии с описанием (см. в отдельной главе).</p>\n<p><strong>3. Для запросов с асинхронным ответом</strong></p>\n<p>Ожидать callback, значение <code>id</code> которого будет равно значению <code>id</code>, полученному в синхронном ответе.</p>\n<p>Далее в описании запросов указано, выполняются ли они синхронно, или помимо синхронного ответа будет также асинхронный callback.</p>\n<h1 id=\"asinhronnye-otvety-callback\">Асинхронные ответы (Callback)</h1>\n<p>Уведомления высылаются на <code>CallbackUrl</code> POST-запросом с <code>Content-Type: application/x-www-urlencoded</code>. Значение <code>CallbackUrl</code> необходимо передавать в составе соответствующего запроса к API.</p>\n<p>Для подтверждения того, что уведомление пришло именно от системы MandarinPay, а также тот факт, что данные переданные в уведомлении не были искажены, необходимо проверять значение поля <code>sign</code>.</p>\n<p>Поле <code>sign</code> представляет из себя SHA256-сумму от значений всех параметров уведомления, отсортированных алфавитно по именам и <code>Secret</code>, разделённых символом <code>-</code>.</p>\n<p><strong>ОБРАТИТЕ ВНИМАНИЕ</strong>\n<strong>ВСЕ ПОЛЯ УВЕДОМЛЕНИЯ ДОЛЖНЫ БЫТЬ ОТСОРТИРОВАНЫ В АЛФАВИТНОМ ПОРЯДКЕ С ИСПОЛЬЗОВАНИЕМ СТАНДАРТНОГО АЛГОРИТМА СОРТИРОВКИ ВАШЕГО ЯЗЫКА ПРОГРАММИРОВАНИЯ!</strong></p>\n<p>Для проверки правильности расчета <code>sign</code> можете воспользоваться <a href=\"http://docs.mandarinbank.com/files/SecureMandarinSignCalculator.exe\">данной утилитой</a>.</p>\n<p><img src=\"http://docs.mandarinbank.com/images/CheckSign.png\" alt=\"screen\"></p>\n<ul>\n<li>Вставьте тело <code>callback</code> в поле (1);</li>\n<li>Вставьте <code>Secret</code> в поле (2);</li>\n<li>Значение <code>Sign</code> будет рассчитано автоматически в поле (3).</li>\n</ul>\n<p><em><strong>В качестве ответа, обозначающего, что callback успешно обработан на вашей стороне, необходимо вернуть в MandarinPay ответ с HTTP-код <code>200</code> и телом <code>OK</code>.</strong></em></p>\n<p><strong>Обратите внимание</strong></p>\n<p><strong>Любой другой ответ будет означать, что callback не обработан. В этом случае MandarinPay повторяет отправку callback-запроса в течение 2 суток, или до получения ответа об успешной обработке (в зависимости от того, что наступит ранее).</strong></p>\n<p>В зависимости от значения <em>object_type</em> уведомления бывают следующих видов:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Тип</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>card_binding</td>\n<td>Привязка карты</td>\n</tr>\n<tr>\n<td>transaction</td>\n<td>Транзакция</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Обратите внимание</strong>\n<strong>Состав полей в callback-уведомлении может меняться, для этих целей добавлена “соль”, поэтому важно использовать корректный обработчик и не хардкодить набор полей.</strong></p>\n<p>Перечень и описание полей, передаваемых в составе <em>callback</em>-уведомления</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Поле</th>\n<th>Обязателен</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>3dsecure</td>\n<td>Нет</td>\n<td>Индикатор подтверждения платежа с помощью ввода кода 3D Secure</td>\n</tr>\n<tr>\n<td>action</td>\n<td>Нет</td>\n<td>Действие (покупка <code>pay</code> или выплата на карту <code>payout</code>), актуально только  для транзакций</td>\n</tr>\n<tr>\n<td>callbackUrl</td>\n<td>Нет</td>\n<td>Адрес для отправки callback</td>\n</tr>\n<tr>\n<td>card_binding</td>\n<td>Нет</td>\n<td>ID привязки в системе, актуален только для привязок</td>\n</tr>\n<tr>\n<td>card_expiration_month</td>\n<td>Нет</td>\n<td>Месяц срока действия карты</td>\n</tr>\n<tr>\n<td>card_expiration_year</td>\n<td>Нет</td>\n<td>Год срока действия карты</td>\n</tr>\n<tr>\n<td>card_holder</td>\n<td>Нет</td>\n<td>Владелец карты</td>\n</tr>\n<tr>\n<td>card_number</td>\n<td>Нет</td>\n<td>Номер карты (маскированный)</td>\n</tr>\n<tr>\n<td>cb_processed_at</td>\n<td>Нет</td>\n<td>Дата и время обработки операции</td>\n</tr>\n<tr>\n<td>customer_fullName</td>\n<td>Нет</td>\n<td>ФИО пользователя</td>\n</tr>\n<tr>\n<td>customer_email</td>\n<td>Нет</td>\n<td>Адрес email пользователя</td>\n</tr>\n<tr>\n<td>customer_phone</td>\n<td>Нет</td>\n<td>Телефон пользователя</td>\n</tr>\n<tr>\n<td>destinationWallet</td>\n<td>Нет</td>\n<td>ID аккаунта получателя</td>\n</tr>\n<tr>\n<td>email</td>\n<td>Нет</td>\n<td>Email пользователя</td>\n</tr>\n<tr>\n<td>error_code</td>\n<td>Нет</td>\n<td>Код ошибки. Отсутствие кода не гарантирует успешность операции!</td>\n</tr>\n<tr>\n<td>error_description</td>\n<td>Нет</td>\n<td>Описание ошибки</td>\n</tr>\n<tr>\n<td>gw_channel</td>\n<td>Нет</td>\n<td>Название канал для перевода средств</td>\n</tr>\n<tr>\n<td>gw_id</td>\n<td>Нет</td>\n<td>ID канала для перевода средств</td>\n</tr>\n<tr>\n<td>merchantId</td>\n<td>Да</td>\n<td>ID мерчанта</td>\n</tr>\n<tr>\n<td>object_type</td>\n<td>Да</td>\n<td>Тип объекта (транзакция <code>transaction</code> или привязка <code>binding</code>)</td>\n</tr>\n<tr>\n<td>orderActualTill</td>\n<td>Нет</td>\n<td>Срок резервирования товара/услуги. После указанной даты оплата будет невозможна</td>\n</tr>\n<tr>\n<td>orderId</td>\n<td>Да</td>\n<td>Уникальный номер заказа в системе Продавца</td>\n</tr>\n<tr>\n<td>price</td>\n<td>Да</td>\n<td>Сумма платежа. Обязательна к передаче в текущей версии системы (кроме привязок)</td>\n</tr>\n<tr>\n<td>returnUrl</td>\n<td>Нет</td>\n<td>Адрес магазина для переадресации по окончанию операции</td>\n</tr>\n<tr>\n<td>sourceWallet</td>\n<td>Нет</td>\n<td>ID аккаунта отправителя</td>\n</tr>\n<tr>\n<td>status</td>\n<td>Да</td>\n<td>Статус операции: <code>success</code>, <code>failed</code>, <code>payout-only</code>. <strong>Только статус <code>success</code> однозначно указывает на успешность операции!</strong></td>\n</tr>\n<tr>\n<td>transaction</td>\n<td>Нет</td>\n<td>ID транзакции в системе. Актуален только для транзакций</td>\n</tr>\n<tr>\n<td>transaction_rrn</td>\n<td>Нет</td>\n<td>Retrieval Reference Number - уникальный идентифкатор транзакции в системе   Банка-эмитента банковской карты</td>\n</tr>\n<tr>\n<td>d6797d04-d688-4a55-8190-861224243701</td>\n<td>Да</td>\n<td>Соль (UUID для названия и значения параметра генерируются случайным образом)</td>\n</tr>\n<tr>\n<td>sign</td>\n<td>Да</td>\n<td>Подпись для аутентификации</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Пример callback-уведомления об успешной оплате</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>3dsecure=true&amp;action=pay&amp;callbackUrl=http%3A%2F%2Fapi.example.com%2Fpayment%2Fcallback&amp;card_expiration_month=09&amp;card_expiration_year=2020&amp;card_holder=CARD%20HOLDER&amp;card_number=426101XXXXXX0981&amp;cb_customer_creditcard_number=426101XXXXXX0981&amp;cb_processed_at=2019-07-02T17%3A19%3A48.9263239Z&amp;customer_email=payer%40example.com&amp;customer_fullName=%20%20&amp;destinationWallet=77da9a25-6375-4564-ae16-4b7cf67abcbd&amp;email=payer%40example.com&amp;gw_channel=psb&amp;gw_id=21170999&amp;merchantId=1155&amp;object_type=transaction&amp;orderActualTill=2019-07-02%2017%3A38%3A49%2B00%3A00&amp;orderId=pmnt664-41-1562087929&amp;payment_system=mandarinpayv1&amp;price=200&amp;returnUrl=http%3A%2F%2Fapi.example.com%2Fpayment%2Freturn&amp;sourceWallet=None&amp;status=success&amp;transaction=9077846044464860b77f5bd21db014d1&amp;transaction_rrn=918391478368&amp;d6797d04-d688-4a55-8190-861224243701=fde5f8f3-f207-4006-abe6-ad2e1eaddab6&amp;sign=9bb79a61ac033c9fa4ed9e34ff924125a4f591fb824aa116002d21c1f1a1d45c\n</code></pre><p><strong>Пример callback-уведомления о успешной выплате</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>action=payout&amp;callbackUrl=http%3A%2F%2Fapi.example.com%2Fpayment%2Fcallback&amp;card_number=479087XXXXXX7961&amp;cb_customer_creditcard_number=479087XXXXXX7961&amp;cb_processed_at=2019-07-02T13%3A23%3A46.1177446Z&amp;customer_email=payer%40example.com&amp;customer_fullName=%20%20&amp;customer_phone=%2B79265115520&amp;destinationWallet=None&amp;email=payer%40example.com&amp;gw_channel=psb_ng&amp;gw_id=21161072&amp;merchantId=1155&amp;object_type=transaction&amp;orderActualTill=2019-07-04%2013%3A23%3A43Z&amp;orderId=pmnt331-6-1562073823&amp;payment_system=mandarinpayv1&amp;price=67.96&amp;returnUrl=http%3A%2F%2Fapi.example.com%2Fpayment%2Freturn&amp;sourceWallet=3cee651d-5f4a-4cc3-83b8-83646ae8a84b&amp;status=success&amp;transaction=d09cebe4b07c4171ae9a8f23d1b22eb8&amp;transaction_rrn=918347529420&amp;81476cc7-215f-4416-9649-174633cd71b0=9cce5a9a-06ac-4668-864f-99550d3fc6d2&amp;sign=c96f954bf6ff5928e044d361eca5ab463aa135ff29423a2c5c81301880034773\n</code></pre><p><strong>Пример callback-уведомления об отсутствии оплаты в течение срока резервирования товара (ошибка)</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>action=pay&amp;callbackUrl=http%3A%2F%2Fapi.example.com%2Fpayment%2Fcallback&amp;customer_email=eagles%40chay.mobi&amp;customer_fullName=%20%20&amp;destinationWallet=77da9a25-6375-4564-ae16-4b7cf67abcbd&amp;email=payer%40example.com&amp;merchantId=1155&amp;object_type=transaction&amp;orderActualTill=2019-07-02%2019%3A28%3A43%2B00%3A00&amp;orderId=pmnt664-41-1562094523&amp;payment_system=mandarinpayv1&amp;price=400&amp;returnUrl=http%3A%2F%2Fapi.example.com%2Fpayment%2Freturn&amp;sourceWallet=None&amp;status=failed&amp;transaction=1bc6f9c909c4403099ea4a512fa42fb0&amp;2133d4e2-59b4-409e-af51-fd5b7479b708=2c004082-f99a-42a2-9deb-7326c6ab5737&amp;sign=c3b32530a12e93f65b9a3ef76955bbc318ea22f6daa8aa4114b72d56d602b3e9\n</code></pre><p><strong>Пример проверки sign</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>&lt;?php\nfunction check_sign($secret, $req)\n{\n        $sign = $req['sign'];\n        unset($req['sign']);\n        $to_hash = '';\n        if (!is_null($req) &amp;&amp; is_array($req)) {\n                ksort($req);\n                $to_hash = implode('-', $req);\n        }\n\n        $to_hash = $to_hash .'-'. $secret;\n        $calculated_sign = hash('sha256', $to_hash);\n        return $calculated_sign == $sign;\n}\n\ncheck_sign(\"123\", $_POST);\n?&gt;\n</code></pre><h1 id=\"id-platezha\">ID Платежа</h1>\n<p>Каждый вызов API имеет ассоциируемый с ним идентификатор, который называется ID платежа (PaymentID) и передается в составе прямого ответа в качестве <code>id</code>. Он также присутствует в составе callback-уведомления в качестве значения <code>transaction</code> или <code>card_binding</code>.</p>\n<p>ID платежа также доступен в таблице транзакций в вашем личном кабинете на сайте mandarinpay.com (на рисунке ниже) и в интерфейсе Heartbeat.</p>\n<p><img src=\"https://nextcloud.mandarinbank.com/index.php/s/5qt8FHbDQHzXNQ3/preview\" alt=\"alt PaymentID\"></p>\n<p><strong>При обращении в Службу поддержки по конкретному платежу наличие 'id' платежа существенно ускорит получение ответа.</strong></p>\n<h1 id=\"polzovatelskij-interfejs\">Пользовательский интерфейс</h1>\n<h2 id=\"платежная-страница-payment-page\">Платежная страница (Payment Page)</h2>\n<p>Платежная страница MandarinPay имеет адаптивный дизайн, содержит ваш логотип, а также информацию о платеже, переданную вами в API запросе.</p>\n<p>Для работы с платежной страницей вам необходимо использовать перенаправление пользователя на страницу оплаты, полученную в параметре <code>userWebLink</code> синхронного ответа на ваш API запрос.</p>\n<h2 id=\"встроенная-форма-оплаты-custompay\">Встроенная форма оплаты (CustomPay)</h2>\n<p>Встроенная форма оплаты CustomPay позволяет осуществить полноценную интеграцию в ваш интерфейс. При этом отсутствует требование к Вам по соответствию стандарту безопасности банковских карт PCI DSS.</p>\n<p>CustomPay представляет собой форму с полями, которые на самом деле являются отдельными страницами в iframe-ах. Соответственно, вы можете стилизовать всё, что эти самые iframe-ы окружает.</p>\n<p>Логически такая форма состоит из 2 частей:</p>\n<ul>\n<li>набор div-ов с классами <code>mandarinpay-field-card-number</code>, <code>mandarinpay-field-card-holder</code>, <code>mandarinpay-field-card-expiration</code> и <code>mandarinpay-field-card-cvv</code>, внутрь этих div-ов будут помещены iframe-ы</li>\n<li>Javascript-а, запускающего процесс установки iframe-ов и обрабатывающего нажатие на кнопку\nДля начала работы необходимо подключить <code>&lt;script src=\"https://secure.mandarinpay.com/api/hosted.js\"&gt;&lt;/script&gt;</code>, затем вызвать <code>mandarinpay.hosted.setup</code>, передав ему селектор формы, а так же функции для вызова при успехе либо ошибке. В обработчике события нажатия на кнопку следует вызвать <code>return mandarinpay.hosted.process(this)</code>; (вместо <code>this</code> можно использовать селектор формы).</li>\n</ul>\n<p>В качестве <code>operationId</code> необходимо передать значение, полученное в прямом ответе MandarinPay в поле <code>jsOperationid</code>.</p>\n<p>По мере взаимодействия формы с пользователем div-ам могут быть присвоены классы <code>mandarinpay-field-state-error</code>, <code>mandarinpay-field-state-focused</code> и <code>mandarinpay-field-state-valid</code>.</p>\n<p><em><strong>Пример формы:</strong></em>\n<img src=\"https://nextcloud.mandarinbank.com/index.php/s/yApEzALrjss6oC9/preview\" alt=\"alt CustomPay\"></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>&lt;form id=\"form-hosted-pay\"&gt;\n  &lt;div style=\"margin: 10px; padding: 10px; border: 1px solid gray\"&gt;\n    Card Number:\n    &lt;div class=\"mandarinpay-field-card-number hosted-field\"&gt;&lt;div class=\"glyphicon glyphicon-check\"&gt;&lt;/div&gt;&lt;/div&gt;\n    Card Holder:\n    &lt;div class=\"mandarinpay-field-card-holder hosted-field\"&gt;&lt;div class=\"glyphicon glyphicon-check\"&gt;&lt;/div&gt;&lt;/div&gt;\n    Card Expiration:\n    &lt;div class=\"mandarinpay-field-card-expiration hosted-field\"&gt;&lt;div class=\"glyphicon glyphicon-check\"&gt;&lt;/div&gt;&lt;/div&gt;\n    CVV:\n    &lt;div class=\"mandarinpay-field-card-cvv hosted-field\"&gt;&lt;div class=\"glyphicon glyphicon-check\"&gt;&lt;/div&gt;&lt;/div&gt;\n    &lt;br/&gt;\n    &lt;a href=\"#\" onclick=\"return mandarinpay.hosted.process(this);\" class=\"btn btn-default\"&gt;Оплатить&lt;/a&gt;\n  &lt;/div&gt;\n&lt;/form&gt;\n</code></pre><p><em><strong>Инициализация (подключение) скрипта:</strong></em></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>&lt;script&gt;\nmandarinpay.hosted.setup(\"#form-hosted-pay\", {\n  operationId: \"9874694yr87y73e7ey39ed80\",\n  onsuccess: function(data) {\n    alert(\"Success, id: \" + data.transaction.id);\n  },\n  onerror: function(data) {\n    alert(\"Error: \" + data.error);\n  }\n});\n&lt;/script&gt;\n</code></pre><p>По факту успешного проведения оплаты, скрипт вызывает функцию <code>onsuccess</code> (передавая <code>id</code> транзакции), при ошибке - функцию <code>onerror</code>.</p>\n<p><em><strong>CSS для полей:</strong></em></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>.hosted-field\n{\n    background: #f0f0f0;\n    height: 40px;\n    padding: 5px;\n    border: 1px solid gray;\n    border-radius: 10px;\n}\n\n.hosted-field {\n    position: relative;\n}\n\n.hosted-field .glyphicon {\n    visibility: hidden;\n    position: absolute;\n    right: 5px;\n    top: 5px;\n    color: green;\n    float: right;\n}\n\n.mandarinpay-field-state-error\n{\n    background: #fff0f0;\n    border: 1px solid #900000;\n}\n\n.mandarinpay-field-state-focused\n{\n    background: #ffffff;\n    border: 1px solid yellowgreen;\n}\n\n.mandarinpay-field-state-valid {\n    background: #c0ffc0 !important;\n    border: 1px solid green !important;\n}\n\n.mandarinpay-field-state-valid  .glyphicon{\n    visibility: visible;\n}\n</code></pre><h2 id=\"стилизация-текстовых-полей\">Стилизация текстовых полей</h2>\n<p>Стилизация осуществляется посредством добавления соответствующего поля в объект, передаваемый <code>mandarinpay.hosted.setup</code>. Для изменения доступны плейсхолдер и ряд CSS-стилей.</p>\n<p>Для использования доступны:</p>\n<ul>\n<li><code>color</code> в формате <code>#000000</code></li>\n<li><code>font-size</code> с единицами <code>px</code> и <code>pt</code></li>\n<li><code>font-family</code> (можно использовать запятые и кавычки)</li>\n<li><code>font-style</code></li>\n</ul>\n<p>Пример стилизации</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>mandarinpay.hosted.setup(\"#form-hosted-pay\",\n{\n    onsuccess: function(data) {alert(\"Success, id: \" + data.transaction.id);},\n    onerror: function(data) {alert(\"Error: \" + data.error);},\n    fields:\n    {\n        \"card-number\": {\n            settings: {\n                placeholder: \"НОМЕР КАРТЫ\",\n                styles: {\n                    \"font-size\": \"20px\",\n                    \"font-family\": \"Helvetica\",\n                    \"color\": \"#0000c0\"\n                },\n                placeholderStyles: {\n                    \"color\": \"pink\"  \n                },\n            }\n        }\n    }\n});\n</code></pre></body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Глоссарий","slug":"glossarij"},{"content":"Окружения","slug":"okruzheniya"},{"content":"Тестовые карты","slug":"testovye-karty"},{"content":"Мониторинг во время отладки (heartbeat)","slug":"monitoring-vo-vremya-otladki-heartbeat"},{"content":"Аутентификация","slug":"autentifikaciya"},{"content":"Синхронные ответы","slug":"sinhronnye-otvety"},{"content":"Асинхронные ответы (Callback)","slug":"asinhronnye-otvety-callback"},{"content":"ID Платежа","slug":"id-platezha"},{"content":"Пользовательский интерфейс","slug":"polzovatelskij-interfejs"}],"owner":"8249987","collectionId":"7f91e324-1fe4-4936-94ab-b8a6d7a805dc","publishedId":"SztG3m1f","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"F68721"},"publishDate":"2020-06-02T19:27:41.000Z"},"item":[{"name":"Создание аккаунта","item":[{"name":"Создание аккаунта","event":[{"listen":"test","script":{"id":"f420f4f6-c817-459a-9780-2a168e6962b3","exec":["var jsonData = JSON.parse(responseBody);\r","pm.environment.set(\"account_id\", jsonData.id);"],"type":"text/javascript"}}],"id":"731b3956-4a82-4359-8554-1cf1c36a60fb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"{{x_auth}}","type":"text","description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n"}],"body":{"mode":"raw","raw":"{\n    \"type\": \"person\",\n    \"person\": {\n        \"phone\": \"{{mobile_phone}}\"   \n    }\n}"},"url":"https://{{domain}}/v1/wallets","description":"<p><strong>Запрос выполняется синхронно.</strong></p>\n<p><strong>Ответ может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>Аккаунт необходимо создавать в случае, если с него планируются расходные операции на другие аккаунты, на банковские карты и прочие способы оплаты, а также приходные операции с других Аккаунтов, а также холдирования средств клиента.</p>\n<p>Использовать аккаунт как транзит, то есть для пополнения и одновременного перечисления на другой аккаунт не имеет смысла. В этом случае целесообразней напрямую совершать пополнение целевого аккаунта выбранным способом оплаты.</p>\n<p>Для создания аккаунта физлица, необходимо указать номер его телефона. Остальная информация предоставляется во время идентификации.</p>\n<p>Синхронный ответ содержит идентификатор аккаунта.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","wallets"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"283d46c5-05bb-49ed-be50-7b50d9c6cf8b","name":"Создание аккаунта [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"type\": \"person\",\n    \"person\": {\n        \"phone\": \"+71234567890\"\n    }\n}"},"url":"https://api-sandbox.mandarinpay.com/v1/wallets"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Tue, 02 Jul 2019 09:23:38 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"46"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"d1387389-b6c7-4a80-81a4-3960ed96cfd0\"\n}"}],"_postman_id":"731b3956-4a82-4359-8554-1cf1c36a60fb"},{"name":"Запрос баланса","id":"62db582c-2236-4514-a083-42d62430c715","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"X-Auth","value":"{{x_auth}}","type":"text","description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n"}],"url":"https://{{domain}}/v1/wallets/{{account_id}}/balance","description":"<p><strong>Запрос выполняется синхронно.</strong></p>\n<p><strong>Ответ может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>Синхронный ответ содержит баланс аккаунта.</p>\n","urlObject":{"protocol":"https","path":["v1","wallets","{{account_id}}","balance"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"412dad2d-af42-476f-8ddd-ca323c1d329b","name":"Баланс аккаунта после пополнения [Stage]","originalRequest":{"method":"GET","header":[{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"url":"https://api-sandbox.mandarinpay.com/v1/wallets/d1387389-b6c7-4a80-81a4-3960ed96cfd0/balance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Tue, 02 Jul 2019 09:58:57 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"12"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"RUB\": 5000.0\n}"},{"id":"44f90d45-1f39-478b-88ea-a7aed29966f4","name":"Баланс нового аккаунта [Stage]","originalRequest":{"method":"GET","header":[{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"url":"https://api-sandbox.mandarinpay.com/v1/wallets/d1387389-b6c7-4a80-81a4-3960ed96cfd0/balance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Tue, 02 Jul 2019 09:38:15 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"12"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"RUB\": 0\n}"}],"_postman_id":"62db582c-2236-4514-a083-42d62430c715"}],"id":"ea094c49-b667-4650-a7cd-beab339c94dd","description":"<p>Для получения средств, последующего вывода и другого использования электронных средств платежа (ЭСП), пользователь (ФЛ) должен иметь аккаунт.</p>\n<p>После создания, аккаунт имеет уровень идентификации <strong>ЭСП 1 (владелец не идентифицирован)</strong>.</p>\n<p>Далее необходимо произвести упрощенную идентификацию владельца аккаунта с помощью API. После ее успешного окончания, аккаунт получает уровень <strong>ЭСП 2 (владелец упрощенно идентифицирован).</strong> Теперь на аккаунт можно принимать платежи с банковской карты, хранить и выводить средства на банковскую карту. При этом лимиты на сумму операций довольно строгие.</p>\n<p>Для увеличения лимитов, владелец может пройти полную идентификацию. Для этого необходимо посетить <a href=\"https://ribank.ru/kontakty/\">офис расчетного банка в Москве</a>. Аккаунт получает тип <strong>ЭСП 3 (владелец прошел полную идентификацию)</strong>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Уровень идентификации</th>\n<th>Максимальный остаток на балансе после проведения любой операции (руб.)</th>\n<th>Максимальный объем переводов, всего (руб.)</th>\n<th>Максимальный объем вывода на карту и аккаунт (руб.)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>ЭСП 1 (ФЛ, владелец не идентифицирован)</td>\n<td>0</td>\n<td>0</td>\n<td>Запрещен</td>\n</tr>\n<tr>\n<td>ЭСП 2 (ФЛ, владелец упрощенно идентифицирован)</td>\n<td>15 тыс.</td>\n<td>15 тыс./операция и 40 тыс./месяц, на ЮЛ и ФЛ</td>\n<td>15 тыс./операция и 40 тыс./месяц</td>\n</tr>\n<tr>\n<td>ЭСП 3 (ФЛ, владелец прошел полную идентификацию)</td>\n<td>600 тыс.</td>\n<td>600 тыс./операция, месячного лимита нет, на ЮЛ и ФЛ</td>\n<td>600 тыс./операция, месячного лимита нет</td>\n</tr>\n</tbody>\n</table>\n</div>","event":[{"listen":"prerequest","script":{"id":"0df9610b-ed3e-4db4-93d7-971f464bbec5","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"7f1188ea-c851-48cc-a4ae-8e9a34c20b1a","type":"text/javascript","exec":[""]}}],"_postman_id":"ea094c49-b667-4650-a7cd-beab339c94dd"},{"name":"Упрощенная идентификация аккаунта","item":[{"name":"Создание запроса на упрощенную идентификацию по паспорту и СНИЛС","event":[{"listen":"test","script":{"id":"d0d4b42d-53d5-402e-87bf-400b49f9b915","exec":["var jsonData = JSON.parse(responseBody);\r","pm.environment.set(\"session_id\", jsonData.sessionId);"],"type":"text/javascript"}}],"id":"671eae80-a86c-4c50-b652-ceb9d05c3f34","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"{{x_auth}}","type":"text","description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n"}],"body":{"mode":"raw","raw":"{\r\n\t\"phone\": \"{{mobile_phone}}\",\r\n\t\"firstName\": \"{{first_name}}\",\r\n\t\"patronymic\": \"{{patronymic}}\",\r\n\t\"lastName\": \"{{last_name}}\",\r\n\t\"passportSeries\": \"{{passport_series}}\",\r\n\t\"passportNumber\": \"{{passport_number}}\",\r\n\t\"snils\": \"{{snils}}\"\r\n}"},"url":"https://{{domain}}/v1/wallets/{{account_id}}/identification","description":"<p><strong>Запрос выполняется синхронно.</strong></p>\n<p><strong>Ответ может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>Запрос содержит номер телефона, номер паспорта, ФИО и номер СНИЛС. В качестве значения <code>accountId</code> используется идентификатор созданного ранее аккаунта. \nВ случае успешной регистрации запроса Вам вернется идентификатор сессии <code>sessionId</code>, а на используемый номер телефона будет отправлено смс-сообщение с кодом для подтверждения номера телефона.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","wallets","{{account_id}}","identification"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"fcf3a743-9477-480b-aadf-de9b503f6904","name":"По паспорту и СНИЛС [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{    \n    \"phone\": \"+71234567890\",\n    \"firstName\": \"Иван\",\n    \"patronymic\": \"Иванович\",\n    \"lastName\": \"Иванов\",\n    \"passportSeries\": \"1111\",\n    \"passportNumber\": \"111111\",\n    \"snils\": \"19033603123\"\n}"},"url":"https://api-sandbox.mandarinpay.com/v1/wallets/d1387389-b6c7-4a80-81a4-3960ed96cfd0/identification"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Tue, 02 Jul 2019 11:50:21 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"53"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"sessionId\": \"0dae98e5-8274-42fe-9e65-a884087d4e9b\"\n}"}],"_postman_id":"671eae80-a86c-4c50-b652-ceb9d05c3f34"},{"name":"Создание запроса на упрощенную идентификацию по паспорту и ИНН","event":[{"listen":"test","script":{"id":"bde6b2d6-8622-4c06-9641-caa0dd55c55f","exec":["var jsonData = JSON.parse(responseBody);\r","pm.environment.set(\"session_id\", jsonData.sessionId);"],"type":"text/javascript"}}],"id":"1f5e0d83-d510-44d1-9df4-55888c5abc73","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"{{x_auth}}","type":"text","description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n"}],"body":{"mode":"raw","raw":"{\r\n\t\"phone\": \"{{mobile_phone}}\",\r\n\t\"firstName\": \"{{first_name}}\",\r\n\t\"patronymic\": \"{{patronymic}}\",\r\n\t\"lastName\": \"{{last_name}}\",\r\n\t\"passportSeries\": \"{{passport_series}}\",\r\n\t\"passportNumber\": \"{{passport_number}}\",\r\n\t\"inn\": \"{{inn}}\"\r\n}"},"url":"https://{{domain}}/v1/wallets/{{account_id}}/identification","description":"<p><strong>Запрос выполняется синхронно.</strong></p>\n<p><strong>Ответ может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>Запрос содержит номер телефона, номер паспорта, ФИО и номер ИНН. В качестве значения <code>accountId</code> используется идентификатор созданного ранее аккаунта. \nВ случае успешной регистрации запроса Вам вернется идентификатор сессии <code>sessionId</code>, а на используемый номер телефона будет отправлено смс-сообщение с кодом для подтверждения номера телефона.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","wallets","{{account_id}}","identification"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"9f5768f1-03ba-4cfd-bc32-c5aa926d9e49","name":"По паспорту и ИНН [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"phone\": \"+71234567890\",\n    \"firstName\": \"Иван\",\n    \"patronymic\": \"Иванович\",\n    \"lastName\": \"Иванов\",\n    \"passportSeries\": \"1111\",\n    \"passportNumber\": \"111111\",\n    \"inn\": \"501716749325\"\n}"},"url":"https://api-sandbox.mandarinpay.com/v1/wallets/d1387389-b6c7-4a80-81a4-3960ed96cfd0/identification"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Tue, 02 Jul 2019 11:52:53 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"53"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"sessionId\": \"d0d57935-216b-408f-8747-2d6be10cf7d8\"\n}"}],"_postman_id":"1f5e0d83-d510-44d1-9df4-55888c5abc73"},{"name":"Подтверждение телефона","id":"4e989ab1-270e-4b77-98a6-073120b54af9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"PUT","header":[{"key":"X-Auth","value":"{{x_auth}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"code\": \"{{sms_code}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{domain}}/v1/wallets/{{account_id}}/identification/{{session_id}}","description":"<p><strong>Запрос выполняется синхронно.</strong></p>\n<p><strong>Ответ может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>В качестве значения <code>accountId</code> используется идентификатор созданного ранее аккаунта. В качестве значения <code>sessionId</code> используется полученный на предыдущем этапе <code>sessionId</code>.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","wallets","{{account_id}}","identification","{{session_id}}"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"724e3e62-bf6b-4acf-bd8f-387cd1aba955","name":"Подтверждение телефона [Stage]","originalRequest":{"method":"PUT","header":[{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"code\": \"123456\"\n}"},"url":"https://api-sandbox.mandarinpay.com/v1/wallets/d1387389-b6c7-4a80-81a4-3960ed96cfd0/identification/0dae98e5-8274-42fe-9e65-a884087d4e9b"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Tue, 02 Jul 2019 12:01:54 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"104"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept"}],"cookie":[],"responseTime":null,"body":"{\r\n  \"sessionId\": \"0dae98e5-8274-42fe-9e65-a884087d4e9b\"\r\n}"}],"_postman_id":"4e989ab1-270e-4b77-98a6-073120b54af9"},{"name":"Получение статуса идентификации","id":"bd6f62bc-e1e2-4521-826d-6e1449a1a6f5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-Auth","value":"{{x_auth}}","type":"text"}],"url":"https://{{domain}}/v1/wallets/{{account_id}}/identification/{{session_id}}","description":"<p><strong>Запрос выполняется синхронно.</strong></p>\n<p><strong>Ответ может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>Синхронный ответ содержит следующую информацию:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>phoneVerified</td>\n<td>На телефон клиента было выслано СМС-сообщение с кодом. <code>null</code> - клиент не вводил код, <code>true</code> - клиент ввел верный код, <code>false</code> - клиент ввел неверный код</td>\n</tr>\n<tr>\n<td>phoneVerificationFinished</td>\n<td><code>true</code> - проверка СМС-кода завершена, <code>false</code> - проверка СМС-кода не завершена</td>\n</tr>\n<tr>\n<td>personVerified</td>\n<td><code>null</code> - проверка персональных данных клиента не завершена, <code>true</code> - персональные данные клиента верны, <code>false</code> - персональные данные клиента не верны</td>\n</tr>\n<tr>\n<td>personVerificationFinished</td>\n<td><code>true</code> - проверка персональных данных завершена, <code>false</code> - проверка персональных данных не завершена</td>\n</tr>\n<tr>\n<td>personVerificationError</td>\n<td>Строка-описание ошибки в случае ее наличия. При отсутствии ошибок имеет значение <code>null</code></td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["v1","wallets","{{account_id}}","identification","{{session_id}}"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"ccb299b4-18cf-4b8c-bb98-3bff999b5559","name":"Проверка СМС-кода и персональных данных завершена успешно [Stage]","originalRequest":{"method":"GET","header":[{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"url":"https://api-sandbox.mandarinpay.com/v1/wallets/d1387389-b6c7-4a80-81a4-3960ed96cfd0/identification/0dae98e5-8274-42fe-9e65-a884087d4e9b"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Tue, 02 Jul 2019 12:14:03 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"38"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept"}],"cookie":[],"responseTime":null,"body":"{\r\n\t\"phoneVerified\": true,\r\n\t\"phoneVerificationFinished\": true,\r\n\t\"personVerified\": true,\r\n\t\"personVerificationFinished\": true,\r\n\t\"personVerificationError\": null\r\n}"}],"_postman_id":"bd6f62bc-e1e2-4521-826d-6e1449a1a6f5"}],"id":"20eb0900-308d-49d8-8de4-86edcf2884ae","event":[{"listen":"prerequest","script":{"id":"91518178-8201-4de6-b8f3-9aa91ebe7018","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"27340cb9-2d86-4cf5-a525-d0fa44b2acad","type":"text/javascript","exec":[""]}}],"_postman_id":"20eb0900-308d-49d8-8de4-86edcf2884ae","description":""},{"name":"Привязка банковской карты","item":[{"name":"Привязка банковской карты","event":[{"listen":"test","script":{"id":"0cf6b782-48ee-4cbe-a966-e2ee22033450","exec":["var jsonData = JSON.parse(responseBody);\r","pm.environment.set(\"card_id\", jsonData.id);"],"type":"text/javascript"}}],"id":"b897a831-fe98-4d11-9276-9bdc8b452ee0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"{{x_auth}}","type":"text","description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n"}],"body":{"mode":"raw","raw":"{\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    }\n}"},"url":"https://{{domain}}/v1/card-bindings","description":"<p><strong>Запрос выполняется синхронно с дополнительным асинхронным ответом.</strong></p>\n<p><strong>Ответ (как синхронный, так и асинхронный) может содержать более широкий набор полей, чем в примере.</strong></p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","card-bindings"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"cee7443f-79d1-470a-956f-1b91248eadd6","name":"Привязка банковской карты [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    }\n}"},"url":"https://api-sandbox.mandarinpay.com/v1/card-bindings"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 03 Jul 2019 13:09:07 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"Kestrel"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"4c9932c6-5e57-4807-9103-8c4083a06d23\",\n    \"jsOperationId\": \"binding_4c9932c6-5e57-4807-9103-8c4083a06d23\",\n    \"userWebLink\": \"https://secure.stage.psp.io/CardBindings/New?id=4c9932c6-5e57-4807-9103-8c4083a06d23\"\n}"}],"_postman_id":"b897a831-fe98-4d11-9276-9bdc8b452ee0"}],"id":"a8fe1b16-46ee-4a74-a936-bb7ba6d3d806","description":"<p>Привязка карты (binding) используется для целей списания/зачисления на карту без участия пользователя, а также для проверки того, что пользователь имеет доступ к данной карте (списание контрольной суммы, проверка через 3DS).</p>\n<p>Поддерживаются следующие разновидности привязок:</p>\n<ul>\n<li>Полнофункциональная привязка банковской карты (<code>full binding</code>)</li>\n<li>Привязка с нулевым балансом (<code>payout-only</code>)</li>\n<li>Сохранение номера карты (<code>one-side binding</code>)</li>\n</ul>\n<p>Все запросы отправляются на адрес:\n<code>POST https://{{domain}}/v1/transactions</code>, где <code>{{domain}}</code> равен:</p>\n<ul>\n<li><code>api-sandbox.mandarinpay.com</code> - для тестовой среды (Stage);</li>\n<li><code>api.mandarinpay.com</code> - для боевой среды (Prod)</li>\n</ul>\n<p>Транзакция будет осуществлена в асинхронном режиме. В результате запроса вам синхронно придет <code>id</code> транзакции, и асинхронно придет Callback-уведомление.</p>\n<p>Полученные в синхронном ответе <code>userWebLink</code> используйте для работы <em>с платежной страницей</em>, а <code>jsOperationId</code> для работы <em>через CustomPay</em>.</p>\n<p>Возможна ситуация, при которой привязка принудительно переводится в режим <code>payout-only</code>. Это происходит в случаях, когда от платежной системы приходит ответ с кодом, при котором дальнейшее проведение “автосписаний” невозможно. Такая привязка может быть использована для вывода средств на нее или для оплаты в интерактивном режиме (со вводом CVV/CVC-кода).</p>\n<p>Перечень и описание возможных блоков и элементов запроса, а также обязательность их передачи приведены ниже:</p>\n<p><strong>Блок CUSTOMERINFO</strong></p>\n<p><em>Данный блок является ОБЯЗАТЕЛЬНЫМ</em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>email</td>\n<td>Да</td>\n<td>Email пользователя</td>\n</tr>\n<tr>\n<td>phone</td>\n<td>Нет</td>\n<td>Телефон пользователя в формате РФ: <code>+79999999999</code></td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Блок URLS</strong></p>\n<p><em>Блок является НЕОБЯЗАТЕЛЬНЫМ</em></p>\n<p>Данный блок позволяет передать ссылки для отправки callback-уведомления и возврата пользователя с платежной страницы.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>callback</td>\n<td>Нет</td>\n<td>Url для отправки callback-уведомления о статусе транзакции</td>\n</tr>\n<tr>\n<td>return</td>\n<td>Нет</td>\n<td>Url для редиректа пользователя после оплаты</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Блок TARGET</strong></p>\n<p><em>Блок является НЕОБЯЗАТЕЛЬНЫМ</em></p>\n<p>Данный блок предназначен для токенизации номера карты, используемой для того, чтобы не хранить в вашей системе номер карты. Данная операция осуществляется в синхронном режиме - в ответ вы получите <code>id</code> привязки.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>knownCardNumber</td>\n<td>Нет</td>\n<td>Номер карты, используемый для токенизации. Передается, только если привязка используется для сохранения номера карты (<code>one-side binding</code>) и последующего вывода средств на карту (<code>payout</code>)</td>\n</tr>\n</tbody>\n</table>\n</div>","event":[{"listen":"prerequest","script":{"id":"03009e44-1acf-45c8-a878-ba16002e19b5","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"70561927-213c-4c0e-be60-2da766b34100","type":"text/javascript","exec":[""]}}],"_postman_id":"a8fe1b16-46ee-4a74-a936-bb7ba6d3d806"},{"name":"Пополнение аккаунта","item":[{"name":"Одностадийное пополнение с карты","event":[{"listen":"test","script":{"id":"a654dc69-8334-4e4e-8427-fdee4f8decb0","exec":[""],"type":"text/javascript"}}],"id":"7a843783-5bd3-4bda-a0f8-d03aa4b9296a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"{{x_auth}}","type":"text","description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"{{order_id}}\",\n        \"action\": \"pay\",\n        \"price\": \"1000.00\",\n        \"merchantFee\": \"130.00\",\n        \"destinationWallet\": \"{{account_id}}\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    }\n}"},"url":"https://{{domain}}/v1/transactions","description":"<p><strong>Запрос выполняется синхронно с дополнительным асинхронным ответом.</strong></p>\n<p><strong>Ответ (как синхронный, так и асинхронный) может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>Одностадийная оплата предполагает, что денежные средства списываются с карты в рамках одного запроса.\nВ процессе оплаты клиент вводит данные карты.</p>\n<p><em><strong>ВАЖНО!</strong></em></p>\n<p>В примере ниже с карты плательщика будет списано 1000 рублей. Саб-мерчант получает 870 рублей.\nМаркетплейс получает 130 рублей в виде комиссии (комиссия учитывается <strong>внутри суммы</strong> к списанию), из которой 30 рублей будет списано как комиссия MandarinPay (согласно условиям договора).</p>\n<p>Транзакция будет осуществлена в асинхронном режиме. В результате запроса вам синхронно придет <code>id</code> транзакции, и асинхронно придет callback-уведомление.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","transactions"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"9fe1d41e-578e-4b61-afcf-38f84701ed38","name":"Оплата картой [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"123321\",\n        \"action\": \"pay\",\n        \"price\": \"1000.00\",\n        \"merchantFee\": \"130.00\",\n        \"destinationWallet\": \"d1387389-b6c7-4a80-81a4-3960ed96cfd0\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    }\n}"},"url":"https://api-sandbox.mandarinpay.com/v1/transactions"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Tue, 02 Jul 2019 13:48:28 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"205"},{"key":"Connection","value":"keep-alive"},{"key":"Via","value":"waitress"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"9ac3775a809442e58a5c4407be4e29df\",\n    \"userWebLink\": \"https://secure.stage.psp.io/Pay/Select?transaction=9ac3775a809442e58a5c4407be4e29df\",\n    \"jsOperationId\": \"9ac3775a809442e58a5c4407be4e29df\"\n}"}],"_postman_id":"7a843783-5bd3-4bda-a0f8-d03aa4b9296a"},{"name":"Одностадийное пополнение с привязанной карты","id":"e907616e-4a67-412b-a877-088a4e912187","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n","key":"X-Auth","type":"text","value":"{{x_auth}}"}],"body":{"mode":"raw","raw":"{\r\n\t\"payment\": {\r\n\t\t\"orderId\": \"{{order_id}}\",\r\n\t\t\"action\": \"pay\",\r\n\t\t\"price\": \"1000.00\",\r\n\t\t\"merchantFee\": \"130.00\",\r\n\t\t\"destinationWallet\": \"{{account_id}}\"\r\n\t},\r\n    \"customValues\": [\r\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\r\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\r\n\t],\r\n    \"metadata\": {\r\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\r\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\r\n    },\r\n\t\"urls\": {\r\n\t\t\"callback\": \"http://...\",\r\n\t\t\"return\": \"http://...\"\r\n\t},\r\n\t\"target\": {\r\n\t\t\"card\": \"{{card_id}}\"\r\n\t}\r\n}\r\n"},"url":"https://{{domain}}/v1/transactions","description":"<p><strong>Запрос выполняется синхронно с дополнительным асинхронным ответом.</strong></p>\n<p><strong>Ответ (как синхронный, так и асинхронный) может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>Одностадийная оплата предполагает, что денежные средства списываются с карты в рамках одного запроса. Мерчант может запросить списание с определенной карты, передав <code>id</code> карты, ранее полученной в callback-уведомлении. Клиент при этом не вводит данные карты, а использует уже сохраненную.</p>\n<p><em><strong>ВАЖНО!</strong></em></p>\n<p>В примере ниже с карты плательщика будет списано 1000 рублей. Саб-мерчант получает 870 рублей.\nМаркетплейс получает 130 рублей в виде комиссии (комиссия учитывается <strong>внутри суммы</strong> к списанию), из которой 30 рублей будет списано как комиссия MandarinPay (согласно условиям договора).</p>\n<p>Транзакция будет осуществлена в асинхронном режиме. В результате запроса вам синхронно придет <code>id</code> транзакции, и асинхронно придет callback-уведомление.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","transactions"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"8433e793-0f81-4132-9e6d-abec949bd5a5","name":"Оплата привязанной картой [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{\r\n\t\"payment\": {\r\n\t\t\"orderId\": \"123321\",\r\n\t\t\"action\": \"pay\",\r\n\t\t\"price\": \"1000.00\",\r\n\t\t\"merchantFee\": \"130.00\",\r\n\t\t\"destinationWallet\": \"d1387389-b6c7-4a80-81a4-3960ed96cfd0\"\r\n\t},\r\n    \"customValues\": [\r\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\r\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\r\n\t],\r\n    \"metadata\": {\r\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\r\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\r\n    },\r\n\t\"urls\": {\r\n\t\t\"callback\": \"http://...\",\r\n\t\t\"return\": \"http://...\"\r\n\t},\r\n\t\"target\": {\r\n\t\t\"card\": \"6b14cf1f-10af-45d0-946f-096d5dc57b64\"\r\n\t}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://api-sandbox.mandarinpay.com/v1/transactions"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Tue, 02 Jul 2019 13:48:28 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"205"},{"key":"Connection","value":"keep-alive"},{"key":"Via","value":"waitress"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"9ac3775a809442e58a5c4407be4e29df\"\n}"}],"_postman_id":"e907616e-4a67-412b-a877-088a4e912187"},{"name":"Двухстадийное пополнение с карты (Блокировка)","event":[{"listen":"test","script":{"id":"9de1fd8e-4b3e-4c4b-acde-64fec454c393","exec":["var jsonData = JSON.parse(responseBody);\r","pm.environment.set(\"transaction_id\", jsonData.id);"],"type":"text/javascript"}}],"id":"9315049f-854b-4d8a-b75e-04afbaf909ef","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"key":"X-Auth","type":"text","value":"{{x_auth}}","description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"{{order_id}}\",\n        \"action\": \"preauth\",\n        \"price\": \"1000.00\",\n        \"orderActualTill\": \"{{order_actual_till}}\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    }\n}"},"url":"https://{{domain}}/v1/transactions","description":"<p><strong>Запрос выполняется синхронно с дополнительным асинхронным ответом.</strong></p>\n<p><strong>Ответ (как синхронный, так и асинхронный) может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>Двухстадийная схема работы предполагает первичную блокировку (<em>preAuth</em>) денежных средств на банковской карте, а затем ее полное или частичное подтверждение (<em>confirmAuth</em>).\nВ случае отсутствия операции подтверждения списания денежных средств сумма будет автоматически разблокирована через определенное время (от 7 до 30 дней).\nТакже возможна операция принудительной разблокировки ВСЕЙ заблокированной суммы (<em>reversal</em>).\nДля блокировки денежных средств с карты в рамках двухстадийной схемы оплаты необходимо создать транзакцию с типом <code>preauth</code>.\nОбязательный параметр <code>price</code> хранит значение суммы, которая будет предавторизована (заблокирована) с карты плательщика. В процессе блокировки клиент вводит данные карты.</p>\n<p>Транзакция будет осуществлена в асинхронном режиме. В результате запроса вам синхронно придет id транзакции, и асинхронно придет callback-уведомление.</p>\n<p>Полученные в синхронном ответе <code>userWebLink</code> используйте для работы с платежной страницей, а <code>jsOperationId</code> для работы через CustomPay.\nПосле того как придёт callback-уведомления об успехе предавторизации, полученный в нём Id транзакции можно использовать для полного или частичного списания (<code>action</code> = <code>pay</code>), а также разблокировки (<code>action</code> = <code>reversal</code>) денежных средств через REST API в качестве значения для <code>target/transaction</code>.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","transactions"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"112b4d55-9fed-421b-92b1-a0338c193d9b","name":"Оплата картой 2-стадийная: блокировка средств [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"123322\",\n        \"action\": \"preauth\",\n        \"price\": \"1000.00\",\n        \"orderActualTill\": \"2019-06-14 12:34:56+00:00\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    }\n}"},"url":"https://api-sandbox.mandarinpay.com/v1/transactions"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Tue, 02 Jul 2019 13:58:58 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"205"},{"key":"Connection","value":"keep-alive"},{"key":"Via","value":"waitress"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"cc2173b900ed4c5a8b42d23cb74f03cf\",\n    \"userWebLink\": \"https://secure.stage.psp.io/Pay/Select?transaction=cc2173b900ed4c5a8b42d23cb74f03cf\",\n    \"jsOperationId\": \"cc2173b900ed4c5a8b42d23cb74f03cf\"\n}"}],"_postman_id":"9315049f-854b-4d8a-b75e-04afbaf909ef"},{"name":"! Двухстадийное пополнение с привязанной карты (Блокировка)","id":"4d6ca3b5-7b12-4a3d-8068-19a7f6c1537a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","type":"text","value":"application/json"},{"description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n","key":"X-Auth","type":"text","value":"{{x_auth}}"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"{{order_id}}\",\n        \"action\": \"preauth\",\n        \"price\": \"1000.00\",\n        \"orderActualTill\": \"{{order_actual_till}}\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n\t},\n\t\"target\": {\n\t\t\"card\": \"{{card_id}}\"\n\t}\n}"},"url":"https://{{domain}}/v1/transactions","description":"<p><strong>Запрос выполняется синхронно с дополнительным асинхронным ответом.</strong></p>\n<p><strong>Ответ (как синхронный, так и асинхронный) может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>Возможно использовать запрос блокировки, используя данные привязанной карты, и выполнять ее без участия клиента.</p>\n<p><em>Для этого нужно обговорить эту возможность с вашим менеджером!</em></p>\n<p>После окончания настройки, вы сможете передавать в запросе параметр <code>target/card</code> со значением <code>{cardId}</code>, которое получили после привязки карты.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","transactions"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"b559196d-d695-40f0-8953-6cffe82bd31b","name":"Оплата картой 2-стадийная: блокировка средств на привязанной карте [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"123322\",\n        \"action\": \"preauth\",\n        \"price\": \"1000.00\",\n        \"orderActualTill\": \"2019-06-14 12:34:56+00:00\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n\t},\n\t\"target\": {\n\t\t\"card\": \"6b14cf1f-10af-45d0-946f-096d5dc57b64\"\n\t}\n}","options":{"raw":{"language":"json"}}},"url":"https://api-sandbox.mandarinpay.com/v1/transactions"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Tue, 02 Jul 2019 13:58:58 GMT"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"205"},{"key":"Connection","value":"keep-alive"},{"key":"Via","value":"waitress"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"cc2173b900ed4c5a8b42d23cb74f03cf\"\n}"}],"_postman_id":"4d6ca3b5-7b12-4a3d-8068-19a7f6c1537a"},{"name":"Двухстадийное пополнение с карты (Списание)","id":"4343530d-bb45-4592-82ad-a354db18579e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"{{x_auth}}","type":"text","description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"{{order_id}}\",\n        \"action\": \"pay\",\n        \"price\": \"900.00\",\n        \"merchantFee\": \"130.00\",\n        \"destinationWallet\": \"{{account_id}}\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    },\n    \"target\": {\n        \"transaction\": \"{{transaction_id}}\"\n    }\n}"},"url":"https://{{domain}}/v1/transactions","description":"<p><strong>Запрос выполняется синхронно с дополнительным асинхронным ответом.</strong></p>\n<p><strong>Ответ (как синхронный, так и асинхронный) может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>Для полного или частичного списания используйте <code>action</code> = <code>pay</code> и полученный в уведомлении об успешной предавторизации <code>id</code> в качестве значения для <code>target/transaction</code>.\nЗначение <code>price</code> может быть любым в пределах значения предавторизованной суммы, переданной в поле <code>price</code> в изначальной транзакции <em>preauth</em>.\nПоле <code>merchantFee</code> хранит комиссию, которая будет зачислена маркетплейсу (не может быть больше значения <code>price</code>). Сумма, которая будет зачислена саб-мерчанту, равна разнице между <code>price</code> и <code>merchantFee</code>. \nОстаток будет возвращен на карту плательщика автоматически.</p>\n<p>Активного участия клиента при этом не требуется. Транзакция будет осуществлена в асинхронном режиме. В результате запроса вам синхронно придет <code>id</code> транзакции, и асинхронно придет callback-уведомление.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","transactions"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"5d290d16-f34f-4835-862b-c72e37b0eda4","name":"Оплата картой 2-стадийная: списание средств [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"123323\",\n        \"action\": \"pay\",\n        \"price\": \"900.00\",\n        \"merchantFee\": \"130.00\",\n        \"destinationWallet\": \"d1387389-b6c7-4a80-81a4-3960ed96cfd0\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    },\n    \"target\": {\n        \"transaction\": \"43913ddc000c4d3990fddbd3980c1725\"\n    }\n}"},"url":"https://api-sandbox.mandarinpay.com/v1/transactions"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Wed, 03 Jul 2019 10:12:06 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"106"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"9ac3775a809442e58a5c4407be4e29df\"\n}"}],"_postman_id":"4343530d-bb45-4592-82ad-a354db18579e"},{"name":"Двухстадийное пополнение с карты (Отмена блокировки)","id":"ce72d8f4-6a8c-40d0-9862-ca168468579e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"{{x_auth}}","type":"text","description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"{{order_id}}\",\n        \"action\": \"reversal\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    },\n    \"target\": {\n        \"transaction\": \"{{transaction_id}}\"\n    }\n}"},"url":"https://{{domain}}/v1/transactions","description":"<p><strong>Запрос выполняется синхронно с дополнительным асинхронным ответом.</strong></p>\n<p><strong>Ответ (как синхронный, так и асинхронный) может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>Для разблокировки всей предавторизованной суммы используйте <code>action</code> = <code>reversal</code> и полученный в уведомлении об успешной блокировке <code>id</code> в качестве значения для <code>target/transaction</code>.</p>\n<p>Активного участия клиента при этом не требуется.\nОтмена производится для всей заблокированной суммы.</p>\n<p>Транзакция будет осуществлена в асинхронном режиме. В результате запроса вам синхронно придет <code>id</code> транзакции отмены блокировки, и асинхронно придет callback-уведомление.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","transactions"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"4c089a83-6dfa-4fb3-ad33-50e759d80732","name":"Оплата картой 2-стадийная: отмена блокировки [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"123324\",\n        \"action\": \"reversal\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    },\n    \"target\": {\n        \"transaction\": \"cc2173b900ed4c5a8b42d23cb74f03cf\"\n    }\n}"},"url":"https://api-sandbox.mandarinpay.com/v1/transactions"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Wed, 03 Jul 2019 10:12:06 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"106"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"13a3775a809442e1265c4407be4e2973\"\n}"}],"_postman_id":"ce72d8f4-6a8c-40d0-9862-ca168468579e"}],"id":"1c1b1f0f-184d-4532-b1e1-5683ac749de3","description":"<p>Одностадийное пополнение с карты предполагает, что денежные средства списываются в рамках одного запроса (<code>action</code> = <code>pay</code>).</p>\n<p>При двухстадийном пополнении с карты, денежные средства списываются в рамках двух последовательных запросов: блокировка суммы (<code>action</code> = <code>preauth</code>) и последующее списание (<code>action</code> = <code>pay</code>) с автоматическим возвратом остатка заблокированных средств на карту.\nЕсли требуется вернуть на карту заблокированную сумму, то вместо списания выполняется разблокировка средств (<code>action</code> = <code>reversal</code>).</p>\n<h2 id=\"описание-взаимодействия\">Описание взаимодействия</h2>\n<p>Все запросы отправляются на адрес:\n<code>POST https://{{domain}}/v1/transactions</code>, где <code>{{domain}}</code> равен:</p>\n<ul>\n<li><code>api-sandbox.mandarinpay.com</code> - для тестовой среды (Stage);</li>\n<li><code>api.mandarinpay.com</code> - для боевой среды (Prod)</li>\n</ul>\n<p>В синхроннном ответе вам придет <code>id</code> зарегистрированной транзакции, <code>userWebLink</code> (используется для работы <em>с платежной страницей</em>), <code>jsOperationId</code> (используется для работы <em>через CustomPay</em>).</p>\n<p>По завершении транзакции вы получите асинхронный ответ (callback) со статусом и дополнительной детализацией.</p>\n<h2 id=\"тарификация-и-комиссии\">Тарификация и комиссии</h2>\n<p><strong>Комиссия MandarinPay</strong> прописывается в договоре с маркетплейсом и не передается в запросах.\nMandarinPay списывает ее автоматически с внутреннего счета маркетплейса.</p>\n<p><strong>Комиссия маркетплейса</strong> <em>именно для пополнения</em> учитывается <strong>внутри суммы</strong> к списанию.</p>\n<h3 id=\"пример-1-стандартное-пополнение\">Пример 1 \"Стандартное пополнение\"</h3>\n<p>В договоре с MandarinPay указано, что комиссия MandarinPay составляет 3% от суммы платежа (для операции пополнения аккаунта).</p>\n<p>Маркетплейс передает запрос на пополнение, содержащий:</p>\n<ul>\n<li>сумму платежа, которая будет списана с карты (1000 рублей).</li>\n<li>комиссию маркетплейса (130 рублей).</li>\n</ul>\n<p>С карты плательщика будет списано 1000 рублей.</p>\n<p>На счет маркетплейса будет зачислено 130 рублей, и сразу списано 30 рублей (3% от 1000 руб.). В результате, баланс счета маркетплейса увеличится на 100 рублей.</p>\n<p>На счет саб-мерчанта будут зачислены оставшиеся 870 рублей.</p>\n<h3 id=\"пример-2-пополнение-за-счет-маркетплейса\">Пример 2 \"Пополнение за счет маркетплейса\"</h3>\n<p>Поскольку размер комиссии маркетплейса передает сам маркетплейс, то она может быть меньше комиссии MandarinPay или даже равной нулю. Маркетплейсы могут использовать такие параметры, проводя специальные акции.</p>\n<p>Как в предыдущем примере, в договоре с MandarinPay указано, что комиссия MandarinPay составляет 3% от суммы платежа (для операции пополнения аккаунта).</p>\n<p>Маркетплейс передает запрос на пополнение, содержащий:</p>\n<ul>\n<li>сумму платежа (1000 рублей).</li>\n<li>комиссию маркетплейса (0 рублей).</li>\n</ul>\n<p>С карты плательщика будет списано 1000 рублей.</p>\n<p>На счет маркетплейса будет зачислено 0 рублей, и сразу списано 30 рублей (3% от 1000 руб.). В результате, баланс счета маркетплейса уменьшится на 30 рублей. Мерчант должен следить, чтобы баланс счета оставался положительным, иначе операция не будет осуществлена.</p>\n<p>На счет саб-мерчанта будет зачислено 1000 рублей (столько же, сколько было списано с карты плательщика).</p>\n<h2 id=\"параметры-запроса\">Параметры запроса</h2>\n<p>Перечень и описание возможных блоков и элементов запроса, а также обязательность их передачи приведены ниже:</p>\n<p><strong>Блок PAYMENT</strong></p>\n<p><em>Данный блок является ОБЯЗАТЕЛЬНЫМ</em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Action</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>orderId</td>\n<td>Да</td>\n<td><code>preauth</code>, <code>pay</code>, <code>reversal</code></td>\n<td>Номер заказа в системе Клиента. <strong>Значение должно быть уникальным в пределах успешных операций.</strong></td>\n</tr>\n<tr>\n<td>action</td>\n<td>Да</td>\n<td><code>preauth</code>, <code>pay</code>, <code>reversal</code></td>\n<td>Для создания транзакции <code>purchase</code> передается значение <code>pay</code>.</td>\n</tr>\n<tr>\n<td>price</td>\n<td>Да</td>\n<td><code>preauth</code>, <code>pay</code></td>\n<td>Сумма платежа. Обязательна к передаче в текущей версии системы.</td>\n</tr>\n<tr>\n<td>merchantFee</td>\n<td>Да</td>\n<td><code>pay</code></td>\n<td>Комиссия маркетплейса, взимаемая с плательщика. Если не взимается, то передать <code>0</code></td>\n</tr>\n<tr>\n<td>destinationWallet</td>\n<td>Да</td>\n<td><code>pay</code></td>\n<td>ID аккаунта получателя.</td>\n</tr>\n<tr>\n<td>orderActualTill</td>\n<td>Нет</td>\n<td><code>preauth</code>, <code>pay</code></td>\n<td>Срок резервирования товара/услуги. После указанной даты оплата будет невозможна</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Блок CUSTOMERINFO</strong></p>\n<p><em>Данный блок является ОБЯЗАТЕЛЬНЫМ</em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Action</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>email</td>\n<td>Да</td>\n<td><code>preauth</code>, <code>pay</code>, <code>reversal</code></td>\n<td>Email пользователя</td>\n</tr>\n<tr>\n<td>phone</td>\n<td>Нет</td>\n<td><code>preauth</code>, <code>pay</code>, <code>reversal</code></td>\n<td>Телефон пользователя в формате РФ: <code>+79999999999</code></td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Блок CUSTOMVALUES</strong></p>\n<p><em>Данный блок является НЕОБЯЗАТЕЛЬНЫМ</em>. Позволяет передать любую дополнительную информацию вместе с платежом. Вы можете передать до 8 пар параметров.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Action</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>Нет</td>\n<td><code>preauth</code>, <code>pay</code>, <code>reversal</code></td>\n<td>Заголовок параметра, который используется для прикрепления дополнительной информации к данным Платежа. В случае использования платежной страницы отображается Плательщику в правом блоке платежной страницы.</td>\n</tr>\n<tr>\n<td>value</td>\n<td>Нет</td>\n<td><code>preauth</code>, <code>pay</code>, <code>reversal</code></td>\n<td>Значение параметра, который используется для прикрепления дополнительной информации к данным Платежа. В случае использования платежной страницы отображается Плательщику в правом блоке платежной страницы</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Блок URLS</strong></p>\n<p><em>Блок является НЕОБЯЗАТЕЛЬНЫМ</em></p>\n<p>Данный блок позволяет передать ссылки для отправки callback-уведомления и возврата пользователя с платежной страницы после оплаты.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Action</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>callback</td>\n<td>Нет</td>\n<td><code>preauth</code>, <code>pay</code>, <code>reversal</code></td>\n<td>Url для отправки callback-уведомления о статусе транзакции</td>\n</tr>\n<tr>\n<td>return</td>\n<td>Нет</td>\n<td><code>preauth</code>, <code>pay</code>, <code>reversal</code></td>\n<td>Url для редиректа пользователя после оплаты</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Блок TARGET</strong></p>\n<p><em>Блок является НЕОБЯЗАТЕЛЬНЫМ</em></p>\n<p>При двухстадийном пополнении используется с запросами, где <code>action</code> = <code>pay</code> или <code>action</code> = <code>reversal</code>. \nПозволяет передать <code>id</code> транзакции, которая инициировала операцию.</p>\n<p>При одностадийном пополнении используется с запросами, где <code>action</code> = <code>pay</code>. \nПозволяет передать <code>id</code> сохраненной карты, с которой нужно провести списание.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Action</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>transaction</td>\n<td>Нет</td>\n<td><code>pay</code>, <code>reversal</code></td>\n<td><code>id</code> транзакции, где <code>action</code> = <code>preauth</code></td>\n</tr>\n<tr>\n<td>card</td>\n<td>Нет</td>\n<td><code>pay</code></td>\n<td><code>id</code> ранее совершенной успешной привязки карты. <em>По умолчанию, параметр работает только при одностадийном пополнении. Возможна активация этого параметра для двухстадийного пополнения, обратитесь с запросом к вашему менеджеру.</em></td>\n</tr>\n</tbody>\n</table>\n</div>","event":[{"listen":"prerequest","script":{"id":"76acedf4-a3ea-4f27-8edd-59f052d961c4","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"425e104c-5357-4d26-8849-d8202b60efda","type":"text/javascript","exec":[""]}}],"_postman_id":"1c1b1f0f-184d-4532-b1e1-5683ac749de3"},{"name":"Вывод средств из аккаунта","item":[{"name":"Вывод средств на привязанную карту (payout)","id":"f6032164-648e-44b3-80dd-a4ebdeca4c88","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"{{x_auth}}","type":"text","description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"{{order_id}}\",\n        \"action\": \"payout\",\n        \"price\": \"1000.00\",\n        \"merchantFee\": \"150.00\",\n        \"sourceWallet\": \"{{account_id}}\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    },\n    \"target\": {\n        \"card\": \"{{card_id}}\"\n    }\n}"},"url":"https://{{domain}}/v1/transactions","description":"<p><strong>Запрос выполняется синхронно с дополнительным асинхронным ответом.</strong></p>\n<p><strong>Ответ (как синхронный, так и асинхронный) может содержать более широкий набор полей, чем в примере.</strong></p>\n<p>ВАЖНО! \nВ примере ниже со счета саб-мерчанта будет списано 1150 рублей. На карту будет зачислено 1000 рублей.\nМаркетплейс получает 150 рублей в виде комиссии (комиссия учитывается <strong>сверху от суммы</strong> к списанию), из которой 50 рублей будет списано как комиссия MandarinPay (согласно условиям договора).</p>\n<p>Транзакция будет осуществлена в асинхронном режиме. В результате запроса вам синхронно придет <code>id</code> транзакции, и асинхронно придет callback-уведомление.</p>\n<p>Значение <code>orderId</code> должно быть уникальным в пределах успешных операций вывода средств. Если Вы <strong>не получили</strong> успешный <code>callback</code> и хотите повторно запросить ту же самую выплату, рекомендуем использовать тот же самый номер <code>orderId</code>. Это предотвратит дублирование выплаты, если первоначальная выплата была произведена, но успешный <code>callback</code> не дошел.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","transactions"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"3dc24611-dbd7-47e3-a93a-9e99585e9618","name":"Вывод средств на привязанную карту [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"123321\",\n        \"action\": \"payout\",\n        \"price\": \"1000.00\",\n        \"merchantFee\": \"150.00\",\n        \"sourceWallet\": \"d1387389-b6c7-4a80-81a4-3960ed96cfd0\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    },\n    \"target\": {\n        \"card\": \"0eb51e74-e704-4c36-b5cb-8f0227621518\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api-sandbox.mandarinpay.com/v1/transactions"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Wed, 03 Jul 2019 13:12:16 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"151"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\r\n   \"id\": \"43913ddc000c4d3990fddbd3980c1725\"\r\n}\r\n"}],"_postman_id":"f6032164-648e-44b3-80dd-a4ebdeca4c88"},{"name":"Вывод средств по номеру карты (payout card number)","id":"33c0116d-9563-4476-b146-c2367537041f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"{{x_auth}}","type":"text","description":"<p>merchantId-SHA256(merchantId-requestId-secret)-requestId</p>\n"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"{{order_id}}\",\n        \"action\": \"payout\",\n        \"price\": \"1000.00\",\n        \"merchantFee\": \"150.00\",\n        \"sourceWallet\": \"{{account_id}}\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    },\n    \"target\": {\n        \"knownCardNumber\": \"5559572059031262\"\n    }\n}"},"url":"https://{{domain}}/v1/transactions","description":"<p><strong>Запрос выполняется синхронно с дополнительным асинхронным ответом.</strong></p>\n<p><strong>Ответ (как синхронный, так и асинхронный) может содержать более широкий набор полей, чем в примере.</strong></p>\n<p><em><strong>ВАЖНО!</strong></em></p>\n<p>В примере ниже со счета саб-мерчанта будет списано 1150 рублей. На карту будет зачислено 1000 рублей.\nМаркетплейс получает 150 рублей в виде комиссии (комиссия учитывается <strong>сверху от суммы</strong> к списанию), из которой 50 рублей будет списано как комиссия MandarinPay (согласно условиям договора).</p>\n<p>Транзакция будет осуществлена в асинхронном режиме. В результате запроса вам синхронно придет <code>id</code> транзакции, и асинхронно придет callback-уведомление.</p>\n<p>Значение <code>orderId</code> должно быть уникальным в пределах успешных операций вывода средств. Если Вы <strong>не получили</strong> успешный <code>callback</code> и хотите повторно запросить ту же самую выплату, рекомендуем использовать тот же самый номер <code>orderId</code>. Это предотвратит дублирование выплаты, если первоначальная выплата была произведена, но успешный <code>callback</code> не дошел.</p>\n<p><em>Тело запроса:</em></p>\n","urlObject":{"protocol":"https","path":["v1","transactions"],"host":["{{domain}}"],"query":[],"variable":[]}},"response":[{"id":"ecffd680-30f2-41ca-8caa-5252d93002d9","name":"Вывод средств по номеру карты [Stage]","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"X-Auth","value":"395-c930e6c208d93948adbb9a25f9207219ee37935659ffcb1e8efcf1561cb464cf-1562059278","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"payment\": {\n        \"orderId\": \"123321\",\n        \"action\": \"payout\",\n        \"price\": \"1000.00\",\n        \"merchantFee\": \"150.00\",\n        \"sourceWallet\": \"d1387389-b6c7-4a80-81a4-3960ed96cfd0\"\n    },\n    \"customerInfo\": {\n        \"email\": \"user@example.com\",\n        \"phone\": \"+79001234567\"\n    },\n    \"customValues\": [\n\t\t{\"name\": \"parameter to save and show 0\", \"value\": \"0\"},\n\t\t{\"name\": \"parameter to save and show 1\", \"value\": \"1\"}\n\t],\n    \"metadata\": {\n        \"parameter_to_callback_and_not_to_show_0\": \"0\",\n        \"parameter_to_callback_and_not_to_show_1\": \"1\"\n    },\n    \"urls\": {\n        \"callback\": \"http://...\",\n        \"return\": \"http://...\"\n    },\n    \"target\": {\n        \"knownCardNumber\": \"5559572059031262\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api-sandbox.mandarinpay.com/v1/transactions"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx"},{"key":"Date","value":"Wed, 03 Jul 2019 14:55:07 GMT"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Content-Length","value":"151"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\r\n   \"id\": \"43913ddc000c4d3990fddbd3980c1725\"\r\n}\r\n"}],"_postman_id":"33c0116d-9563-4476-b146-c2367537041f"}],"id":"6f6f601d-9557-46aa-95e0-09c4f63426b6","description":"<p>Перевод на карту можно осуществить следующими способами:</p>\n<ul>\n<li>На карту, которая была привязана пользователем ранее;</li>\n<li>На карту, номер которой передан при вызове API-метода</li>\n</ul>\n<h2 id=\"описание-взаимодействия\">Описание взаимодействия</h2>\n<p>Все запросы отправляются на адрес:\n<code>POST https://{{domain}}/v1/transactions</code>, где <code>{{domain}}</code> равен:</p>\n<ul>\n<li><code>api-sandbox.mandarinpay.com</code> - для тестовой среды (Stage);</li>\n<li><code>api.mandarinpay.com</code> - для боевой среды (Prod)</li>\n</ul>\n<p>В синхроннном ответе вам придет <code>id</code> зарегистрированной транзакции.</p>\n<p>По завершении транзакции вы получите асинхронный ответ (callback) со статусом и дополнительной детализацией.</p>\n<h2 id=\"тарификация-и-комиссии\">Тарификация и комиссии</h2>\n<p><strong>Комиссия MandarinPay</strong> прописывается в договоре с маркетплейсом и не передается в запросах.\nMandarinPay списывает ее автоматически с внутреннего счета маркетплейса.</p>\n<p><strong>Комиссия маркетплейса</strong> <em>именно для списания</em> учитывается <strong>сверху от суммы</strong> к списанию.</p>\n<h3 id=\"пример\">Пример</h3>\n<p>В договоре с MandarinPay указано, что комиссия MandarinPay составляет 2% + 30 рублей (для операции вывода на карту).</p>\n<p>Маркетплейс передает запрос на вывод, содержащий:</p>\n<ul>\n<li>сумму вывода, которая будет зачислена на карту (1000 рублей).</li>\n<li>комиссию маркетплейса (150 рублей).</li>\n</ul>\n<p>Со счета саб-мерчанта будет списано 1150 рублей.</p>\n<p>На счет маркетплейса будет зачислено 150 рублей, и сразу списано 50 рублей (2% от 1000 руб. + 30 рублей). В результате, баланс счета маркетплейса увеличится на 100 рублей.</p>\n<p>На карту получателя будут зачислены запрошенные 1000 рублей.</p>\n<h2 id=\"параметры-запроса\">Параметры запроса</h2>\n<p>Перечень и описание возможных блоков и элементов запроса, а также обязательность их передачи приведены ниже:</p>\n<p><strong>Блок PAYMENT</strong></p>\n<p><em>Данный блок является ОБЯЗАТЕЛЬНЫМ</em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Action</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>orderId</td>\n<td>Да</td>\n<td><code>payout</code></td>\n<td>Номер заказа в системе Клиента. <strong>Значение должно быть уникальным в пределах успешных операций.</strong></td>\n</tr>\n<tr>\n<td>action</td>\n<td>Да</td>\n<td><code>payout</code></td>\n<td>Для создания выплаты передается значение <code>payout</code>.</td>\n</tr>\n<tr>\n<td>price</td>\n<td>Да</td>\n<td><code>payout</code></td>\n<td>Сумма выплаты. Обязательна к передаче в текущей версии системы.</td>\n</tr>\n<tr>\n<td>merchantFee</td>\n<td>Да</td>\n<td><code>payout</code></td>\n<td>Комиссия маркетплейса, взимаемая с плательщика. Если не взимается, то передать <code>0</code></td>\n</tr>\n<tr>\n<td>sourceWallet</td>\n<td>Да</td>\n<td><code>payout</code></td>\n<td>ID аккаунта плательщика.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Блок CUSTOMERINFO</strong></p>\n<p><em>Данный блок является ОБЯЗАТЕЛЬНЫМ при переводах на иностранные карты. Для переводов на карты российских банков НЕ ПОДДЕРЖИВАЕТСЯ.</em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Action</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>email</td>\n<td>Да</td>\n<td><code>payout</code>, но только совместно с параметром <code>target\\knownCardNumber</code></td>\n<td>Email пользователя</td>\n</tr>\n<tr>\n<td>phone</td>\n<td>Да</td>\n<td><code>payout</code>, но только совместно с параметром <code>target\\knownCardNumber</code></td>\n<td>Телефон пользователя в формате РФ: <code>+79999999999</code></td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Блок CUSTOMVALUES</strong></p>\n<p><em>Данный блок является НЕОБЯЗАТЕЛЬНЫМ</em>. Позволяет передать любую дополнительную информацию вместе с платежом. Вы можете передать до 8 пар параметров.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Action</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>Нет</td>\n<td><code>payout</code></td>\n<td>Заголовок параметра, который используется для прикрепления дополнительной информации к данным Платежа. В случае использования платежной страницы отображается Плательщику в правом блоке платежной страницы.</td>\n</tr>\n<tr>\n<td>value</td>\n<td>Нет</td>\n<td><code>payout</code></td>\n<td>Значение параметра, который используется для прикрепления дополнительной информации к данным Платежа. В случае использования платежной страницы отображается Плательщику в правом блоке платежной страницы</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Блок URLS</strong></p>\n<p><em>Блок является НЕОБЯЗАТЕЛЬНЫМ</em></p>\n<p>Данный блок позволяет передать ссылки для отправки callback-уведомления и возврата пользователя с платежной страницы после оплаты.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Action</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>callback</td>\n<td>Нет</td>\n<td><code>payout</code></td>\n<td>Url для отправки callback-уведомления о статусе транзакции</td>\n</tr>\n<tr>\n<td>return</td>\n<td>Нет</td>\n<td><code>payout</code></td>\n<td>Url для редиректа пользователя после оплаты</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Блок TARGET</strong></p>\n<p><em>Блок является НЕОБЯЗАТЕЛЬНЫМ</em></p>\n<p>Позволяет передать указать карту, на которую производится выплата.\nЗапрос должен содержать <strong>только один параметр</strong> из данного блока.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Элемент</th>\n<th>Обязателен</th>\n<th>Action</th>\n<th>Описание</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>card</td>\n<td>Нет</td>\n<td><code>payout</code></td>\n<td><code>id</code> ранее совершенной успешной привязки карты</td>\n</tr>\n<tr>\n<td>knownCardNumber</td>\n<td>Нет</td>\n<td><code>payout</code></td>\n<td>номер карты, на которую осуществляется перевод</td>\n</tr>\n</tbody>\n</table>\n</div>","event":[{"listen":"prerequest","script":{"id":"b40c8d97-5f76-4e5e-8ba8-b8e46ac91238","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"98092f25-301f-4c9c-9873-4e7435c01f70","type":"text/javascript","exec":[""]}}],"_postman_id":"6f6f601d-9557-46aa-95e0-09c4f63426b6"}],"event":[{"listen":"prerequest","script":{"id":"772e8db1-58f7-421c-8d5c-87b414a92c0c","type":"text/javascript","exec":["var request_id = parseInt((new Date()).getTime() / 1000);","pm.environment.set(\"request_id\", request_id);","var sha256_string = pm.environment.get(\"merchant_id\") + \"-\" + request_id + \"-\" + pm.environment.get(\"secret\")","var x_auth = pm.environment.get(\"merchant_id\") + \"-\" + CryptoJS.SHA256(sha256_string) + \"-\" + request_id;","pm.environment.set(\"x_auth\", x_auth);","","pm.environment.set(\"order_id\", \"your_unique_order_id_\" + request_id);","var moment = require('moment');","pm.environment.set(\"order_actual_till\", moment(((new Date()).getTime() + 86400000)).format(\"YYYY-MM-DD HH:mm:ss\"));"]}},{"listen":"test","script":{"id":"23e80bab-f69e-4d0b-ae3a-fda89623869d","type":"text/javascript","exec":[""]}}]}