Управление денежными средствами на расчетных счетах клиентов
Перевод денежных средств клиентов в Федеральное Казначейство
Powered By GitBook
6. Перевод денежных средств после подтверждения сделки (Безопасная сделка)
Логику безопасной сделки, включая процедуру рассмотрения споров, маркетплейс реализует самостоятельно.
В Системе МОНЕТА.РУ безопасная сделка состоит из двух этапов, интервал между которыми обусловлен логикой безопасной сделки.
Первый этап - прием платежа, например, с банковской карты покупателя на транзитный счет маркетплейса в Системе "МОНЕТА.РУ" (Создание базовой операции).
Принять платеж можно одним из способов, указанных в Разделе 1. "Прием платежей с банковской карты на маркетплейсе или в виджете" документации.
После проведения операции платежа Система "МОНЕТА.РУ" сообщит номер операции в параметре MNT_OPERATION_ID, этот номер операции маркетплейсу необходимо запомнить и учитывать у себя в системе.
Второй этап - это перевод принятого платежа с транзитного счета маркетплейса на расширенный счет продавца в Системе "МОНЕТА.РУ".
Расширенный счет в Системе "МОНЕТА.РУ" открывают только продавцы индивидуальные предприниматели и юридические лица.
Для перевода денежных средств с транзитного счета маркетплейса на расширенный счет продавца маркетплейса в Системе "МОНЕТА.РУ" необходимо использовать запрос PaymentRequest с помощью интерфейса MONETA.MerchantAPI, где payer=НОМЕР ТРАНЗИТНОГО СЧЕТА ПЛОЩАДКИ, а payee=НОМЕРА РАСШИРЕННОГО СЧЕТА ПРОДАВЦА.
1
Запрос:
2
{
3
"Envelope":{
4
"Header":{
5
"Security":{
6
"UsernameToken":{
7
"Username":"логин",
8
"Password":"пароль"
9
}
10
}
11
},
12
"Body":{
13
"PaymentRequest":{
14
"payer":"НОМЕР ТРАНЗИТНОГО СЧЕТА ПЛОЩАДКИ",
15
"payee":"НОМЕРА РАСШИРЕННОГО СЧЕТА ПРОДАВЦА",
16
"amount":"сумма",
17
"clientTransaction":"внешний идентификатор транзакции",
18
"operationInfo":{
19
"attribute":[
20
{
21
"key":"PARENTID",
22
"value":"12345678"
23
}
24
]
25
}
26
}
27
}
28
}
29
}
30
31
Ответ:
32
33
"Envelope":{
34
"Body":{
35
"PaymentResponse":{
36
"transaction": "номер операции в системе МОНЕТУ.РУ",
37
"dateTime": "2019-01-25T15:35:32.000+03:00",
38
"status": "SUCCESS",
39
"clientTransaction": "внешний идентификатор транзакции"
40
}
41
}
42
}
Copied!
1
<?php
2
3
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
4
include_once($sdkAppFileName);
5
6
try {
7
$monetaSdk = new \Moneta\MonetaSdk();
8
$monetaSdk->checkMonetaServiceConnection();
9
10
$request = new \Moneta\Types\PaymentRequest();
11
12
//номер счёта (в системе МОНЕТА.РУ) для списания средств
13
//номер транзитного счёта магазина/маркетплейса
14
$request->payer = '';
15
16
//номер счёта (в системе МОНЕТА.РУ) для зачисления средств
17
//номер расширенного счёта организации/продавца
18
$request->payee = '';
19
20
//сумма перевода
21
$request->amount = '10.00';
22
23
//номер транзакции в учётной системе магазина/маркетплейса.
24
$request->clientTransaction = 'my-order-id-10_2';
25
26
//платёжный пароль магазина/маркетплейса.
27
$request->paymentPassword = '*******************';
28
29
$operation = new \Moneta\Types\OperationInfo();
30
31
//в параметре указывается номер базовой операции - это операция платежа на транзитный счёт магазина/маркетплейса.
32
$attribute = new \Moneta\Types\KeyValueAttribute();
33
$attribute->key = 'PARENTID';
34
$attribute->value = '';
35
$operation->addAttribute($attribute);
36
37
$request->operationInfo = $operation;
38
39
//запрос на перевод средств внутри системы МОНЕТА.РУ
40
//с транзитного счёта магазина/маркетплейса на расширенный счёт организации(продавца)
41
$result = $monetaSdk->monetaService->Payment($request);
42
43
if (!$result['id']) {
44
throw new Exception(print_r($result, true));
45
}
46
47
echo "Запрос обработан.";
48
49
foreach ($result['attribute'] as $key => $attribute) {
50
if ('statusid' === $attribute['key']) {
51
if ((new \Moneta\Types\OperationStatus())::SUCCEED !== $attribute['value']) {
52
echo " Операция НЕ проведена полностью.";
53
}
54
break;
55
}
56
}
57
58
} catch (Exception $e) {
59
echo "Ошибка:<br />";
60
echo "<pre>" . $e->getMessage() . "</pre>";
61
}
Copied!
В атрибутах перевода необходимо указать номер базовой операции в поле PARENTID, это операция платежа на транзитный счет торговой площадки.
Для перевода денежных средств с расширенного счета продавца в Системе "МОНЕТА.РУ" на банковские реквизиты продавца необходимо использовать запрос PaymentRequest с помощью интерфейса MONETA.MerchantAPI, где payer=НОМЕРА РАСШИРЕННОГО СЧЕТА ПРОДАВЦА, а payee=5.
1
Запрос:
2
{
3
"Envelope":{
4
"Header":{
5
"Security":{
6
"UsernameToken":{
7
"Username":"Username",
8
"Password":"Password"
9
}
10
}
11
},
12
"Body":{
13
"PaymentRequest":{
14
"payer":НОМЕР РАСШИРЕННОГО СЧЕТА ПРОДАВЦА,
15
"payee":5,
16
"amount":10,
17
"clientTransaction":"Внешний номер операции",
18
"paymentPassword":12345,
19
"isPayerAmount":true,
20
"operationInfo":{
21
"attribute":[
22
{
23
"key":"WIREPAYMENTPURPOSE",
24
"value":"Перечисление суммы переводов денежных средств по Договору № ___ от DD.MM.YYYY. НДС не облагается."
25
}
26
]
27
}
28
}
29
}
30
}
31
}
32
Copied!
1
<?php
2
3
$sdkAppFileName = __DIR__ . "/../moneta-sdk-lib/autoload.php";
4
include_once($sdkAppFileName);
5
6
try {
7
$monetaSdk = new \Moneta\MonetaSdk();
8
$monetaSdk->checkMonetaServiceConnection();
9
10
$request = new \Moneta\Types\PaymentRequest();
11
12
//номер счёта (в системе МОНЕТА.РУ) для списания средств
13
//номер расширенного счёта организации(продавца)
14
$request->payer = '';
15
16
//получатель перевода
17
//5 - будет осуществлён банковский перевод по реквизитам; в банк организации(продавца)
18
$request->payee = '5';
19
20
//сумма перевода
21
$request->amount = '10.00';
22
23
//номер транзакции в учётной системе магазина/маркетплейса.
24
$request->clientTransaction = 'my-order-id-10_3';
25
26
//платёжный пароль магазина/маркетплейса.
27
$request->paymentPassword = '***********';
28
29
$request->isPayerAmount = true;
30
31
$request->description = 'Перечисление на банковские реквизиты организации(продавца)';
32
33
//запрос на перевод средств
34
//с расширенного счёта организации(продавца) на банковские реквизиты организации(продавца)
35
$result = $monetaSdk->monetaService->Payment($request);
36
37
if (!$result['id']) {
38
throw new Exception(print_r($result, true));
39
}
40
41
echo "Запрос обработан.";
42
43
foreach ($result['attribute'] as $key => $attribute) {
44
if ('statusid' === $attribute['key']) {
45
if ((new \Moneta\Types\OperationStatus())::SUCCEED !== $attribute['value']) {
46
echo " Операция НЕ проведена полностью.";
47
}
48
break;
49
}
50
}
51
52
} catch (Exception $e) {
53
echo "Ошибка:<br />";
54
echo "<pre>" . $e->getMessage() . "</pre>";
55
}
Copied!
Все запросы маркетплейс отправляет с помощью интерфейса MONETA.MerchantAPI
Интерфейс MONETA.MerchantAPI представляет собой Web-сервис, описанный по спецификации Web Services Description Language (WSDL), использующий протокол Simple Object Access Protocol (SOAP) для передачи информации.
Last modified 29d ago
Copy link