naffiq / yii2-kkb
为 KazKom 银行在线支付提供的 Yii2 组件
1.1.1
2017-11-26 15:35 UTC
Requires
- rquadling/lalit: ^1.5
- yiisoft/yii2: ^2.0
Requires (Dev)
- codeclimate/php-test-reporter: 0.4.4
- phpunit/phpunit: 5.7
README
为 Yii2 开发的通过 KazKom 银行进行在线支付的应用组件。
在使用之前,建议您先阅读 银行文档 中关于工作和支付周期的说明。
如果您发现了错误或过时的代码,请将其提交到 issues 中。
安装
推荐使用 composer 进行安装。
$ composer require naffiq/yii2-kkb
连接
请将以下行添加到您的配置文件中 (app\config\main.php
)。以下配置来自文档,可以用于在 KKB 的测试服务器上进行支付测试。
<?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>
结果处理
为了处理结果,在控制器中创建一个新的动作(在 PostLink 字段中指定其 URL)。然后调用方法 \naffiq\kkb\KKBPayment::processResponse($response)
,其中 $response
是 KKB 的响应。
基本实现示例
<?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
类对象。