Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Voyager | 11,357 | 489 | 82 | 9 days ago | 125 | November 09, 2021 | 381 | mit | PHP | |
Voyager - The Missing Laravel Admin | ||||||||||
Laravel Admin | 10,765 | 639 | 440 | 2 days ago | 108 | May 24, 2022 | 173 | mit | PHP | |
Build a full-featured administrative interface in ten minutes | ||||||||||
Filament | 6,121 | 3 hours ago | 30 | mit | PHP | |||||
Admin panel, form builder and table builder for Laravel. Built with the TALL stack. Designed for humans. | ||||||||||
Aimeos Laravel | 6,080 | 25 | 1 | a day ago | 117 | July 07, 2022 | 2 | mit | PHP | |
Laravel ecommerce package for ultra fast online shops, scalable marketplaces, complex B2B applications and #gigacommerce | ||||||||||
Coreui Free React Admin Template | 3,993 | 16 days ago | 2 | November 01, 2020 | 5 | mit | JavaScript | |||
CoreUI React is a free React admin template based on Bootstrap 5 | ||||||||||
Platform | 3,590 | 19 | 19 | a day ago | 429 | September 18, 2022 | 90 | mit | PHP | |
Orchid is a @laravel package that allows for rapid application development of back-office applications, admin/user panels, and dashboards. | ||||||||||
Dcat Admin | 3,362 | 52 | 2 days ago | 72 | June 27, 2022 | 228 | mit | PHP | ||
🔥 基于 Laravel 的后台系统构建工具 (Laravel Admin),使用很少的代码快速构建一个功能完善的高颜值后台系统,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码 | ||||||||||
Aimeos | 3,090 | a month ago | 31 | May 27, 2022 | 2 | mit | JavaScript | |||
Integrated online shop based on Laravel 9 and the Aimeos e-commerce framework for ultra-fast online shops, scalable marketplaces, complex B2B applications and #gigacommerce | ||||||||||
Twill | 3,080 | 3 days ago | 96 | September 14, 2022 | 118 | apache-2.0 | PHP | |||
Twill is an open source CMS toolkit for Laravel that helps developers rapidly create a custom admin console that is intuitive, powerful and flexible. Chat with us on Discord at https://discord.gg/cnWk7EFv8R. | ||||||||||
Crud | 2,566 | 221 | 109 | 20 hours ago | 472 | September 05, 2022 | 96 | mit | JavaScript | |
Build custom admin panels. Fast! |
Laravel admin 的微信扩展、支持多公众号、多小程序、多微信支付的后台管理,并提供小程序、微信支付的基础接口,在此基础上通过事件、继承等形式完成自定义。
本扩展使用了 EasyWeChat,微信实例使用可移步到 EasyWeChat 文档
安装依赖
composer require hanson/laravel-admin-wechat -vvv
安装
php artisan wechat:install -m
此命令将:
routes/wechat_admin
与 routes/wechat_api
database/migrations
的相关微信数据库(可自行根据需求做对应修改,可以加字段,不建议删减字段)migrate
操作(去掉 -m
可不执行)生成 jwt secret
php artisan jwt:secret
修改 config/auth.php
(用于小程序登录等接口,如果不需要可以不加)
<?php
return [
'guards' => [
// ...
'mini' => [
'driver' => 'jwt',
'provider' => 'wechat_user',
]
],
'providers' => [
// ...
'wechat_user' => [
'driver' => 'eloquent',
'model' => Hanson\LaravelAdminWechat\Models\WechatUser::class, // 你也可以自己继承此 model 后修改为自己的 model
],
]
];
对于本人来说, laravel-admin-wechat
另一个有价值的点在于自带的接口,尽管内容不多,但因为做项目比较多经常要新建用户表,写登录逻辑,但实际上代码基本都一样,这也是为什么会提供基础的接口
post
api/wechat/mini/check-token
检查token是否过期
post
api/wechat/mini/login
使用 code 登录
参数 | 备注 |
---|---|
app_id | 小程序的 app id |
code | 登录的 code |
post
api/wechat/mini/decrypt-mobile
解密手机号码
post
api/wechat/mini/decrypt-user-info
解密用户信息
参数 | 备注 |
---|---|
app_id | 小程序的 app id |
iv | 微信参数 |
encrypted_data | 微信参数 |
此扩展只提供了最基础的业务,但很多情况下企业需要更多样化的业务需求,laravel-admin-wechat
同样提供了十分灵活的自定义方案。
后台路由在 routes/wechat_admin.php
中,你可以自由修改
当你需要对进行细微调整时,可以通过 php artisan admin:controller
自行创建控制器,并修改其继承的类为原来的类,覆盖方法做调整
laravel-admin-wechat
的通用函数均在 Hanson\LaravelAdminWechat\Services
内,并提供 Facade
方式进行调用
<?php
use \Hanson\LaravelAdminWechat\Facades\ConfigService;
use \Hanson\LaravelAdminWechat\Facades\MerchantService;
use \Hanson\LaravelAdminWechat\Facades\OrderService;
// ConfigService 可获取 公众号/小程序 实例
ConfigService::getCurrent(); // 获取后台操作中的 WechatConfig 对象
ConfigService::getAdminCurrentApp(); // 获取后台操作中的微信实例
ConfigService::getInstanceByAppId('app id'); // 根据 appid 获取微信实例
// MerchantService 可获取 微信支付实例
MerchantService::getInstanceByMchId('mch id'); // 根据 mch id 获取微信支付实例
// OrderService 订单相关服务
OrderService::unify('mch id', 'JSAPI', array $data); // 统一下单并创建微信订单 data 为统一下单参数,与微信支付文档一致
OrderService::jsConfig('mch id', 'JSAPI', array $data); // 返回 js sdk 所需参数(其中包括统一下单,创建订单)
为了能够实现基础业务外,也能更好的适应各种自定义需求,本扩展使用了事件去实现自定义
在你的 app/Providers/ServiceProvider.php
中
<?php
protected $listen = [
\Hanson\LaravelAdminWechat\Events\DecryptUserInfo::class => [
'App\Listeners\AfterSaveUserInfo',
],
\Hanson\LaravelAdminWechat\Events\DecryptMobile::class => [
'App\Listeners\SaveMobile',
],
\Hanson\LaravelAdminWechat\Events\OrderPaid::class => [
'App\Listeners\ChangeOrderStatus',
]
];
<?php
use \Hanson\LaravelAdminWechat\Events\DecryptMobile;
class SaveMobile
{
public function handle(DecryptMobile $event)
{
$event->wechatUser->user()->update([
'phone' => $event->decryptedData['purePhoneNumber'],
'country_code' => $event->decryptedData['countryCode'],
]);
}
}
<?php
use \Hanson\LaravelAdminWechat\Events\DecryptUserInfo;
class AfterSaveUserInfo
{
public function handle(DecryptUserInfo $event)
{
// 你的业务
$event->decryptedData['nickname'];
$event->wechatUser;
}
}
<?php
use \Hanson\LaravelAdminWechat\Events\OrderPaid;
class AfterSaveUserInfo
{
public function handle(OrderPaid $event)
{
// 你的业务
$wechatOrder = $event->order;
$order = $wechatOrder->order()->update(['status' => 'paid']);
$openId = $wechatOrder->openid;
}
}
laravel-admin-wechat
提供了微信订单表、创建订单以及生成 js 参数等方法,但并没有相关业务参数 地址
、商品
等,建议自身生成 orders
表并关联 wechat_orders
// 支付接口示例
<?php
class OrderController extends Controller
{
public function pay()
{
// some validate
$data = [
'body' => '商品标题',
'total_fee' => 100,
'openid' => auth('mini')->user()->openid,
// 'out_trade_no' => 'xxx', 选填,如不填写时会自动创建一个订单号
];
/**
* $result['config'] jssdk 所需参数
* $result['order'] WechatOrder 的 model 对象
* $result['unify'] unify 接口返回的结果
*/
$result = \Hanson\LaravelAdminWechat\Facades\OrderService::jsConfig('mch id', 'JSAPI', $data);
App\Models\Order::create([
'wechat_order_id' => $result['order']->id,
'status' => 'not paid',
'goods_id' => '...',
'address_id' => '...',
]);
return $result;
}
}
不但在此项目,在其他项目也建议你对 app/Exceptions/Handler
进行修改,因为对于接口的请求,laravel 默认在错误的情况会返回页面,这不是任何一个开发者所期望的情况
// app/Exceptions/Handler.php
<?php
public function render($request, Exception $exception)
{
if ($request->acceptsJson()) {
if ($exception instanceof AuthenticationException) {
return Response::json(['err_code' => 401, 'err_msg' => 'Unauthenticated'], 401);
}
return fail($exception->getMessage());
}
return parent::render($request, $exception);
}
本扩展封装了函数 fail
和 ok
两个接口返回的基础结构,可以使用这两个函数去定义你所有的接口返回
如需找我定制,可加我微信 524291355