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 协议》,转载必须注明作者和本文链接
九九一十八,一步一个脚印
本帖由系统于 1个月前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 11

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

1个月前 评论

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

1个月前 评论

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

1个月前 评论
九九一十八 (楼主) 1个月前
九九一十八 (楼主) 1个月前
jamesZhao 1个月前
iwzh 1个月前
九九一十八 (楼主) 1个月前
iwzh 1个月前
Yzzzzz 2周前

话不多说,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);
        }
    });
});
1个月前 评论
七月 1个月前
adays

哇哦。大手笔。学习

1个月前 评论

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

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

银手镯了解下

1个月前 评论

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

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

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

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

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

3周前 评论

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

2周前 评论
九九一十八 (楼主) 3天前

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