wistis/laravel-yandex-kassa1

Yandex Kassa 与 Laravel 框架的集成

dev-master / 1.0.x-dev 2021-04-15 05:28 UTC

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_idshop_idshop_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。请参阅许可证文件