# 6. Приём платежей в пользу разных продавцов одной операцией (Мультикорзина)

Мультикорзина позволяет покупателю оформить заказ с товарами нескольких продавцов и оплатить одним платежом.\
&#x20;&#x20;

![](/files/-M2CQkYJiw2qxt-mv32O)

Процесс оплаты для маркетплейса будет состоять из двух этапов.

Первый этап - прием платежа с банковской карты покупателя на транзитный счет маркетплейса в Системе "МОНЕТА.РУ" (Создание родительской операции)

Принять платеж можно одним из способов, указанных в Разделе 1. "Прием платежей с банковской карты на маркетплэйсе или в виджете" документации.

В ответ на проведение платежа Система "МОНЕТА.РУ" сообщит номер операции в параметре **MNT\_OPERATION\_ID**, этот номер операции маркетплейсу необходимо запомнить и учитывать у себя в системе.

Второй этап - перевод принятого платежа с транзитного счета маркетплейса на расширенный счет продавца в Системе "МОНЕТА.РУ".

Расширенный счет в Системе "МОНЕТА.РУ" открывают только продавцы индивидуальные предприниматели и юридические лица.

Для перевода денежных средств с транзитного счета маркетплейса на расширенные счета продавцов в Системе "МОНЕТА.РУ" необходимо использовать запрос PaymentRequest в рамках интерфейса [MONETA.MerchantAPI](https://www.moneta.ru/doc/MONETA.MerchantAPI.v2.ru.pdf), где **payer**=НОМЕР ТРАНЗИТНОГО СЧЕТА ПЛОЩАДКИ, а **payee**=НОМЕР РАСШИРЕННОГО СЧЕТА ПРОДАВЦА.&#x20;

```javascript
Запрос:
{
   "Envelope":{
      "Header":{
         "Security":{
            "UsernameToken":{
               "Username":"Username",
               "Password":"Password"
            }
         }
      },
      "Body":{
         "PaymentRequest":{
            "payer":"НОМЕР ТРАНЗИТНОГО СЧЕТА ПЛОЩАДКИ",
            "payee":"НОМЕР РАСШИРЕННОГО СЧЕТА ПРОДАВЦА",
            "amount":"СУММА",
            "clientTransaction":"внешний идентификатор транзакции",
            "operationInfo":{
               "attribute":[
                  {
                     "key":"PARENTID",
                     "value":"12345678"
                  }
               ]
            }
         }
      }
   }
}

Ответ:

"Envelope":{
  "Body":{
    "PaymentResponse":{
      "id": "номер операции в системе МОНЕТУ.РУ",
      "attribute": [
...
         {
            "value": "SUCCEED",
            "key": "statusid"
         }
...
      ]  
    }
  }
}
```

```php
<?php

$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);

try {
    $monetaSdk = new \Moneta\MonetaSdk();
    $monetaSdk->checkMonetaServiceConnection();

    $request = new \Moneta\Types\PaymentRequest();

    //номер счёта (в системе МОНЕТА.РУ) для списания средств
    //номер транзитного счёта магазина/маркетплейса
    $request->payer = '';

    //номер счёта (в системе МОНЕТА.РУ) для зачисления средств
    //номер расширенного счёта организации/продавца
    $request->payee = '';

    //сумма перевода
    $request->amount = '15.00';

    //номер транзакции в учётной системе магазина/маркетплейса.
    $request->clientTransaction = 'my-order-id-15_2';

    //платёжный пароль магазина/маркетплейса.
    $request->paymentPassword = '*******************';

    $operation = new \Moneta\Types\OperationInfo();

    //в параметре указывается номер базовой операции - это операция платежа на транзитный счёт магазина/маркетплейса.
    $attribute = new \Moneta\Types\KeyValueAttribute();
    $attribute->key = 'PARENTID';
    $attribute->value = '';
    $operation->addAttribute($attribute);

    $request->operationInfo = $operation;

    //запрос на перевод средств внутри системы МОНЕТА.РУ
    //с транзитного счёта магазина/маркетплейса на расширенный счёт организации(продавца)
    $result = $monetaSdk->monetaService->Payment($request);

    if (!$result['id']) {
        throw new Exception(print_r($result, true));
    }

    echo "Запрос обработан.";

    foreach ($result['attribute'] as $key => $attribute) {
        if ('statusid' === $attribute['key']) {
            if ((new \Moneta\Types\OperationStatus())::SUCCEED !== $attribute['value']) {
                echo " Операция НЕ проведена полностью.";
            }
            break;
        }
    }

} catch (Exception $e) {
    echo "Ошибка:<br />";
    echo "<pre>" . $e->getMessage() . "</pre>";
}
```

В атрибутах перевода необходимо указать номер базовой операции в поле PARENTID.

Количество переводов с транзитного счета торговой площадки на расширенные счета продавцов будет равным количеству продавцов в заказе.&#x20;

Для перевода денежных средств с расширенного счета продавца в Системе "МОНЕТА.РУ" на банковские реквизиты продавца необходимо использовать запрос PaymentRequest в рамках интерфейса [MONETA.MerchantAPI](https://www.moneta.ru/doc/MONETA.MerchantAPI.v2.ru.pdf), где **payer**=НОМЕРА РАСШИРЕННОГО СЧЕТА ПРОДАВЦА, а **payee**=5.

```javascript
Запрос:
{  
   "Envelope":{  
      "Header":{  
         "Security":{  
            "UsernameToken":{  
               "Username":"Username",
               "Password":"Password"
            }
         }
      },
      "Body":{  
         "PaymentRequest":{  
            "payer":НОМЕР РАСШИРЕННОГО СЧЕТА ПРОДАВЦА,
            "payee":5,
            "amount":10,
            "clientTransaction":"Внешний номер операции",
            "paymentPassword":12345,
            "isPayerAmount":true,
            "operationInfo":{  
               "attribute":[  
                  {  
                     "key":"WIREPAYMENTPURPOSE",
                     "value":"Перечисление суммы переводов денежных средств по Договору № ___ от DD.MM.YYYY. НДС не облагается."
                  }
               ]
            }
         }
      }
   }
}
```

```php
<?php

$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);

try {
    $monetaSdk = new \Moneta\MonetaSdk();
    $monetaSdk->checkMonetaServiceConnection();

    $request = new \Moneta\Types\PaymentRequest();

    //номер счёта (в системе МОНЕТА.РУ) для списания средств
    //номер расширенного счёта организации(продавца)
    $request->payer = '';

    //получатель перевода
    //5 - будет осуществлён банковский перевод по реквизитам; в банк организации(продавца)
    $request->payee = '5';

    //сумма перевода
    $request->amount = '15.00';

    //номер транзакции в учётной системе магазина/маркетплейса.
    $request->clientTransaction = 'my-order-id-15_3';

    //платёжный пароль магазина/маркетплейса.
    $request->paymentPassword = '**************';

    $request->isPayerAmount = true;

    $request->description = 'Перечисление на банковские реквизиты организации(продавца)';

    //запрос на перевод средств
    //с расширенного счёта организации(продавца) на банковские реквизиты организации(продавца)
    $result = $monetaSdk->monetaService->Payment($request);

    if (!$result['id']) {
        throw new Exception(print_r($result, true));
    }

    echo "Запрос обработан.";

    foreach ($result['attribute'] as $key => $attribute) {
        if ('statusid' === $attribute['key']) {
            if ((new \Moneta\Types\OperationStatus())::SUCCEED !== $attribute['value']) {
                echo " Операция НЕ проведена полностью.";
            }
            break;
        }
    }

} catch (Exception $e) {
    echo "Ошибка:<br />";
    echo "<pre>" . $e->getMessage() . "</pre>";
}
```

{% hint style="info" %}
Запросы маркетплейс отправляет в рамках интерфейса MONETA.MerchantAPI.

Интерфейс [MONETA.MerchantAPI](https://www.moneta.ru/doc/MONETA.MerchantAPI.v2.ru.pdf) представляет собой Web-сервис, описанный по спецификации Web Services Description Language [(WSDL)](https://service.moneta.ru/services.wsdl), использующий протокол Simple Object Access Protocol (SOAP) для передачи информации.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.payanyway.ru/marketplace/platezhnye-zaprosy/7.-multikorzina.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
