artem328 / laravel-yandex-kassa
Yandex Kassa 集成到 Laravel 框架中
Requires
- php: ~5.5|~7.0
- illuminate/support: ~5.1
This package is not auto-updated.
Last update: 2024-09-14 19:09:23 UTC
README
Yandex Money 集成到 Laravel 框架中
简介
Laravel Yandex Kassa 包是Laravel框架的一种集成助手。
安装
通过composer安装,只需在您的composer.json
文件中添加以下内容
{ "require": { "artem328/laravel-yandex-kassa": "~1.0.*" } }
然后从终端运行composer install
。
快速安装
上述安装也可以通过以下命令简化
composer require "artem328/laravel-yandex-kassa=~1.0.*"
用法
服务提供者
要使用Laravel Yandex Kassa包,您需要将服务提供者添加到config/app.php
文件中
<?php return [ //... 'providers' => [ //... Artem328\LaravelYandexKassa\YandexKassaServiceProvider::class, ], //... ];
别名
要解析YandexKassa
类实例,您可以将以下行添加到config/app.php
文件中
<?php return [ //... 'aliases' => [ //... 'YandexKassa' => Artem328\LaravelYandexKassa\Facades\YandexKassa::class, ], //... ];
现在可以从YandexKassa
类中静态调用方法或使用辅助函数yandex_kassa()
配置
您还需要发布配置,并填写一些必要的数据,如sc_id
、shop_id
和shop_password
。要发布配置,请运行此命令
php artisan vendor:publish --provider="Artem328\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="Artem328\LaravelYandexKassa\YandexKassaServiceProvider" --tag="view"
并将默认布局放置在您的资源目录下views/vendor/yandex_kassa
。现在您可以自定义布局了。请注意,表单布局应包含Yandex Kassa正常工作所需的所有字段。
语言
如果您想自定义支付名称或表单标签,可以发布语言文件。只需运行以下命令
php artisan vendor:publish --provider="Artem328\LaravelYandexKassa\YandexKassaServiceProvider" --tag="lang"
本地化文件将放置在资源目录lang/vendor/yandex_kassa
中。如果您需要添加新的区域文件,只需创建一个包含区域名称的目录,然后从现有区域文件夹中复制文件结构,然后更改翻译值。
发布所有资源
如果您想发布配置、视图和语言,只需运行此命令
php artisan vender:publish --provider="Artem328\LaravelYandexKassa\YandexKassaServiceProvider"
显示支付表单
要在布局中显示支付表单,请添加此代码
@include('yandex_kassa::form')
当然,您可以自定义表单或创建自己的表单并将其包含在内。
回调链接
您可以在配置文件的路由部分设置回调链接(checkOrder、paymentAviso等)
支付类型
可以在配置文件的支付类型部分设置支付类型。有一个链接到包含完整支付类型列表的文档页面。
事件
Yandex Kassa调用您的应用程序回调并等待响应。您可以通过监听回调事件来自定义响应参数。例如
<?php namespace App\Listeners; use App\Order; use Artem328\LaravelYandexKassa\Events\BeforePaymentAvisoResponse; class ChangeOrderStatusWhenPaymentSuccessful { /** * @param \Artem328\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 Artem328\LaravelYandexKassa\Events\BeforeCheckOrderResponse; class CheckOrderRequisites { /** * @param \Artem328\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 = [ 'Artem328\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', ], 'Artem328\LaravelYandexKassa\Events\BeforePaymentAvisoResponse' => [ 'App\Listeners\ChangeOrderStatusWhenPaymentSuccessful', ] ]; //... }
许可证
MIT。请参阅许可证文件