После списания денежных средств с карты покупателя маркетплейсу будет сообщен токен - это номер операции платежа, в котором зашифрованы карточные данные.
Маркетплейсу необходимо сохранить полученный токен, связав его с уникальным идентификатором продавца в учетной системе маркетплейса.
Для последующих выплат на привязанную карту продавца необходимо использовать токен, равный номеру операции.
Из этого номера нужно сформировать PAYMENTTOKEN путем добавления строкового нуля перед значением MNT_OPERATION_ID.
Для перевода денежных средств с транзитного счета маркетплейса на банковскую карту продавца необходимо использовать запрос PaymentRequest в рамках интерфейса MONETA.MerchantAPI, где payer=НОМЕР ТРАНЗИТНОГО СЧЕТА ПЛОЩАДКИ, а payee=НОМЕР ШЛЮЗА. Номера необходимо уточнить у сотрудника НКО "МОНЕТА" (ООО)В атрибутах перевода необходимо указать номер базовой операции в поле PARENTID.
<?php
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
include_once($sdkAppFileName);
try {
$monetaSdk = new \Moneta\MonetaSdk();
$monetaSdk->checkMonetaServiceConnection();
$request = new \Moneta\Types\TransferRequest();
//номер счёта (в системе МОНЕТА.РУ) для списания средств
//номер транзитного счёта магазина/маркетплейса
$request->payer = '';
//номер счёта (в рамках системы МОНЕТА.РУ) для зачисления средств
$request->payee = '279';
//сумма перевода
$request->amount = '17.00';
$request->isPayerAmount = true;
//платёжный пароль магазина/маркетплейса.
$request->paymentPassword = '*******************';
//номер транзакции в учётной системе магазина/маркетплейса.
$request->clientTransaction = 'my-order-id-17';
//краткое описание операции.
$request->description = 'Описание перевода на банковскую карту';
$operation = new \Moneta\Types\OperationInfo();
//в параметре указывается номер(transaction) базовой операции с добавлением ноля в начало строки;
//базовая операция - это операция платежа на транзитный счёт магазина/маркетплейса.
$attribute = new \Moneta\Types\KeyValueAttribute();
$attribute->key = 'PAYMENTTOKEN';
$attribute->value = '';
$operation->addAttribute($attribute);
$request->operationInfo = $operation;
//запрос на перевод средств
//с транзитного счёта магазина/маркетплейса на банк. карту организации(продавца) - физического лица
$result = $monetaSdk->monetaService->Transfer($request);
if (!$result['transaction']) {
throw new Exception(print_r($result, true));
}
echo "Запрос обработан.";
if ((new \Moneta\Types\OperationStatus())::SUCCEED !== $result['status']) {
echo " Операция НЕ проведена полностью.";
}
} catch (Exception $e) {
echo "Ошибка:<br />";
echo "<pre>" . $e->getMessage() . "</pre>";
}
Запросы маркетплейс отправляет в рамках интерфейса MONETA.MerchantAPI.
Интерфейс MONETA.MerchantAPI представляет собой Web-сервис, описанный по спецификации Web Services Description Language (WSDL), использующий протокол Simple Object Access Protocol (SOAP) для передачи информации.