Skip to content

Commit 487986c

Browse files
author
nikita.ivanov
committed
Merge remote-tracking branch 'origin/main'
2 parents 90e9af0 + 9b4aa75 commit 487986c

File tree

9 files changed

+85
-129
lines changed

9 files changed

+85
-129
lines changed

README.md

Lines changed: 25 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,49 @@
1-
# PHP API Client для платёжной системы YourPayments
2-
Клиентская библиотека для быстрой интеграции + примеры использования платёжной системы YourPayments.
3-
4-
YourPayments (Твои Платежи, YPMN) - многофункциональная платёжная система для сайтов, платформ и мобильных приложений,
5-
поддерживающая не только простые платежи с банковских карт, но и множество форм оплаты,
6-
а также подписки и выплаты на карты.
7-
8-
Эта библиотека снабжена подробной документацией на русском языке и предназначена для быстрой интеграции платёжной системы.
9-
10-
Репозиторий опубликован в виде [пакета Composer](https://packagist.org/packages/yourpayments/php-api-client) и может использоваться со всеми современными
11-
фреймворками: Laravel, Symfony, Yii и другими.
1+
# PHP API Client платёжной системы Твои Платежи
2+
Интеграционная библиотека (PHP SDK, или готовый клиент для нашего API) + примеры использования платёжной системы
3+
Твои Платежи (Your Payments, YPMN).
124

5+
![](https://repository-images.githubusercontent.com/638835276/ff494b04-d65b-4843-8759-e85c689a7e80)
6+
7+
Эта библиотека содержит подробные [примеры](src/Examples/) с комментариями на русском языке
8+
и предназначена для быстрой интеграции. Подходит для сайтов, платформ и приложений.
139

14-
## Требования
15-
Актуальные требования для использования пакета можно посмотреть
16-
в файле [composer.json](https://github.com/yourpayments/php-api-client/blob/main/composer.json)
17-
в секции "require"
10+
Репозиторий опубликован в виде [пакета Composer](https://packagist.org/packages/yourpayments/php-api-client) и может
11+
использоваться с любфми фреймворками и CMS.
12+
13+
Требования: [PHP 7.4 и выше](https://github.com/yourpayments/php-api-client/blob/main/composer.json)
1814

1915
## Установка
2016
### Composer
21-
[Composer](https://getcomposer.org/) - это инструмент для управления зависимостями в PHP. Он позволяет вам объявить
22-
библиотеки, от которых зависит ваш проект, и он будет управлять ими (устанавливать/обновлять) за вас.
2317
```shell
24-
composer require yourpayments/php-api-client
18+
$ composer require yourpayments/php-api-client
2519
```
2620

2721
```php
28-
// Для использования классов, например:
29-
use Ypmn\Authorization;
30-
use Ypmn\Delivery;
31-
use Ypmn\IdentityDocument;
32-
use Ypmn\Merchant;
33-
use Ypmn\Payment;
34-
use Ypmn\Client;
35-
use Ypmn\Billing;
36-
use Ypmn\ApiRequest;
37-
use Ypmn\PaymentException;
38-
use Ypmn\Product;
39-
use Ypmn\Capture;
40-
use Ypmn\Refund;
41-
use Ypmn\Std;
22+
<?php
4223

43-
// Подключите загрузчик классов от Composer
4424
require vendor/autoload.php;
4525
```
4626

4727
### PHP без фреймворков
4828
Клонируйте или скачайте, а затем подключите ([require](https://www.php.net/manual/ru/function.require.php)) файлы этого репозитория.
4929

5030
## Примеры использования
51-
### Начало работы
52-
```php
53-
// Создадим объект Мерчанта с помощью Идентификатора Мерчанта и Секретного Ключа Мерчанта
54-
$merchant = new Merchant('rudevru1', 'hE9I1?3@|C8@w[1I&=y)');
55-
```
56-
### Функции
57-
1. [Cамый простой платёж](src/Documentation/simpleGetPaymentLink.md)
58-
2. [Платёж со всеми полями](src/Documentation/getPaymentLink.md)
59-
3. Получить токен (чтобы запомнить карту)
60-
4. Оплата по токену
61-
5. [Списание средств](src/Documentation/paymentCapture.md)
62-
6. [src/Documentation/paymentRefund.md](src/Documentation/paymentRefund.md)
63-
7. Проверка статуса платежа
64-
8. [Страница после оплаты](src/Documentation/returnPage.md)
65-
66-
Для работы рекомендуется использовать любую современную IDE (VS Code, Intellij Idea/PHPStorm,
67-
Eclipse, Netbeans, etc), чтобы получать подробные подсказки прямо во время редактирования кода.
68-
![IDE screenshot](screenshot.jpg "IDE screenshot")
31+
1. [Начало работы (настройка интеграции)](src/Examples/start.php)
32+
1. [Cамый простой платёж](src/Examples/simpleGetPaymentLink.php)
33+
2. [Платёж со всеми полями](src/Examples/getPaymentLink.php)
34+
3. [Токенизация карты (чтобы запомнить карту клиента и не вводить повторно)](src/Examples/getToken.php)
35+
4. [Оплата по токену](src/Examples/paymentByToken.php)
36+
5. [Списание средств](src/Examples/paymentCapture.php)
37+
6. [Возврат средств](src/Examples/paymentRefund.php)
38+
7. [Проверка статуса платежа](src/Examples/paymentGetStatus.php)
39+
8. [Страница после оплаты](src/Examples/returnPage.php)
6940

7041
## Ссылки
42+
- [Основной сайт НКО "Твои Платежи"](https://YPMN.ru/)
7143
- [Докуметация по API](https://dev.YPMN.ru/ru/documents/apiv4/)
72-
- [Основной сайт Твои Платежи](https://YPMN.ru/)
73-
- Начните знакомство с кодом с этих файлов: [example.php](https://github.com/yourpayments/php-api-client/blob/main/example.php) и
74-
класса [PaymentInterface.php](https://github.com/yourpayments/php-api-client/blob/main/src/PaymentInterface.php)
7544
- [Реквизиты тестовых банковских карт](https://dev.payu.ru/ru/documents/rest-api/testing/#menu-2)
7645
- [Задать вопрос или сообщить о проблеме](https://github.com/yourpayments/php-api-client/issues/new)
46+
- [Документация Composer](https://getcomposer.org/)
7747

7848
-------------
79-
![](https://ypmn.ru/s/img/logo/ru/dark/horizontal_logo.svg)
80-
81-
[YPMN.ru](https://YPMN.ru/ "Платёжная система для сайтов и не только")
49+
[НКО "Твои Платежи"](https://YPMN.ru/ "Платёжная система для сайтов, платформ и приложений") - платёжная система для сайтов, платформ и приложений.

src/ApiRequest.php

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,49 @@ private function sendGetRequest(string $api): array
7575
$err = curl_error($curl);
7676
curl_close($curl);
7777

78+
if (true === $this->getDebugMode()) {
79+
$this->echoDebugMessage('GET-Запрос к серверу Ypmn:');
80+
$this->echoDebugMessage($urlToPostTo);
81+
$this->echoDebugMessage('Ответ от сервера Ypmn:');
82+
$this->echoDebugMessage(json_encode(json_decode($response), JSON_PRETTY_PRINT));
83+
84+
if (mb_strlen($err) > 0) {
85+
$this->echoDebugMessage('Ошибка');
86+
echo '<br>Вы можете отправить запрос на поддержку на <a href="mailto:[email protected]?subject=YPMN_Integration">[email protected]</a>';
87+
echo '<br><a href="https://github.com/yourpayments/php-api-client/">Последняя версия примеров на Github</a>';
88+
echo '<br><a href="https://github.com/yourpayments/php-api-client/issues">Оставить заявку на улучшение</a>';
89+
echo '<br><a href="https://ypmn.ru/ru/contacts/">Контакты</a>';
90+
} else {
91+
$cpanel_url = 'https://' . ($this->getSandboxMode() ? 'sandbox' : 'secure' ). '.ypmn.ru/cpanel/';
92+
93+
if ($this->getSandboxMode()) {
94+
echo Std::alert([
95+
'type' => 'warning',
96+
'text' => '
97+
Внимание!
98+
У вас настроен тестовый режим.
99+
<br>Все запросы уходят на тестовый сервер <a href="' . $cpanel_url . '" class="alert-link">sandbox.ypmn.ru</a>
100+
<br>
101+
<br>
102+
Когда закончите тестирование, закомментируйте или удалите строки кода:
103+
<code class="d-block ml-2">
104+
$apiRequest->setDebugMode(); // вывод отладки
105+
<br>$apiRequest->setSandboxMode(); // тестовый сервер
106+
</code>
107+
',
108+
]);
109+
}
110+
}
111+
}
112+
113+
if (mb_strlen($err) > 0) {
114+
throw new PaymentException($err);
115+
}
116+
117+
if ($response == null || strlen($response) === 0) {
118+
throw new PaymentException('Вы можете попробовать другой способ оплаты, либо свяжитесь с продавцом.');
119+
}
120+
78121
return ['response' => $response, 'error' => $err];
79122
}
80123

@@ -125,19 +168,19 @@ private function sendPostRequest(JsonSerializable $data, string $api): array
125168
curl_close($curl);
126169

127170
if (true === $this->getDebugMode()) {
128-
$this->echoDebugMessage('Запрос к серверу Ypmn:');
171+
$this->echoDebugMessage('POST-Запрос к серверу Ypmn:');
129172
$this->echoDebugMessage($encodedJsonData);
130173
$this->echoDebugMessage('Ответ от сервера Ypmn:');
131174
$this->echoDebugMessage(json_encode(json_decode($response), JSON_PRETTY_PRINT));
132175

133176
if (mb_strlen($err) > 0) {
134177
$this->echoDebugMessage('Ошибка');
135178
$this->echoDebugMessage($encodedJsonData);
136-
echo '<br>Следуйте <a href="http://secure.payu.ru/docs/">документации</a>';
137-
echo '<br>Вы можете отправить запрос на поддержку на <a href="mailto:help@payu.ru?subject=INTEGRATE">help@payu.ru</a>';
138-
echo '<br><a href="https://github.com/payuru/php-payu4/">Последняя версия примеров на Github</a>';
139-
echo '<br><a href="https://github.com/payuru/php-payu4/issues">Оставить заявку на улучшение</a>';
140-
echo '<br><a href="https://payu.ru/contacts">Контакты</a>';
179+
180+
echo '<br>Вы можете отправить запрос на поддержку на <a href="mailto:itsupport@ypmn.ru?subject=YPMN_Integration">itsupport@ypmn.ru</a>';
181+
echo '<br><a href="https://github.com/yourpayments/php-api-client/">Последняя версия примеров на Github</a>';
182+
echo '<br><a href="https://github.com/yourpayments/php-api-client/issues">Оставить заявку на улучшение</a>';
183+
echo '<br><a href="https://ypmn.ru/ru/contacts/">Контакты</a>';
141184
} else {
142185
$cpanel_url = 'https://' . ($this->getSandboxMode() ? 'sandbox' : 'secure' ). '.ypmn.ru/cpanel/';
143186

@@ -153,7 +196,7 @@ private function sendPostRequest(JsonSerializable $data, string $api): array
153196
Когда закончите тестирование, закомментируйте или удалите строки кода:
154197
<code class="d-block ml-2">
155198
$apiRequest->setDebugMode(); // вывод отладки
156-
<br>$apiRequest->setSandboxMode(); // тетстовый сервер
199+
<br>$apiRequest->setSandboxMode(); // тестовый сервер
157200
</code>
158201
',
159202
]);

src/Examples/getPaymentLink.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Ypmn\Product;
1414
use Ypmn\Std;
1515

16+
// Подключим файл, в котором заданы параметры мерчанта
1617
include_once 'start.php';
1718

1819
// Оплата по ссылке Ypmn

src/Examples/getToken.php

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,12 @@
22

33
declare(strict_types=1);
44

5-
use Ypmn\Authorization;
6-
use Ypmn\Delivery;
7-
use Ypmn\IdentityDocument;
8-
use Ypmn\Merchant;
9-
use Ypmn\MerchantToken;
10-
use Ypmn\Payment;
11-
use Ypmn\Client;
12-
use Ypmn\Billing;
135
use Ypmn\ApiRequest;
146
use Ypmn\PaymentException;
15-
use Ypmn\Product;
16-
use Ypmn\Capture;
17-
use Ypmn\Refund;
187
use Ypmn\Std;
198
use Ypmn\PaymentReference;
209

10+
// Подключим файл, в котором заданы параметры мерчанта
2111
include_once 'start.php';
2212

2313
// Хотим получить токен

src/Examples/paymentByToken.php

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,16 @@
33
declare(strict_types=1);
44

55
use Ypmn\Authorization;
6-
use Ypmn\Delivery;
7-
use Ypmn\IdentityDocument;
8-
use Ypmn\Merchant;
96
use Ypmn\MerchantToken;
107
use Ypmn\Payment;
118
use Ypmn\Client;
129
use Ypmn\Billing;
1310
use Ypmn\ApiRequest;
1411
use Ypmn\PaymentException;
1512
use Ypmn\Product;
16-
use Ypmn\Capture;
17-
use Ypmn\Refund;
1813
use Ypmn\Std;
19-
use Ypmn\PaymentReference;
2014

15+
// Подключим файл, в котором заданы параметры мерчанта
2116
include_once 'start.php';
2217

2318
// Оплата по токену
@@ -57,7 +52,6 @@
5752
// Установим валюту
5853
$payment->setCurrency('RUB');
5954

60-
6155
// токен
6256
$token = new MerchantToken();
6357
$tokenHash = (isset($_GET['token']) ? $_GET['token'] : 'f7bcd9b9990b2d73cff5ad3df306b343');

src/Examples/paymentCapture.php

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,10 @@
22

33
declare(strict_types=1);
44

5-
use Ypmn\Authorization;
6-
use Ypmn\Delivery;
7-
use Ypmn\IdentityDocument;
8-
use Ypmn\Merchant;
9-
use Ypmn\MerchantToken;
10-
use Ypmn\Payment;
11-
use Ypmn\Client;
12-
use Ypmn\Billing;
135
use Ypmn\ApiRequest;
14-
use Ypmn\PaymentException;
15-
use Ypmn\Product;
166
use Ypmn\Capture;
17-
use Ypmn\Refund;
18-
use Ypmn\Std;
19-
use Ypmn\PaymentReference;
207

8+
// Подключим файл, в котором заданы параметры мерчанта
219
include_once 'start.php';
2210

2311
// Запрос на списание денег

src/Examples/paymentGetStatus.php

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,9 @@
22

33
declare(strict_types=1);
44

5-
use Ypmn\Authorization;
6-
use Ypmn\Delivery;
7-
use Ypmn\IdentityDocument;
8-
use Ypmn\Merchant;
9-
use Ypmn\MerchantToken;
10-
use Ypmn\Payment;
11-
use Ypmn\Client;
12-
use Ypmn\Billing;
135
use Ypmn\ApiRequest;
14-
use Ypmn\PaymentException;
15-
use Ypmn\Product;
16-
use Ypmn\Capture;
17-
use Ypmn\Refund;
18-
use Ypmn\Std;
19-
use Ypmn\PaymentReference;
206

7+
// Подключим файл, в котором заданы параметры мерчанта
218
include_once 'start.php';
229

2310
// Получить номер транзакции в Ypmn

src/Examples/paymentRefund.php

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,16 @@
22

33
declare(strict_types=1);
44

5-
use Ypmn\Authorization;
6-
use Ypmn\Delivery;
7-
use Ypmn\IdentityDocument;
8-
use Ypmn\Merchant;
9-
use Ypmn\MerchantToken;
10-
use Ypmn\Payment;
11-
use Ypmn\Client;
12-
use Ypmn\Billing;
135
use Ypmn\ApiRequest;
14-
use Ypmn\PaymentException;
15-
use Ypmn\Product;
16-
use Ypmn\Capture;
176
use Ypmn\Refund;
18-
use Ypmn\Std;
19-
use Ypmn\PaymentReference;
207

8+
// Подключим файл, в котором заданы параметры мерчанта
219
include_once 'start.php';
2210

23-
// Инициировать возврат средств
24-
25-
// Создадим запрос
11+
// Создадим запрос на возврат средств
2612
$refund = (new Refund);
27-
28-
// Установим номер платежа Ypmn - возвращается в ответ на запрос на авторизацию платежа в JSON Response
29-
// См. пример с запросом Payment выше
30-
$refund->setYpmnPaymentReference(2297597);
13+
// Установим номер платежа Ypmn
14+
$refund->setYpmnPaymentReference("2297597");
3115
// Cумма исходной операции на авторизацию
3216
$refund->setOriginalAmount(3700);
3317
// Cумма фактического списания

src/Examples/simpleGetPaymentLink.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Ypmn\Product;
1212
use Ypmn\Std;
1313

14+
// Подключим файл, в котором заданы параметры мерчанта
1415
include_once 'start.php';
1516

1617
// Оплата по ссылке Ypmn

0 commit comments

Comments
 (0)