wistis / laravel-yandex-kassa1
Yandex Kassa 与 Laravel 框架的集成
Requires
- php: ~5.5|~7.0|~7.3|~8.0
- illuminate/support: ^8.12
This package is auto-updated.
Last update: 2024-09-15 13:18:11 UTC
README
Yandex Money 与 Laravel 框架的集成
简介
Laravel Yandex Kassa 包是Laravel框架的一种集成助手。
安装
要通过Composer安装,请将以下内容放入您的 composer.json
文件中
{ "require": { "wistis/laravel-yandex-kassa": "~1.0.*" } }
然后从终端运行 composer install
。
快速安装
以上安装也可以通过以下命令简化
composer require "wistis/laravel-yandex-kassa=~1.0.*"
使用方法
服务提供者
要使用Laravel Yandex Kassa包,您需要将服务提供者添加到 config/app.php
文件中
<?php return [ //... 'providers' => [ //... Wistis\LaravelYandexKassa\YandexKassaServiceProvider::class, ], //... ];
别名
为了解析 YandexKassa
类实例,您可以添加以下行到 config/app.php
文件中
<?php return [ //... 'aliases' => [ //... 'YandexKassa' => Wistis\LaravelYandexKassa\Facades\YandexKassa::class, ], //... ];
现在可以从 YandexKassa
类静态调用方法,或者您可以使用辅助函数 yandex_kassa()
配置
您还需要发布配置,并填写一些必要的数据,如 sc_id
、shop_id
和 shop_password
。要发布配置,请运行以下命令
php artisan vendor:publish --provider="Wistis\LaravelYandexKassa\YandexKassaServiceProvider" --tag="config"
现在配置文件 yandex_kassa.php
将放置在您的应用程序配置目录中。在您的应用程序 .env 文件中,您可以设置一些选项
test_mode
作为YANDEX_KASSA_TEST_MODE
shop_id
作为YANDEX_KASSA_SHOP_ID
sc_id
作为YANDEX_KASSA_SC_ID
shop_password
作为YANDEX_KASSA_SHOP_PASSWORD
视图
默认情况下,此包使用bootstrap 3表单布局,应包含在您的页面中。您可以通过发布视图来自定义此表单。要执行此操作,请运行此命令
php artisan vendor:publish --provider="Wistis\LaravelYandexKassa\YandexKassaServiceProvider" --tag="view"
默认布局将放置在您的资源目录下 views/vendor/yandex_kassa
。您现在可以自定义布局了。请注意表单布局,它应包含Yandex Kassa正常工作所需的所有字段。
语言
如果您想自定义支付名称或表单标签,可以发布语言文件。只需运行以下命令
php artisan vendor:publish --provider="Wistis\LaravelYandexKassa\YandexKassaServiceProvider" --tag="lang"
本地化文件将放置在资源目录 lang/vendor/yandex_kassa
中。如果您需要添加新的区域文件,只需创建一个包含区域名称的目录,并将现有区域文件夹的结构复制到其中,然后更改翻译值。
发布所有资源
如果您想发布配置、视图和语言,只需运行此命令
php artisan vender:publish --provider="Wistis\LaravelYandexKassa\YandexKassaServiceProvider"
显示支付表单
要在布局中显示支付表单,只需添加此代码
@include('yandex_kassa::form')
当然,您可以根据此链接自定义表单或创建自己的表单并将其包含在内。
回调链接
您可以在配置文件的路由部分设置回调链接(checkOrder、paymentAviso等)
支付类型
可以在配置文件的支付类型部分设置支付类型。有一个链接到包含完整支付类型列表的文档页面。
事件
Yandex Kassa 调用您的应用程序回调并等待响应。您可以通过监听回调事件来自定义响应参数。例如
<?php namespace App\Listeners; use App\Order; use Wistis\LaravelYandexKassa\Events\BeforePaymentAvisoResponse; class ChangeOrderStatusWhenPaymentSuccessful { /** * @param \Wistis\LaravelYandexKassa\Events\BeforePaymentAvisoResponse * @return void */ public function handle(BeforePaymentAvisoResponse $event) { // if hash is valid we know that payment is successful // and we can change order status if ($event->request->isValidHash()) { $order = Order::find($event->request->get('orderNumber')); $order->setStatus('packing'); $order->save(); } else { // Logic on non valid hash // You don't need to set response code to 1 // YandexKassaRequest do it automatically } } }
<?php namespace App\Listeners; use App\Order; use Wistis\LaravelYandexKassa\Events\BeforeCheckOrderResponse; class CheckOrderRequisites { /** * @param \Wistis\LaravelYandexKassa\Events\BeforeCheckOrderResponse * @return array|null */ public function handle(BeforeCheckOrderResponse $event) { // If you have some custom validation of payment form // You can change response parameters before controller // will show it if ($event->request->get('customField') != '1') { $event->responseParameters['code'] = 100; $event->responseParameters['message'] = 'Some checkbox was not checked'; // You must to return response parameters array, // for apply changes return $event->responseParameters; } // If there's no parameters changes // just return null or empty array return null; } }
要监听事件,您应该在 app/Providers/EventServiceProvider.php
中添加一些代码
<?php namespace App\Providers; //... use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; class EventServiceProvider extends ServiceProvider { //... protected $listen = [ 'Wistis\LaravelYandexKassa\Events\BeforeCheckOrderResponse' => [ 'App\Listeners\CheckOrderRequisites', // You can add more than one listener and every // listener can return own parameters. Incoming // parameters WILL NOT extend. But response // parameters WILL override in listeners order // 'App\Listeneres\AddCheckOrderRecord', ], 'Wistis\LaravelYandexKassa\Events\BeforePaymentAvisoResponse' => [ 'App\Listeners\ChangeOrderStatusWhenPaymentSuccessful', ] ]; //... }
许可证
MIT。请参阅许可证文件