alex290 / yii2-sb-payment
俄罗斯联邦储蓄银行支付网关
dev-master
2019-01-05 22:48 UTC
Requires
- yiisoft/yii2: ~2.0.0
This package is auto-updated.
Last update: 2024-09-12 22:14:46 UTC
README
俄罗斯联邦储蓄银行支付网关
安装
安装此扩展的首选方法是通过 composer。
运行以下命令之一:
php composer.phar require --prefer-dist alex290/yii2-sb-payment "*"
或添加
"alex290/yii2-sb-payment": "*"
到你的 composer.json
文件的 require 部分。
注册支付
<?php
use yii\helpers\Html;
use alex290\sbpayment\Payment;
use yii\helpers\Url;
$sbPayment = new Payment();
$sbPayment->userName = 'login-api'; // логин api мерчанта
$sbPayment->password = 'password'; // пароль api мерчанта
$sbPayment->orderNumber = 121; //Номер ордера в Вашем магазине
$sbPayment->returnUrl = Url::home(true).'/payment/success'; //Страница ваозврата после оплаты
$sbPayment->failUrl = Url::home(true).'/payment/fail'; //Страница неудачной оплаты
$sbPayment->amount = 4654; // Сумма в копейках
/**
* Сервера
* тестовый - 'https://3dsec.sberbank.ru/payment/rest/'
* рабочий - 'https://securepayments.sberbank.ru/payment/rest/'
*/
$sbPayment->server = 'https://3dsec.sberbank.ru/payment/rest/';
$regOrder = $sbPayment->register(); //Отправка данных на сервер сбербанка и получение данных для отправки платежа
?>
创建用于支付的操作按钮
<?php if ($regOrder): ?>
<?= Html::a('Оплатить сумму', $regOrder['formUrl'], ['class' => 'btn btn-secondary', 'target'=> "_blank"]) ?>
<?php endif; ?>
支付后,页面将重定向到地址 payment/success?orderId=0c0f9700-7b0c-78f3-889b-713404b38c28&lang=ru
其中 orderId 是支付网关中的订单号。在网关内部是唯一的。
在这个页面上,我们在控制器中
<?php
namespace app\controllers;
use app\models\Order;
use Yii;
class PaymentController extends \yii\web\Controller
{
public function actionSuccess()
{
$orderPayId = \Yii::$app->request->get('orderId');
return $this->render('success', ['orderPayId' => $orderPayId]);
}
public function actionFail($param)
{
return $this->render('fail');
}
}
并在 success.php 视图中获取当前支付的全部信息
<?php
use yii\helpers\Html;
use alex290\sbpayment\Payment;
$this->title = 'Платеж завершён';
$sbPayment = new Payment();
$sbPayment->userName = 'login-api';
$sbPayment->password = 'password';
$getOrder = $sbPayment->getOrderInfo($orderPayId); //получем полную информацию о текущем платеже
?>