8. Выплаты продавцу на банковскую карту

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

Для выплаты необходимо предварительно получить данные банковской карты продавца.

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

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

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

Для последующих выплат на привязанную карту продавца необходимо использовать токен, равный номеру операции. Из этого номера нужно сформировать PAYMENTTOKEN путем добавления строкового нуля перед значением MNT_OPERATION_ID.

Для перевода денежных средств с транзитного счета маркетплейса на банковскую карту продавца необходимо использовать запрос PaymentRequest в рамках интерфейса MONETA.MerchantAPI, где payer=НОМЕР ТРАНЗИТНОГО СЧЕТА ПЛОЩАДКИ, а payee=НОМЕР ШЛЮЗА. Номера необходимо уточнить у сотрудника НКО "МОНЕТА" (ООО)В атрибутах перевода необходимо указать номер базовой операции в поле PARENTID.

Запрос:
{  
   "Envelope":{  
      "Header":{  
         "Security":{  
            "UsernameToken":{  
               "Username":"Username",
               "Password":"Password"
            }
         }
      },
      "Body":{  
         "PaymentRequest":{  
            "payer":"номер транзитного счета площадки",
            "payee":"Номер шлюза",
            "amount":"сумма",
            "isPayerAmount":true,
            "paymentPassword":"*****",
            "clientTransaction":"tb-20170220-1487659653",
            "description":"tb-20170220-1487659653",
            "operationInfo":{  
               "attribute":[  
                  {  
                     "key":"PAYMENTTOKEN",
                     "value":"0123456789"
                  }
               ]
            }
         }
      }
   }
}
Ответ:

{  
   "Envelope":{  
      "Body":{  
         "PaymentResponse":{  
            "transaction":12345678,
            "dateTime":"2017-02-21T09:47:39.000+03:00",
            "status":"SUCCEED",
            "clientTransaction":"tb-20170220-1487659653"
         }
      }
   }
}
<?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) для передачи информации.

Last updated