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 协议》,转载必须注明作者和本文链接
九九一十八,一步一个脚印
本帖由系统于 3年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 12

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

3年前 评论
shrewd_lion 3年前

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

3年前 评论
QIN秦同学

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

3年前 评论
guoliang1994 (楼主) 3年前
guoliang1994 (楼主) 3年前
jamesZhao 3年前
iwzh 3年前
guoliang1994 (楼主) 3年前
iwzh 3年前
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);
        }
    });
});
3年前 评论
QIN秦同学 3年前
adays

哇哦。大手笔。学习

3年前 评论

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

3年前 评论
guoliang1994 (楼主) 3年前
mengdodo

银手镯了解下

3年前 评论

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

3年前 评论
guoliang1994 (楼主) 3年前

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

3年前 评论
guoliang1994 (楼主) 3年前
laogou (作者) 3年前
guoliang1994 (楼主) 3年前

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

3年前 评论

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

3年前 评论
guoliang1994 (楼主) 3年前

求登录的背景图~ :stuck_out_tongue_winking_eye:

3年前 评论

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