好用的内网穿透神器 ngrok
2018年12月25日ngrok是在laravelhome
里自带的,所以这里不讲述安装,如果不会看官网。
1.登陆你的账号获取token
2.输入命令
1 |
ngrok authtoken {你的 Token} |
3.启动ngrok
1 |
ngrok http -host-header=shop.test -region us 80 |
Web Interface 是一个web管理界面
Forwarding 这个是穿透的域名
这个时候你就可以通过外网访问你的域名了。
4. 在 Laravel 中使用
首先我们把 Ngrok 分配的随机域名放到 .env
文件中:
.env
1 |
NGROK_URL=http://{分配给你的域名}.ngrok.io |
config/app.php
1 |
'ngrok_url' => env('NGROK_URL'), |
bootstrap/helpers.php
1 2 3 4 5 6 7 8 9 10 |
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); } |
现在我们在 tinker 中测试一下这个函数:
1 |
>>> ngrok_url('products.index') |
调整代码
app/Providers/AppServiceProvider.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public function register() { $this->app->singleton('alipay', function () { $config = config('pay.alipay'); $config['notify_url'] = ngrok_url('payment.alipay.notify'); . . . }); $this->app->singleton('wechat_pay', function () { $config = config('pay.wechat'); $config['notify_url'] = ngrok_url('payment.wechat.notify'); . . . }); } |
app/Admin/Controllers/OrdersController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public function _refundOrder(Order $order) { switch ($order->payment_method) { case 'wechat': $refundNo = Order::getAvailableRefundNo(); app('wechat_pay')->refund([ . . . 'notify_url' => ngrok_url('payment.wechat.refund_notify'), ]); . . . |
购买的过程中可以是用本地域名,但是支付宝到分配的域名哪里有一定成功几率的,如果一次不成功多试几次就可以。