内网穿透神器 Ngrok 的使用

Ngrok 是一个反向代理软件,启动后会在公共服务器和本地客户端之间建立一个通道,并由公共服务器分配一个唯一的域名给这个通道。在 Homestead 中运行 Ngrok 之后,通过公共服务器分配的域名就可以在公网访问到 Homestead 中的站点,从而让支付宝和微信支付的服务器直接将回调数据发送到对应的回调接口。

注册 Ngrok 账号

Ngrok 官方提供了免费的公共服务器,但需要注册才能使用,访问这个 链接 注册。

内网穿透神器 Ngrok 的使用

Ps: 可以点击注册页面下方的 Github 注册按钮,可以直接注册成功。

Homestead 配置 Ngrok 客户端

Homestead 中内置了 Ngrok 客户端,但需要配置 Token 之后才能正常使用。

Ngrok 注册完成之后会进入这个页面:

内网穿透神器 Ngrok 的使用

复制这个框里的命令,但不需要开头的 ./,然后在 Homestead 中粘贴执行:

ngrok authtoken {你的 Token}

启动 Ngrok 客户端

接下来我们需要在 Homestead 中启动 Ngrok 客户端以建立本地与公共服务器的链接:

ngrok http -host-header=shop.test -region us 80

http 代表我们要映射的是 HTTP 协议;-host-header= 代表本地站点的域名,如果你用的不是 shop.test 请更换成对应的域名;-region us 代表我们要使用的是美国的公共节点;80 代表映射到 Homestead 的 80 端口。

运行之后应该可以看到如下界面:

内网穿透神器 Ngrok 的使用

Forwarding 代表 Ngrok 分配给你的域名,对于免费账号来说,每次启动 Ngrok ,都会重新分配一个随机的域名,无法固定。

Web Interface 是 Ngrok 内置的一个管理面板,它可以展示所有通过 Ngrok 进来的请求信息以及返回的数据,现在我们可以访问一下 http://192.168.10.10:4040 看看。

在 Laravel Shop 中使用

接下来我们来调整一下我们的代码。

首先我们把 Ngrok 分配的随机域名放到 .env 文件中:

.env

.
.
.
NGROK_URL=http://{分配给你的域名}.ngrok.io

然后在配置文件中读取:

config/app.php

.
.
.
    'ngrok_url' => env('NGROK_URL'),
];

为了方便调用,我们在 helpers.php 中新建一个函数:

bootstrap/helpers.php

.
.
.
function ngrok_url($routeName, $parameters = [])
{
    // 开发环境,并且配置了 NGROK_URL
    if(app()->environment('local') && $url = config('app.ngrok_url')) {
        // route() 函数第三个参数代表是否绝对路径
        return $url.route($routeName, $parameters, false);
    }

    return route($routeName, $parameters);
}

现在可以直接在需要的地方调用即可,如:ngrok_url(‘products.index’)。’products.index’ 为路由名称。

本文只是为了学习和方便查找而做的记录。

原文地址:4.7. 测试支付《L06 Laravel 教程 - 电商进阶 ( Laravel 5.8 ) 》

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1

因为ngrok在国外,所以使用的时候经常无法访问,我搜索了解到国内也有类似实现内网穿透到工具和软件,我推荐大家可以看一下 飞鸽内网穿透 fgnwct.com 主要是他们提供的免费的服务器可以直接进行使用。大家可以试试。

11个月前 评论

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