提问人:Rommel Verterra Traya 提问时间:9/19/2023 更新时间:9/19/2023 访问量:134
使用 Zoho Sign 的 GET 方法在 Laravel 中创建 Webhook 接收器
Creating a Webhook Receiver in Laravel using GET Method for Zoho Sign
问:
我正在努力将 Zoho Sign 集成到我的 Laravel 应用程序中,我需要设置一个 webhook 接收器来从 Zoho Sign 获取完成的文档。但是,Zoho Sign 的 webhook 系统仅接受 GET 请求。
我之前在 Laravel 中成功实现了 webhook 接收器,但它们通常使用 POST 请求。我不确定如何处理 Laravel 中 webhook 端点的 GET 请求。
有人能否提供有关如何在 Laravel 中创建侦听来自 Zoho Sign 的 GET 请求的 webhook 接收器的指导或代码示例?具体来说,我需要捕获 Zoho Sign 发送的 webhook 数据,并在我的 Laravel 应用程序中对其进行处理。
任何帮助或见解将不胜感激!
这是我到目前为止尝试过的:
- 我在web_api.php中创建了一条新路线,如下所示:
Route::get('receive-waiver', [WaiverController::class, 'ReceiveWaiver']);
- 我创建了一个具有 ReceiveWaiver 函数的“WaiverController”。
<?php
namespace App\Http\Controllers\Zoho;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
class WaiverController extends Controller
{
public function ReceiveWaiver(Request $request)
{
\Log::info('Webhook success!');
\Log::info('Webhook Data: ' . json_encode($request['requests']));
\Log::info('Webhook Document: ' . json_encode($request['requests']['document_ids']));
try {
if (!empty($request['requests'])) {
$waiverData = json_encode($request['requests']);
$waiverDocument = json_encode($request['requests']['document_ids']);
\Log::info('Success Webhook Data: ' . $waiverData);
\Log::info('Success Webhook Document: ' . $waiverDocument);
}
return response()->json(['message' => 'Webhook received'], true);
} catch (\Exception $e) {
$errorMessage = $e->getMessage();
\Log::info('Error Webhooks: ' . $errorMessage);
return response()->json(['message' => $e->getMessage()]);
}
}
}
在 Zoho Sign 中,这就是它的样子。
答:
0赞
Shri Hari L
9/19/2023
#1
Zoho Sign 的 webhook 系统仅接受 GET 请求。
否,Zoho Sign 会向您在设置页面中提供的 Webhook URL 发出 POST 请求。请求负载(请求正文)将包含与发生的事件相关的数据。
因此,您可以像以前一样继续开发。您可以使用应用程序中的 POST 路由来执行此操作。
Route::post('receive-waiver', [WaiverController::class, 'ReceiveWaiver']);
public function ReceiveWaiver(Request $request) {
\Log::info('Webhook success!');
$requestContent = $request->getContent();
\Log::info('Webhook Data: ' . $requestContent);
return response()->status(200);
}
您可以将以下这些链接作为参考:
https://help.zoho.com/portal/en/community/topic/webhooks-for-zoho-sign
评论
0赞
OMi Shah
9/19/2023
另外,不要忘记将路由添加到 csrf 排除列表。
0赞
Rommel Verterra Traya
9/19/2023
在 Zoho Sign Webhook 中无法将路由路由转换为 POST。结果始终是:失败。
0赞
Rommel Verterra Traya
9/19/2023
另外,我已经将我的路由“receive-waiver”排除在 csrf 排除列表中
0赞
Shri Hari L
9/19/2023
更新了答案。您在 Laravel 日志上遇到任何错误吗?到目前为止,只需有一个空响应,然后在 Zoho Sign 上进行测试。当结果是 SUCCESS 时,我们可以继续前进。
0赞
Shri Hari L
9/19/2023
将路由保留为 POST 本身。
评论