edofre / yii2-omnikassa
适用于Rabobank omnikassa支付的Yii2组件
V1.0.5
2016-12-24 10:19 UTC
Requires
- php: >=5.5.0
This package is not auto-updated.
Last update: 2024-09-14 19:04:00 UTC
README
安装
安装此扩展的首选方式是通过 composer.
要安装,请运行
$ php composer.phar require edofre/yii2-omnikassa "V1.0.5"
或者将以下内容添加到您的 composer.json
文件的 require
部分:
"edofre/yii2-omnikassa": "V1.0.5"
to the require
section of your composer.json
file.
用法
将组件添加到配置中,以下配置是omnikassa的测试环境配置
return [ ... 'components' => [ 'omniKassa' => [ 'class' => '\edofre\omnikassa\OmniKassa', 'automaticResponse' => false, 'currencyCode' => '978', 'interfaceVersion' => 'HP_1.0', 'keyVersion' => '1', 'merchantId' => '002020000000001', 'paymentMeanBrandList' => 'IDEAL,VISA,MASTERCARD,MAESTRO', 'secretKey' => '002020000000001_KEY1', 'testMode' => true, 'url' => 'https://payment-webinit.simu.omnikassa.rabobank.nl/paymentServlet', ], ... ], ... ];
创建PaymentRequest对象并创建表单
$paymentRequest = new \edofre\omnikassa\PaymentRequest([ 'amount' => 12354, // Amount in cents, 12345 = 123,45 'orderId' => 'your-order-id', 'normalReturnUrl' => \yii\helpers\Url::to(['site/return'], true), 'transactionReference' => "your-transaction-reference", ]); Yii::$app->omniKassa->prepareRequest($paymentRequest);
<form method="post" action="<?= Yii::$app->omniKassa->url ?>"> <input type="hidden" name="Data" value="<?= Yii::$app->omniKassa->dataField ?>"> <input type="hidden" name="InterfaceVersion" value="<?= Yii::$app->omniKassa->interfaceVersion ?>"> <input type="hidden" name="Seal" value="<?= Yii::$app->omniKassa->seal ?>"> <?= \yii\helpers\Html::submitButton('Click here to make your payment', ['class' => 'btn btn-success']) ?> </form>
创建您在PaymentRequest中指定的控制器动作并处理请求
public function actionReturn() { $response = Yii::$app->omniKassa->processRequest(); var_dump($response->attributes); var_dump('Pending', $response->isPending); var_dump('Successful', $response->isSuccessful); var_dump('Failure', $response->isFailure); }
不要忘记为这个动作禁用CSRF保护,因为它是一个外部动作
public function beforeAction($action) { if ($action->id == 'return') { $this->enableCsrfValidation = false; } return parent::beforeAction($action); }