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 @@ +