通过webhook从Woocommerce发送数据到Laravel
我使用Woocommerce webhooks来侦听每次订单创建/更新/删除。通过webhook从Woocommerce发送数据到Laravel
我设置网络挂接在Woocommerce如下
在我Laravel routes文件我已经设置了路线如下:
use Illuminate\Http\Request;
// API routes...
Route::post('api/v1/orders/create', function (Request $request) {
Log::debug($request->all());
return $request->all();
});
然而,当我查看日志以及POSTMAN中的返回数据,我得到的只是一个空数组。
不是'GET以外的任何HTTP方法抛出MethodNotAllowedException
我不知道在Laravel任何其他方式消耗比请求$要求的其他数据。
根据我对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', '[email protected]')
这告诉你的路由重定向所有的HTTP POST调用api/v1/orders/create
到OrdersController.php
和控制器内的create()
方法。
在你的控制器中,你将能够使用$request
变量作为输入参数,它应该工作。
所以在OrdersController.php
:
class OrdersController extends Controller {
public function create(Request $request) {
Log::debug($request->all());
return $request->all();
}
}
祝您好运!
**编辑**没关系。是的,在控制器中使用你的功能将如上所述。 –
你尝试过'php artisan dump-autoload'吗? –
路径文件中没有其他路径命名'api/v1/orders/create'?同时检查Woocommerce是否不在传递URL添加尾随'/'。查看您的Laravel访问日志。如果'/ create'后面有任何东西,那么它将尝试GET而不是POST。 –
@giollianosulit no。该路线本身工作正常。如果我做一个随机日志条目,它就可以工作。它只是$ request-> all()返回一个空数组。 –