naffiq / yii2-kkb
Yii2 component for KazKom bank online payment
Installs: 2 313
Dependents: 0
Suggesters: 0
Security: 0
Stars: 12
Watchers: 3
Forks: 5
Open Issues: 0
Requires
- rquadling/lalit: ^1.5
- yiisoft/yii2: ^2.0
Requires (Dev)
- codeclimate/php-test-reporter: 0.4.4
- phpunit/phpunit: 5.7
README
Компонент для оплаты онлайн через КазКом банк для Yii2.
Перед использованием рекоммендуется ознакомится с работой и циклом оплаты в документации банка
Если нашли ошибки или устаревший код то кидайте в issues.
Установка
Рекоммендуемый способ установки через composer.
$ composer require naffiq/yii2-kkb
Подключение
Добавьте следующие строки в ваш конфигурационный файл (app\config\main.php
).
Данные настройки были из документации и по ним можно тестировать оплату на
тестовых серверах ККБ
<?php return [ // your config goes here 'components' => [ // ... '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 /** * @var $kkbPayment \naffiq\kkb\KKBPayment */ $kkbPayment = \Yii::$app->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'; } ?> <form action="<?= $paymentUrl ?>" id="kkb-payment-form" style="display: none"> <input type="text" name="Signed_Order_B64" size="100" value="<?= $kkbPaymentBase64 ?>"> <input type="text" id="em" name="email" size="50" maxlength="50" value="<?= CLINET_EMAIL ?>"> <input type="text" name="Language" size="50" maxlength="3" value="rus"> <input type="text" name="BackLink" size="50" maxlength="50" value="<?= RETURN_URL ?>"> <input type="text" name="PostLink" size="50" maxlength="50" value="<?= PROCESS_RESULT_URL ?>"> </form>
Обработка результата
Для обработки результата создайте новый экшн в контроллере (URL на него должно быть указано в поле PostLink).
После этого вызовите метод \naffiq\kkb\KKBPayment::processResponse($response)
, где $response
- это ответ ККБ.
Пример базовой реализации:
<?php class PaymentController extends \yii\web\Controller { //Controller code /** * */ public function actionProcessResult() { /** * @var $kkb \naffiq\kkb\KKBPayment */ $kkb = \Yii::$app->get('kkbPayment'); $response = \Yii::$app->request->post('response'); $paymentResponse = $kkb->processResponse($response); // Обработка $paymentResponse } } ?>
В результате исполнения обработки будет возвращен объект класса naffiq\kkb\KKBPaymentResult
, который содержит
все данные об оплате.