diff --git a/README.md b/README.md
index e64d93f..432b7bb 100644
--- a/README.md
+++ b/README.md
@@ -68,6 +68,10 @@ docker compose up --detach
4. [Печать анкеты](src/Examples/qstPrint.php)
5. [Список анкет](src/Examples/qstList.php)
+##### 11. Маркетплейс
+1. [Запрос продавца МП](src/Examples/Marketplace/getSeller.php)
+2. [Запрос всех продавцов МП](src/Examples/Marketplace/getSellers.php)
+
## Ссылки
- [НКО «Твои Платежи»](https://YPMN.ru/)
- [Докуметация API](https://ypmn.ru/ru/documentation/)
diff --git a/example.php b/example.php
index 0bb7cb0..74d760e 100644
--- a/example.php
+++ b/example.php
@@ -59,6 +59,8 @@
case 'qstPrint':
case 'SOMGetPaymentLink':
case 'qstList':
+ case 'getSeller':
+ case 'getSellers':
require './src/Examples/start.php';
@include './src/Examples/'.$_GET['function'] . '__prepend.php';
require './src/Examples/'.$_GET['function'] . '.php';
diff --git a/example_list.php b/example_list.php
index 58b635e..c6cc1b9 100644
--- a/example_list.php
+++ b/example_list.php
@@ -166,4 +166,16 @@
'docLink' => 'https://ypmn.ru/ru/documentation/#tag/qst-api/paths/~1v4~1qst~1list/get',
'link' => '',
],
+ 'getSeller' => [
+ 'name' => 'Запрос продавца МП',
+ 'about' => 'В этом примере показана реализация запроса продавца маркетплейса по его ID.',
+ 'docLink' => 'https://ypmn.ru/ru/documentation/#tag/payment-api',
+ 'link' => '',
+ ],
+ 'getSellers' => [
+ 'name' => 'Запрос всех продавцов МП',
+ 'about' => 'В этом примере показана реализация запроса всех продавцов маркетплейса.',
+ 'docLink' => 'https://ypmn.ru/ru/documentation/#tag/payment-api',
+ 'link' => '',
+ ],
];
diff --git a/src/ApiRequest.php b/src/ApiRequest.php
index 7a9aab8..d9bcde3 100644
--- a/src/ApiRequest.php
+++ b/src/ApiRequest.php
@@ -28,6 +28,7 @@ class ApiRequest implements ApiRequestInterface
const QST_STATUS_API = '/api/v4/qst/status';
const QST_PRINT_API = '/api/v4/qst/print';
const QST_LIST_API = '/api/v4/qst/list';
+ const MARKETPLACE_SELLER_API = '/api/v4/marketplace/sellers';
const HOST = 'https://secure.ypmn.ru';
const SANDBOX_HOST = 'https://sandbox.ypmn.ru';
const LOCAL_HOST = 'http://127.0.0.1';
@@ -681,4 +682,16 @@ private function addCurlOptHeaderFunction(array &$curlOptArr, array &$headers):
}
];
}
+
+ /** @inheritdoc */
+ public function sendMarketplaceGetSellerRequest(string $marketplaceSellerId): array
+ {
+ return $this->sendGetRequest(self::MARKETPLACE_SELLER_API . '/' . $marketplaceSellerId);
+ }
+
+ /** @inheritdoc */
+ public function sendMarketplaceGetSellersRequest(): array
+ {
+ return $this->sendGetRequest(self::MARKETPLACE_SELLER_API);
+ }
}
diff --git a/src/Examples/Marketplace/getMasterAccountSettings.php b/src/Examples/Marketplace/getMasterAccountSettings.php
new file mode 100644
index 0000000..68e6eb9
--- /dev/null
+++ b/src/Examples/Marketplace/getMasterAccountSettings.php
@@ -0,0 +1,22 @@
+setSandboxMode();
+$apiRequest->setDebugMode();
+
+try {
+ $session = $apiRequest->sendMarketplaceGetSellerRequest($marketplaceSellerId);
+
+} catch (\Ypmn\PaymentException $e) {
+}
diff --git a/src/Examples/Marketplace/getSeller.php b/src/Examples/Marketplace/getSeller.php
new file mode 100644
index 0000000..68e6eb9
--- /dev/null
+++ b/src/Examples/Marketplace/getSeller.php
@@ -0,0 +1,22 @@
+setSandboxMode();
+$apiRequest->setDebugMode();
+
+try {
+ $session = $apiRequest->sendMarketplaceGetSellerRequest($marketplaceSellerId);
+
+} catch (\Ypmn\PaymentException $e) {
+}
diff --git a/src/Examples/Marketplace/getSellers.php b/src/Examples/Marketplace/getSellers.php
new file mode 100644
index 0000000..46c4db4
--- /dev/null
+++ b/src/Examples/Marketplace/getSellers.php
@@ -0,0 +1,19 @@
+setSandboxMode();
+$apiRequest->setDebugMode();
+
+try {
+ $session = $apiRequest->sendMarketplaceGetSellersRequest();
+
+} catch (\Ypmn\PaymentException $e) {
+}
diff --git a/src/Examples/Marketplace/simpleGetPaymentLink.php b/src/Examples/Marketplace/simpleGetPaymentLink.php
new file mode 100644
index 0000000..7dd50cf
--- /dev/null
+++ b/src/Examples/Marketplace/simpleGetPaymentLink.php
@@ -0,0 +1,100 @@
+ 'Заказ №' . $merchantPaymentReference,
+ 'sku' => $merchantPaymentReference,
+ 'unitPrice' => 200.42,
+ 'quantity' => 1,
+]);
+
+// Опишем Биллинговую (платёжную) информацию
+$billing = new Billing;
+// Установим Код страны
+$billing->setCountryCode('RU');
+// Установим Имя Плательщика
+$billing->setFirstName('Иван');
+// Установим Фамилия Плательщика
+$billing->setLastName('Петров');
+// Установим Email Плательщика
+$billing->setEmail('test1@ypmn.ru');
+// Установим Телефон Плательщика
+$billing->setPhone('+7-800-555-35-35');
+// Установим Город
+$billing->setCity('Москва');
+
+// Создадим клиентское подключение
+$client = new Client;
+// Установим биллинг
+$client->setBilling($billing);
+
+// Создадим платёж
+$payment = new Payment;
+// Установим позиции
+$payment->addProduct($orderAsProduct);
+// Установим валюту
+$payment->setCurrency('RUB');
+// Создадим и установим авторизацию по типу платежа
+$payment->setAuthorization(new Authorization('CCVISAMC',true));
+// Установим номер заказа (должен быть уникальным в вашей системе)
+$payment->setMerchantPaymentReference($merchantPaymentReference);
+// Установим адрес перенаправления пользователя после оплаты
+$payment->setReturnUrl('https://test.u2go.ru/php-api-client/?function=returnPage');
+// Установим клиентское подключение
+$payment->setClient($client);
+
+// Создадим HTTP-запрос к API
+$apiRequest = new ApiRequest($merchant);
+// Включить режим отладки (закомментируйте или удалите в рабочей программе!)
+$apiRequest->setDebugMode();
+// Переключиться на тестовый сервер (закомментируйте или удалите в рабочей программе!)
+$apiRequest->setSandboxMode();
+// Отправим запрос
+$responseData = $apiRequest->sendAuthRequest($payment, $merchant);
+// Преобразуем ответ из JSON в массив
+try {
+ $responseData = json_decode((string) $responseData["response"], true);
+
+ if ($responseData) {
+ // Выведем кнопку оплаты
+ echo Std::drawYpmnButton([
+ 'url' => $responseData["paymentResult"]['url'],
+ 'sum' => $payment->sumProductsAmount(),
+ ]);
+
+ // .. или сделаем редирект на форму оплаты (опционально)
+ // Std::redirect($responseData["paymentResult"]['url']);
+ }
+} catch (Exception $exception) {
+ //TODO: обработка исключения
+ echo Std::alert([
+ 'text' => '
+ Извините, платёжный метод временно недоступен.
+ Вы можете попробовать другой способ оплаты, либо свяжитесь с продавцом.
+
+
' . $exception->getMessage() . '', + 'type' => 'danger', + ]); + + throw new PaymentException('Платёжный метод временно недоступен'); +} diff --git a/src/Examples/Marketplace/startMarketplace.php b/src/Examples/Marketplace/startMarketplace.php new file mode 100644 index 0000000..2372a5e --- /dev/null +++ b/src/Examples/Marketplace/startMarketplace.php @@ -0,0 +1,16 @@ +