|
| 1 | +<?php |
| 2 | + |
| 3 | +declare(strict_types=1); |
| 4 | + |
| 5 | +use Ypmn\Amount; |
| 6 | +use Ypmn\ApiRequest; |
| 7 | +use Ypmn\Billing; |
| 8 | +use Ypmn\Merchant; |
| 9 | +use Ypmn\Payout; |
| 10 | +use Ypmn\PayoutMobileDestination; |
| 11 | +use Ypmn\PayoutSource; |
| 12 | + |
| 13 | +// Подключим файл, в котором заданы параметры мерчанта |
| 14 | +include_once 'start.php'; |
| 15 | + |
| 16 | +/** |
| 17 | + * Это файл с примером для создания выплат по номеру телефона через СБП физ. лицам |
| 18 | + **/ |
| 19 | + |
| 20 | +// Созданим выплату |
| 21 | +$payout = new Payout(); |
| 22 | + |
| 23 | +// Назначим ей уникальный номер выплаты |
| 24 | +// (повторно этот номер использовать нельзя, |
| 25 | +// даже если выплата неудачная |
| 26 | +$payout->setMerchantPayoutReference( |
| 27 | + 'payout__' |
| 28 | + . str_replace('.', '', uniqid('' . time(), true)) |
| 29 | +); |
| 30 | + |
| 31 | +// Назначим сумму (здесь пример передачи данных из формы + стандартное значение) |
| 32 | +$payout->setAmount( |
| 33 | + new Amount((float) @$_POST['summ'] ?: 150.00, 'RUB') |
| 34 | +); |
| 35 | + |
| 36 | +// Назначим Описание |
| 37 | +$payout->setDescription(@$_POST['description'] ?: 'Тестовое Описание Платежа'); |
| 38 | + |
| 39 | +// Опишем и назначим Направление и Получателя платежа |
| 40 | +$destination = (new PayoutMobileDestination()) |
| 41 | + ->setPhoneNumber(@$_POST['ph-number'] ?: "79001112233") // Назначим номер телефона (здесь пример передачи данных из формы + стандартное значение) |
| 42 | + ->setBankInformation((int)$_POST['bank'], $_POST['bankName']); // Установим id/имя банка из списка НСПК |
| 43 | +// Имя получателя из GET-запроса |
| 44 | +$postRecipientName = explode(' ', @$_POST['reciever-name'] ?: ''); |
| 45 | + |
| 46 | +// Опишем получателя |
| 47 | +$recipient = (new Billing()) |
| 48 | + -> setEmail( '[email protected]') // E-mail получателя |
| 49 | + ->setCity('Москва') // Город получателя |
| 50 | + ->setAddressLine1('Арбат, 10') // Адрес получателя |
| 51 | + ->setZipCode('121000') // Почтовый индекс получателя |
| 52 | + ->setCountryCode('RU') // Код страны получателя (2 буквы, на английском) |
| 53 | + ->setFirstName(@$postRecipientName[0] ?: 'Иван') // Установим Имя получателя для платежа (здесь пример передачи данных из формы + стандартное значение) |
| 54 | + ->setLastName(@$postRecipientName[1] ?: @$postRecipientName[0] ?: 'Иванович'); // Фамилия получателя (здесь пример передачи данных из формы + стандартное значение) |
| 55 | + |
| 56 | +$destination->setRecipient($recipient); |
| 57 | +$payout->setDestination($destination); |
| 58 | + |
| 59 | +// Опишем и назначим Источник платежа |
| 60 | +$source = new PayoutSource(); |
| 61 | +// Опишем отправителя |
| 62 | +$sender = (new Billing()) |
| 63 | + ->setFirstName('Василий') // Имя отправителя |
| 64 | + ->setLastName('Петрович') // Фамилия отправителя |
| 65 | + ->setPhone('0764111111') // Телефон отправителя |
| 66 | + -> setEmail( '[email protected]'); // Email отправителя |
| 67 | +$source->setSender($sender); |
| 68 | +$payout->setSource($source); |
| 69 | + |
| 70 | +// Создадим HTTP-запрос к API |
| 71 | +$apiRequest = (new ApiRequest(new Merchant($_POST['merchantCode'], $_POST['merchantSecret']))) |
| 72 | + ->setDebugMode() // (Опционально) Включить режим отладки (закомментируйте или удалите в рабочей программе!) |
| 73 | + ->setSandboxMode(); // (Опционально) Переключиться на тестовый сервер (закомментируйте или удалите в рабочей программе!) |
| 74 | + |
| 75 | +// Отправим запрос |
| 76 | +$responseData = $apiRequest->sendPayoutCreateRequest($payout); |
0 commit comments