bigenergy / laravel-freekassa-ru
为Laravel 9.0+提供freekassa.ru支付
1.1.1
2022-11-28 17:46 UTC
Requires
- php: >=8.1
- guzzlehttp/guzzle: ~6.2
- laravel/framework: 9.*
README
通过此Laravel框架包(Laravel)接受FreeKassa.ru(freekassa.ru)的支付。
- 只需添加两个回调即可接收支付
Laravel >= 9.*, PHP >= 8.1
安装
使用Composer安装此包。
composer require bigenergy/laravel-freekassa-ru dev-main
如果您不使用自动发现,请将ServiceProvider添加到config/app.php中的providers数组中
Weishaypt\FreeKassa\FreeKassaServiceProvider::class,
将FreeKassa外观添加到您的外观数组中
'FreeKassa' => Weishaypt\FreeKassa\Facades\FreeKassa::class,
使用发布命令将包配置复制到本地配置
php artisan vendor:publish --provider="Weishaypt\FreeKassa\FreeKassaServiceProvider"
配置
一旦发布配置文件,请编辑config/freekassa.php中的配置文件。
- 在freekassa.ru上创建一个账户
- 添加您的项目,复制code>project_id、code>secret_key和code>secret_key_second参数,并将其粘贴到config/freekassa.php中
- 配置发布后,编辑code>config/freekassa.php
- 为code>searchOrder和code>paidOrder设置回调静态函数
- 为您的控制器创建路由,并调用code>FreeKassa::handle方法
用法
- 生成支付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, $desc, $payment_methood, $rows); $redirect = FreeKassa::redirectToPayUrl($amount, $order_id, $desc, $payment_methood, $rows);
$desc和$payment_methood可以是null。
- 处理来自FreeKassa的请求
FreeKassa::handle(Request $request)
重要
您必须在config/freekassa.php中定义回调以搜索订单和保存已支付订单。
'searchOrder' => null // FreeKassaController@searchOrder(Request $request)
'paidOrder' => null // FreeKassaController@paidOrder(Request $request, $order)
示例
处理方案
- 请求来自code>freekassa.ru
GET/POSThttp://yourproject.com/freekassa/result(带有参数)。 - 函数
FreeKassaController@handlePayment执行验证过程(自动验证请求参数)。 - 将调用code>searchOrder方法(请参阅code>config/freekassa.php
searchOrder),以通过唯一ID搜索订单。 - 如果当前订单状态在您的数据库中不是code>paid,则将调用code>paidOrder方法(请参阅code>config/freekassa.php
paidOrder)。
将路由添加到code>routes/web.php
Route::get('/freekassa/result', 'FreeKassaController@handlePayment');
注意:不要忘记在freekassa.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以获取详细信息。
安全
如果您发现任何安全相关的问题,请通过ya@sanek.dev发送电子邮件,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。