通过 webhook 将数据从 Woocommerce 发送到 Laravel
Send data from Woocommerce to Laravel via webhook
我正在使用 Woocommerce webhooks 来监听每次订单 created/updated/deleted。
我在 Woocommerce 中设置了 webhook,如下所示
在我的 Laravel 路由文件中,我设置了如下路由:
use Illuminate\Http\Request;
// API routes...
Route::post('api/v1/orders/create', function (Request $request) {
Log::debug($request->all());
return $request->all();
});
然而,当我在 POSTMAN 中查看日志和 return 数据时,我得到的只是一个空数组。
除 'GET' 之外的任何 HTTP 方法都会抛出 MethodNotAllowedException
我不确定 Laravel 除了请求 $request 之外还有什么其他方法可以使用数据。
根据我对 Laravel 中路由的理解,您传递给函数的输入实际上是您路由的变量。
因此,如果您的 API 中有一条路线:
api/v1/orders/{id}/create
然后在路由函数中,您将传入 id 作为方法参数。所以这是正确的:
Route::post('api/v1/orders/{id}/create', function ($id) {
Log::debug($id);
return $id;
});
它正在查找您的路由定义中的请求。
而是创建一个控制器。然后在你的 routes.php
中使用这个:
Route::post('api/v1/orders/create', 'OrdersController@create')
这告诉您的路由将所有对 api/v1/orders/create
的 HTTP POST 调用重定向到该控制器中的 OrdersController.php
和 create()
方法。
在您的控制器中,您将能够使用 $request
变量作为输入参数,它应该可以工作。
所以在 OrdersController.php
:
class OrdersController extends Controller {
public function create(Request $request) {
Log::debug($request->all());
return $request->all();
}
}
祝你好运!
这对我有用。我在 api.php 的路线如下。
Route::post('/woocommerce/webhook/', 'Api\WoocommerceController@test');
我的控制器动作如下。
public function test()
{
$payload = @file_get_contents('php://input');
$payload = json_decode( $payload, true);
\Log::info(json_encode( $payload));
return response()->json([ 'data' => $payload, 'status' => \Symfony\Component\HttpFoundation\Response::HTTP_OK]);
}
我正在使用 Woocommerce webhooks 来监听每次订单 created/updated/deleted。
我在 Woocommerce 中设置了 webhook,如下所示
在我的 Laravel 路由文件中,我设置了如下路由:
use Illuminate\Http\Request;
// API routes...
Route::post('api/v1/orders/create', function (Request $request) {
Log::debug($request->all());
return $request->all();
});
然而,当我在 POSTMAN 中查看日志和 return 数据时,我得到的只是一个空数组。
除 'GET' 之外的任何 HTTP 方法都会抛出 MethodNotAllowedException
我不确定 Laravel 除了请求 $request 之外还有什么其他方法可以使用数据。
根据我对 Laravel 中路由的理解,您传递给函数的输入实际上是您路由的变量。
因此,如果您的 API 中有一条路线:
api/v1/orders/{id}/create
然后在路由函数中,您将传入 id 作为方法参数。所以这是正确的:
Route::post('api/v1/orders/{id}/create', function ($id) {
Log::debug($id);
return $id;
});
它正在查找您的路由定义中的请求。
而是创建一个控制器。然后在你的 routes.php
中使用这个:
Route::post('api/v1/orders/create', 'OrdersController@create')
这告诉您的路由将所有对 api/v1/orders/create
的 HTTP POST 调用重定向到该控制器中的 OrdersController.php
和 create()
方法。
在您的控制器中,您将能够使用 $request
变量作为输入参数,它应该可以工作。
所以在 OrdersController.php
:
class OrdersController extends Controller {
public function create(Request $request) {
Log::debug($request->all());
return $request->all();
}
}
祝你好运!
这对我有用。我在 api.php 的路线如下。
Route::post('/woocommerce/webhook/', 'Api\WoocommerceController@test');
我的控制器动作如下。
public function test()
{
$payload = @file_get_contents('php://input');
$payload = json_decode( $payload, true);
\Log::info(json_encode( $payload));
return response()->json([ 'data' => $payload, 'status' => \Symfony\Component\HttpFoundation\Response::HTTP_OK]);
}