maksa988/laravel-freekassa

Laravel的FreeKassa支付插件

v4.0.0 2020-09-22 15:41 UTC

README

Latest Stable Version Build Status StyleCI CodeFactor Total Downloads License

通过此Laravel框架包(Laravel)使用FreeKassa(free-kassa.ru)接受支付。

  • 只需添加两个回调即可接收支付

Laravel >= 8.*, PHP >= 7.3

要使用Laravel 7.*的包,请使用3.x分支

要使用Laravel 6.*的包,请使用2.x分支

要使用Laravel 5.*的包,请使用1.x分支

安装

使用composer安装此包。

composer require maksa988/laravel-freekassa

如果您不使用自动发现,请将ServiceProvider添加到config/app.php中的providers数组

Maksa988\FreeKassa\FreeKassaServiceProvider::class,

FreeKassa外观添加到您的外观数组

'FreeKassa' => Maksa988\FreeKassa\Facades\FreeKassa::class,

使用发布命令将包配置复制到本地配置

php artisan vendor:publish --provider="Maksa988\FreeKassa\FreeKassaServiceProvider"

配置

发布配置文件后,请编辑config/freekassa.php中的配置文件。

  • free-kassa.ru上创建一个账户
  • 添加您的项目,复制project_idsecret_keysecret_key_second参数,并将它们粘贴到config/freekassa.php
  • 配置发布后,编辑config/freekassa.php
  • searchOrderpaidOrder设置回调静态函数
  • 为您的控制器创建路由,并调用FreeKassa::handle方法

使用方法

  1. 生成支付URL或获取重定向
$amount = 100; // Payment`s amount

$url = FreeKassa::getPayUrl($amount, $order_id);

$redirect = FreeKassa::redirectToPayUrl($amount, $order_id);

您可以为您的支付添加自定义字段

$rows = [
    'time' => Carbon::now(),
    'info' => 'Local payment'
];

$url = FreeKassa::getPayUrl($amount, $order_id, $email, $phone, $rows);

$redirect = FreeKassa::redirectToPayUrl($amount, $order_id, $email, $phone, $rows);

$email$phone可以是null。

  1. 处理来自FreeKassa的请求
FreeKassa::handle(Request $request)

重要

您必须在config/freekassa.php中定义回调以搜索订单和保存已付款订单。

'searchOrder' => null  // FreeKassaController@searchOrder(Request $request)
'paidOrder' => null  // FreeKassaController@paidOrder(Request $request, $order)

示例

处理方案

  1. 请求来自free-kassa.ru,通过GET / POST访问http://yourproject.com/freekassa/result(带有参数)。
  2. 函数FreeKassaController@handlePayment运行验证过程(自动验证请求参数)。
  3. 将调用searchOrder方法(参见config/freekassa.php中的searchOrder),以通过唯一ID搜索订单。
  4. 如果当前订单状态在您的数据库中不是已支付,则将调用paidOrder方法(参见config/freekassa.php中的paidOrder)。

将路由添加到routes/web.php

 Route::get('/freekassa/result', 'FreeKassaController@handlePayment');

注意:请记住在free-kassa.ru上保存您的完整路由URL(例如,http://example.com/freekassa/result)以供您的项目使用。

创建以下控制器:/app/Http/Controllers/FreeKassaController.php

class FreeKassaController extends Controller
{
    /**
     * Search the order in your database and return that order
     * to paidOrder, if status of your order is 'paid'
     *
     * @param Request $request
     * @param $order_id
     * @return bool|mixed
     */
    public function searchOrder(Request $request, $order_id)
    {
        $order = Order::where('id', $order_id)->first();

        if($order) {
            $order['_orderSum'] = $order->sum;

            // If your field can be `paid` you can set them like string
            $order['_orderStatus'] = $order['status'];

            // Else your field doesn` has value like 'paid', you can change this value
            $order['_orderStatus'] = ('1' == $order['status']) ? 'paid' : false;

            return $order;
        }

        return false;
    }

    /**
     * When paymnet is check, you can paid your order
     *
     * @param Request $request
     * @param $order
     * @return bool
     */
    public function paidOrder(Request $request, $order)
    {
        $order->status = 'paid';
        $order->save();

        //

        return true;
    }

    /**
     * Start handle process from route
     *
     * @param Request $request
     * @return mixed
     */
    public function handlePayment(Request $request)
    {
        return FreeKassa::handle($request);
    }
}

更新日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING

安全

如果您发现任何与安全相关的问题,请通过电子邮件发送给我,而不是使用问题跟踪器:maksa988ua@gmail.com

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件