ejen / yii2-onpay
Yii2 onpay 扩展
1.0.4
2017-08-07 08:15 UTC
Requires
- yiisoft/yii2: ^2.0
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-14 19:31:27 UTC
README
安装
可以使用 composer 安装 Yii2-onpay。运行以下命令下载并安装 Yii2-onpay
composer require ejen/yii2-onpay ~1.0
配置
config/main.php
... 'components' => [ ... 'onpay' => [ 'class' => 'ejen\payment\Onpay', 'url_success' => 'http://path/to/success/page', 'url_fail' => 'http://path/to/fail/page', ], ... ], ...
config/main-local.php
... 'components' => [ ... 'onpay' => [ 'secret_key' => 'YOUR_SECRET_KEY', 'username' => 'YOUR_USERNAME', ], ... ], ...
API 处理器示例。
此示例可以通过所有 OnPay API 在线测试。
<?php namespace frontend\controllers; use ejen\payment\onpay\ApiAction; class OnpayController extends \yii\web\Controller { public function actions() { return [ 'api' => [ 'class' => ApiAction::className(), 'payCallback' => [$this, 'payCallback'], 'checkCallback' => [$this, 'checkCallback'], ], ]; } public function payCallback($request, $response) { $amount = 100; $currency = 'RUR'; if ($request->balance_amount < $amount) { $response->code = 3; $response->comment = 'bad_pay'; return false; } if ($request->balance_currency != $currency) { $response->code = 3; $response->comment = 'bad_pay'; return false; } return true; } public function checkCallback($request, $response) { $amount = 500; $currency = 'RUR'; if ($request->amount < $amount) { $response->code = 2; return false; } if ($request->amount > $amount || $request->order_currency != $currency) { $response->code = 3; return false; } return true; } }
支付示例
<?php namespace frontend\controllers; use Yii; use frontend\forms\PaymentForm; class PaymentController extends \yii\web\Controller { public function actionIndex() { $model = new PaymentForm; if ($model->load(Yii::$app->request->post()) && $model->validate()) { $payment = Yii::$app->onpay->createPayment([ 'price' => $model->amount, 'pay_for' => Yii::$app->user->id, ]); if ($payment->validate()) { return $this->redirect($payment->getUrl()); } } return $this->render('index', [ 'model' => $model, ]); } }