ykweb / yii2-sberbank-pay
dev-master
2020-05-22 07:55 UTC
Requires
- yiisoft/yii2: ~2.0.0
This package is auto-updated.
Last update: 2024-09-22 17:52:31 UTC
README
此模块允许您在yii2项目中通过俄罗斯联邦储蓄银行网关组织支付。为了了解通过储蓄银行网关进行支付的原则,请查阅储蓄银行技术支持在商家注册其系统时提供的官方文档。如有任何问题,请联系在GitHub公司资料中提供的Pantera Digital公司联系邮箱。我们也可以根据您的需求改进此模块,有关建议也请通过电子邮件联系我们。
通过Composer安装
composer require ykweb/yii2-sberbank-pay "@dev"
运行迁移
php yii migrate --migrationPath=@ykweb/yii2/pay/sberbank/migrations
配置,添加到config/main.php
'modules' => [
'sberbank' => [
'class' => 'ykweb\yii2\pay\sberbank\Module',
'components' => [
'sberbank' => [
'class' => ykweb\yii2\pay\sberbank\components\Sberbank::class,
// время жизни инвойса в секундах (по умолчанию 20 минут - см. документацию Сбербанка)
// в этом примере мы ставим время 1 неделю, т.е. в течение этого времени покупатель может
// произвести оплату по выданной ему ссылке
'sessionTimeoutSecs' => 60 * 60 * 24 * 7,
// логин api мерчанта
'login' => 'ваш логин',
// пароль api мерчанта
'password' => 'ваш пароль',
// использовать тестовый режим (по умолчанию - нет)
'testServer' => false,
],
],
// страница вашего сайта с информацией об успешной оплате
'successUrl' => '/paySuccess',
// страница вашего сайта с информацией о НЕуспешной оплате
'failUrl' => '/payFail',
// обработчик, вызываемый по факту успешной оплаты
'successCallback' => function($invoice) {
// какая-то ваша логика, например
$order = \your\models\Order::findOne($invoice->order_id);
$client = $order->getClient();
$client->sendEmail('Зачислена оплата по вашему заказу №' . $order->id);
// .. и т.д.
},
// необязательный callback для генерации uniqid инвойса, необходим
// в том случае, если по каким-то причинам используемый по умолчанию
// формат `#invoice_id#-#timestamp#` вам не подходит
'idGenerator' => function(Invoice $invoice, int $id) {
// $id - это uniqid, сгенерированный по умолчанию
// вместо него используем собственный алгоритм, например такой
return '000-AAA-' . $invoice->id;
},
],
]
创建订单
在您的控制器中,订单保存后或创建订单事件发生时,您需要创建一个发票,并将您的订单编号和金额传递给它
// ...здесь какая-то ваша логика по сохранению заказа, например это объект $order
// создаем и сохраняем инвойс, передаем в него номер и сумму вашего заказа
$invoice = \ykweb\yii2\pay\sberbank\models\Invoice::addSberbank($order->id, $order->price);
然后,为了将用户重定向到储蓄银行支付网关,您需要向用户提供一个链接(或自动将其重定向)到url
\yii\helpers\Html::a('Оплатить заказ', ['/sberbank/default/create', 'id' => $invoice->id /* id инвойса */])
当用户点击此链接(或自动重定向)时,将调用储蓄银行API以在其系统中创建发票,并将用户重定向到储蓄银行支付表单。
支付成功后,用户将被重定向到 yoursite.com/paySuccess
。如果支付失败,用户将被重定向到 yoursite.com/payFail
。 paySuccess
和 payFail
在模块设置中指定,请参阅配置示例。
发票状态
I - initial, инвойс создан
S - success, успешно оплачен