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

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

Gitee仓库
注册体验内网穿透,送体验流量

使用到的技术如下

  • 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天前 自动加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 4

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

3天前 评论

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

3天前 评论

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

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

话不多说,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天前 评论
七月 11小时前

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