pscbonline-php/README.md

311 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PSCB PHP SDK (beta)
- [Общая информация](#общая-информация)
- [Требования](#требования)
- [Описание](#описание)
- [Структура компонента SDK](#структура-компонента-sdk)
- [Методы работы с платежами](#методы-работы-с-платежами)
- [Вызов платежной формы](#вызов-платежной-формы)
- [Пример вызова платежной формы:](#пример-вызова-платежной-формы)
- [Создание платежа СБП](#создание-платежа-сбп)
- [Пример использования:](#пример-использования-1)
- [Подтверждение предавторизации](#подтверждение-предавторизации)
- [Пример использования:](#пример-использования-2)
- [Отмена предавторизации](#отмена-предиавторизации)
- [Пример использования:](#пример-использования-3)
- [Возврат платежа](#возврат-платежа)
- [Пример использования:](#пример-использования-4)
- [Обработка нотификаций](#обработка-нотификаций)
- [Подключение](#подключение)
- [Примеры использования](#примеры-использования)
- [Вопросы и ответы](#вопросы-и-ответы)
## Общая информация
Библиотека является дополнением к API интернет-эквайринга ПСКБ и позволяет интегрировать прием платежей картами и СБП в PHP-проекты с минимальными усилиями.
### Требования
PHP 8.0+
### Описание
SDK включает 2 базовых компонента, которые предназначены для следующих целей:
- `SDK_PayModul` методы работы с платежами
- `SDK_Callback` обработка нотификаций
Для работы с SDK вам понадобятся:
- `marketPlace` идентификатор Магазина
- `secretKey` секретный ключ, используемый для аутентификации
Параметры `marketPlace` и `secretKey` доступны в [Кабинете мерчанта](https://oos.pscb.ru/auth) в разделе "Профиль". Параметр `secretKey` отличается для тестового и боевого окружения Системы.
### Структура компонента SDK
| Файл/каталог | Описание |
|--------------| --- |
| `README.md` | Cодержит информацию про доступные для передачи параметры в методы класса |
| `events` | Отображает ответы и результаты выполнения от API (путь хранения выбирается самостоятельно) |
| `logs` | Отображает ответы и результаты выполнения от SDK (путь хранения выбирается самостоятельно) |
| `src` | Каталог с исходными кодами SDK |
## Методы работы с платежами
### Вызов платежной формы
#### Пример вызова платежной формы:
```php
<?php
//Подключение библиотеки
include 'payment.class.php';
//Основные параметры платежа
$data = array(
"marketPlace" => 47607,
"secretKey" => '111111',
"orderId" => 2000,
"request_url"=>" https://oosdemo.pscb.ru ",
"hold" => true // Активируем создание двухстадийного платежа картой
);
//Параметры для чека
$products = array(
array(
"object" => 'Товар1',
"quantity" => 1,
"price" => 2,
"amount" => 2
),
);
//Указание путей для сохранения логов и событий
//Вместо logs и events установите свой путь для сохранения, например /var/log
$M = new SetWay();
$M->SetLogsAndEvensWay('logs','events');
//Создание экземпляра платежной формы и ее запуск
$PayForm = new ClassPay($data);
$PayForm->CreatePayment($products);
?>
```
### Создание платежа СБП
Для создания платежа через СБП используйте класс `ClassInvoicing`.
#### Пример использования:
```php
<?php
// ... подключение библиотеки и настройка путей для логов ...
$data = array(
"marketPlace" => 47607,
"orderId" => 6026,
"request_url"=>"https://oosdemo.pscb.ru",
"secretKey" => '111111',
"sbpRedirectUrl"=>"https://your-site.com/sbp-callback" //URL - для сайтов, schema - для мобильных приложений
);
$products = array(
array(
"object" => 'Товар1',
"quantity" => 1,
"price" => 2,
"amount" => 2
),
);
$InvoicingPay = new ClassInvoicing($data);
$result = $InvoicingPay->CreatePayment($products);
?>
```
### Подтверждение предавторизации
Для подтверждения двухстадийного платежа картой используйте класс `ClassConfirm`.
#### Пример использования:
```php
<?php
// ... подключение библиотеки и настройка путей для логов ...
$data = array(
"marketPlace" => 47607,
"orderId" => 6026,
"request_url"=>"https://oosdemo.pscb.ru",
"secretKey" => '111111'
);
$products = array(
array(
"object" => 'Товар1',
"quantity" => 1,
"price" => 2,
"amount" => 2
),
);
$ConfirmPay = new ClassConfirm($data);
$result = $ConfirmPay->CreatePayment($products);
?>
```
### Отмена предавторизации
Для отмены двухстадийного платежа картой используйте класс `ClassReject`.
#### Пример использования:
```php
<?php
// ... подключение библиотеки и настройка путей для логов ...
$data = array(
"marketPlace" => 47607,
"orderId" => 6026,
"request_url"=>"https://oosdemo.pscb.ru",
"secretKey" => '111111'
);
$RejectPay = new ClassReject($data);
$result = $RejectPay->CancelPayment();
?>
```
### Возврат платежа
Для возврата платежа используйте класс `ClassRefund`.
#### Пример использования:
```php
<?php
// ... подключение библиотеки и настройка путей для логов ...
$data = array(
"marketPlace" => 47607,
"orderId" => 6026,
"request_url"=>"https://oosdemo.pscb.ru",
"secretKey" => '111111',
"partialRefund"=> true // Укажите false для полного возврата
);
$products = array(
array(
"object" => 'Товар1',
"quantity" => 1,
"price" => 2,
"amount" => 2
),
);
$RefundPay = new ClassRefund($data);
$result = $RefundPay->CreatePayment($products);
?>
```
## Обработка нотификаций
Сценарий работы с нотификациями позволяет получать уведомления об изменении статусов платежей. Для обработки нотификаций используйте класс `CallbackClass`.
### Подключение
```php
<?php
include 'Src/CallbackClass/CallbackClass.php';
$callback = new CallbackClass();
$result = $callback->processNotification($_POST);
?>
```
### Примеры использования
```php
<?php
// ... подключение библиотеки ...
$callback = new CallbackClass();
$notificationData = $callback->processNotification($_POST);
if ($notificationData['status'] == 'success') {
// Обработка успешного платежа
} else {
// Обработка ошибки
}
?>
```
## Вопросы и ответы
**Q: Как изменить пути для сохранения логов?**
A: Используйте метод `SetLogsAndEvensWay` класса `SetWay`:
```php
$M = new SetWay();
$M->SetLogsAndEvensWay('/custom/logs/path', '/custom/events/path');
```
**Q: Как проверить корректность URL для запросов?**
A: SDK автоматически проверяет URL на соответствие допустимым доменам: oos.pscb.ru или oosdemo.pscb.ru.
**Q: Как обрабатывать ошибки?**
A: Все ошибки записываются в соответствующие log-файлы в указанной директории. Также можно анализировать возвращаемые значения методов.
**Q: Как настроить обратный редирект после успешной оплаты через СБП?**
A: Используйте параметр `sbpRedirectUrl` при создании платежа:
```php
$data = array(
// ... другие параметры ...
"sbpRedirectUrl" ="https://your-site.com/success"
);
```
**Q: Как настроить язык платежной формы?**
A: Используйте параметр `displayLanguage`:
```php
$data = array(
// ... другие параметры ...
"displayLanguage" ="en" // Доступные значения: "ru", "en"
);
```
**Q: Как включить режим отладки?**
A: Добавьте параметр `debug` со значением `true`:
```php
$data = array(
// ... другие параметры ...
"debug" =true
);
```
**Q: Какой формат данных требуется для позиций чека?**
A: Каждая позиция чека должна содержать следующие поля:
```php
array(
"object" ='Название товара',
"quantity" =1, // Количество
"price" =100.50, // Цена за единицу
"amount" =100.50 // Общая сумма
)
```
**Q: Как обрабатывать повторные платежи с одинаковым `orderId`?**
A: SDK автоматически проверяет уникальность `orderId`. При попытке создать платеж с уже существующим `orderId` будет возвращена ошибка.
**Q: Как создавать установочные платежи для сохранения реквизитов карты?**
A: Для сохранения реквизитов карты/создания установочных рекуррентных платежей используйте параметр `recurrentable`:
```php
$data = array(
// ... другие параметры ...
"recurrentable" = true
);
```
**Q: Как получить QR-код для оплаты?**
A: Для получения QR-кода установите параметры `requestQrCodeImage` и `requestQrCodeImageUrl` в `true`:
```php
$data = array(
// ... другие параметры ...
"requestQrCodeImage" =true,
"requestQrCodeImageUrl" =true
);
```