Workerman + laravel8 + vue-element-admin 撸了一个内网穿透应用

借着learnku的文档,把之前开源的 EZANT 重构了一遍。

Gitee仓库
注册体验内网穿透,送体验流量 100Mbps 不限速
EZNAT内网穿透QQ交流群 946192373

使用到的技术如下

  • redis (内存缓存)
  • laravel-echo-server (SocketIO 服务端)
  • suprevisor (进程监控)
  • laravel 8 (框架)
  • laravel Event 事件系统
  • laravel Notify 通知系统
  • laravel Broadcast 广播
  • laravel Email 邮件
  • Sanctum 官方API认证扩展
  • predis PHP写的redis扩展
  • knuckleswtf/scribe 接口文档生成扩展
  • barryvdh/laravel-ide-helper laravel代码提示扩展
  • 微信免签支付回调

    话不多说,直接上图

    注:线上运营版本和开源版本核心相同。只不过是增加了一些业务逻辑,如流量充值。

    主页
    登录页
    注册页

    客户端使用手册

    充值记录
    客户端端口映射网站映射用户管理
本作品采用《CC 协议》,转载必须注明作者和本文链接
九九一十八,一步一个脚印
本帖由系统于 4个月前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 12

超过 30s 支付不退,这谁敢支付 :joy:

4个月前 评论
shrewd_lion 2个月前

@生活无限好 感谢同僚的建议,因为采用了微信免签支付,为了保证每个人充值都能正常回调。所以同一金额同一时间只能有一个人充值。才不会导致不知道是谁充值而产生的回调。系统倒计时 30s,实际上我是用了一分钟的时间限制,来最大限度的保证每个人充值都能正确到账。其实如果真的充值失败了,在群里面反映,是会退款或者手动加流量上去的。 :grin: :grin: :grin:**文案已经修改,再次感谢建议

4个月前 评论

大佬,微信免签支付回调,是自己搞的,还是用的三方的那、好奇这个怎么弄。

4个月前 评论
九九一十八 (楼主) 4个月前
九九一十八 (楼主) 4个月前
jamesZhao 4个月前
iwzh 4个月前
九九一十八 (楼主) 4个月前
iwzh 4个月前
Yzzzzz 3个月前

话不多说,show me code

这是我充值流量的 pay callback 代码

Route::any("/wechat/pay/callback", function (Request $request, PurchaseHistory $purchaseHistory){
    $desp = request('desp');
    $key = "xxxxxxx自己定义一个keyxxxxxx,验证请求合法性,千万不要把这个key让别人知道呀";
    if (request('key') !=  $key) {
        die("非法请求");
    }
    preg_match("/(款).*(?=元)/", $desp, $match);
    if (empty($match[0])) {
        die('非法请求');
    } else {
        $money = str_replace("款", '', $match[0]);
    }
    DB::transaction(function () use ($money, $purchaseHistory){
        $purchase = $purchaseHistory
            ->whereMoney($money)->wherePayStatus(0)->latest()->first();
        if (!empty($purchase)) {
            $purchase->pay_status = 1;
            $purchase->save();
            $flow = $purchaseHistory->getFlowByMoney($money);
            $rechargeUser = User::findOrFail($purchase->user_id);
            $rechargeUser->extra->increment('residual_flow', $flow);
            \App\Events\PayCallbackEvent::dispatch($rechargeUser, $money, $flow / 1024 / 1024);
        }
    });
});
4个月前 评论
七月 4个月前
adays

哇哦。大手笔。学习

4个月前 评论

切换语言时,“注册”两字不变

4个月前 评论
九九一十八 (楼主) 4个月前
mengdodo

银手镯了解下

4个月前 评论

准备瞻仰一下 可是git和文字内容不太对应呀~~ :see_no_evil:

4个月前 评论
九九一十八 (楼主) 4个月前

你这注册也太麻烦了注册10分钟注册不进去

3个月前 评论
九九一十八 (楼主) 3个月前
laogou (作者) 3个月前
九九一十八 (楼主) 3个月前

不清楚哦反正我注册不成功我对这个都没兴趣了

3个月前 评论

mark一下,码云的仓库不是laravel8重构的吗?

3个月前 评论
九九一十八 (楼主) 2个月前

求登录的背景图~ :stuck_out_tongue_winking_eye:

2个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!