yii2-kkb
, (*1)
Компонент для оплаты онлайн через КазКом банк для Yii2., (*2)
Перед использованием рекоммендуется ознакомится с работой и циклом оплаты в
документации банка, (*3)
Если нашли ошибки или устаревший код то кидайте в issues., (*4)
Установка
Рекоммендуемый способ установки через composer., (*5)
$ composer require naffiq/yii2-kkb
Подключение
Добавьте следующие строки в ваш конфигурационный файл (app\config\main.php
).
Данные настройки были из документации и по ним можно тестировать оплату на
тестовых серверах ККБ, (*6)
[
// ...
'kkbPayment' => [
'class' => 'naffiq\kkb\KKBPayment',
// Расположение публичного ключа
'publicKeyPath' => '@vendor/naffiq/yii2-kkb/payment-keys/kkbca.pem',
// Расположение приватного ключа
'privateKeyPath' => '@vendor/naffiq/yii2-kkb/payment-keys/test_prv.pem',
// Ключевая фраза к приватному ключу
'privateKeyPassword' => 'nissan',
// ID онлайн-магазина в системе kkb
'merchantId' => '92061101',
// ID сертификата онлайн-магазина в системе kkb
'merchantCertificateId' => '00C182B189',
// Название магазина
'merchantName' => 'Test shop',
],
]
// ...
];
```
## Использование
> Для каждого `merchantId` должны генерироваться уникальные `ORDER_ID`. Так как тестовый `merchantId` для всех один,
то возможно потребуется придумать уникальный числовой префикс к вашему `ORDER_ID`
Для того чтобы отправить запрос на оплату в epay, необходимо сформировать форму
со следующими полями:
```php
get('kkbPayment');
// В случае ошибки в этом методе могут выбрасываться исключения.
// В этом случае нужно курить доку и смотреть конфиги
try {
$kkbPaymentBase64 = $kkbPayment->processRequest(ORDER_ID, ORDER_PRICE);
} catch (\yii\base\Exception $e) {
$kkbPaymentBase64 = "";
// TODO: Обработка ошибки
}
// Выставляем адрес сервера платежей в зависимости от окружения
if (YII_ENV_DEV) {
$paymentUrl = 'https://testpay.kkb.kz/jsp/process/logon.jsp';
} else {
$paymentUrl = 'https://epay.kkb.kz/jsp/process/logon.jsp';
}
?>
Обработка результата
Для обработки результата создайте новый экшн в контроллере (URL на него должно быть указано в поле PostLink).
После этого вызовите метод \naffiq\kkb\KKBPayment::processResponse($response)
, где $response
- это ответ ККБ., (*7)
Пример базовой реализации:, (*8)
get('kkbPayment');
$response = \Yii::$app->request->post('response');
$paymentResponse = $kkb->processResponse($response);
// Обработка $paymentResponse
}
}
?>
В результате исполнения обработки будет возвращен объект класса naffiq\kkb\KKBPaymentResult
, который содержит
все данные об оплате., (*9)