首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Laravel中实现Gocardless

在Laravel中实现Gocardless
EN

Stack Overflow用户
提问于 2017-12-08 19:14:32
回答 2查看 559关注 0票数 2

我正试着在laravel中实现一个webhook。

我已经创建了访问令牌,也创建了webhook端点。

我的webhook端点是这样的,https://www.example.com/gocardless.php

我的路线是,

代码语言:javascript
复制
Route::get('/gocardless.php', 
'\App\Http\Controllers\gocardlessController@remote')->name('remote');

控制器代码,例如,

代码语言:javascript
复制
class gocardlessController extends Controller
 {


  public function remote(Request $request)
  {

 $token ="token";

 $raw_payload = file_get_contents('php://input');

 $headers = getallheaders();


 $provided_signature = $headers["Webhook-Signature"];
 $calculated_signature = hash_hmac("sha256",$raw_payload,$token);
 if ($provided_signature == $calculated_signature) {

  $payload = json_decode($raw_payload, true);
   }
   }
   } 

但当我在gocardless帐户中点击发送测试webhook时,他们得到的响应是"405找不到方法“。

我该如何解决这个问题呢?

EN

回答 2

Stack Overflow用户

发布于 2017-12-08 21:25:54

您看到的HTTP 405 error表明您的Laravel应用程序不知道如何处理传入请求的method

GoCardless webhooks use the POST method向您发送带有JSON的请求,但是您所编写的路由是用于处理GET请求(Route::get)的。要解决此问题,您应该将POST请求的define a route发送到将接收webhooks的端点。

票数 3
EN

Stack Overflow用户

发布于 2017-12-08 19:30:21

一些注释和修复

备注

为什么在您的路由中包含“丑陋的”.php扩展,这是没有必要的

修复

将您的路由(在web.php中)更改为

代码语言:javascript
复制
Route::get('gocardless', 'gocardlessController@remote');

备注

我还看到您的控制器名称以小写开头,这不是常见的做法

修复

不要忘记在顶部的控制器中添加这些行

代码语言:javascript
复制
namespace App\Http\Controllers; // declare right namespace

use Illuminate\Http\Request; // Hint which Request class to use below

对于主体:例如,您确实需要自己编写并返回json形式的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47713243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档