我是第一次使用Webhooks进行测试。我想设置一个Webhook (使用GoCardless.com,但现在这不重要)。
我在沙箱中,并且在那里设置了一个Webhook:
{
"id": "WE000012RYRQ9E",
"created_at": "2017-03-01T18:03:34.252Z",
"enabled": true,
"secret": "qpILcgnnAWznkuJcajXYvMNsQcrkKwDzL6KHMq5z",
"name": "TestHook",
"url": "https://example.com/webhook.php",
"client_cert_details": null,
"links": {}
}然后,我尝试向我的webhook.php发送一个Webhook,其中包含以下代码:
<?php
header('Content-Type: application/json');
$result = $_REQUEST['events'];
$obj = json_decode($result, true);
print_r($_GET);
print_r($_POST);
print_r($_REQUEST);
print_r($result);
print_r($obj);你可以在这里看到结果:

因此,我假设我将使用$_REQUEST['events']来获取数据,比如displayed,但是在底部可以看到,我只得到了空数组。
这是关于密钥(qpILcgnnAWznkuJcajXYvMNsQcrkKwDzL6KHMq5z)的吗?
我不知道该怎么设置。
发布于 2017-04-05 20:40:46
webhook数据在请求体中作为JSON发送到您的服务器。在PHP中,你需要用file_get_contents('php://input')来访问它。
获得正文后,可以将其解码为数组,然后随心所欲地处理数据:
$raw_payload = file_get_contents('php://input');
$payload = json_decode($raw_payload, true);
// Each webhook may contain multiple events to handle, batched together
foreach ($payload["events"] as $event) {
// Do something with the event here
print("Processing event " . $event["id"] . "\n");
}有关处理webhooks的完整指南,请参阅GoCardless的getting started guide。这也向你展示了如何使用密钥来确保网络钩子真的来自GoCardless,而不是被欺骗。
你已经在这篇文章中包含了你的网络挂钩秘密,所以你现在需要重置它,否则有人可能会伪装成GoCardless发送给你假的网络挂钩。你可以在你的sandbox GoCardless dashboard中点击左侧的“开发人员”,然后点击你的端点,然后点击“编辑”。
发布于 2017-03-02 04:27:43
我只是在搜索了很多之后才发现了一个例子。也许这对其他人有帮助。请注意,大多数代码似乎都被弃用了,但是当您研究了最新的GoCardless API时,您就会知道
https://github.com/gocardless/gocardless-legacy-php/blob/master/examples/webhooks.php
https://stackoverflow.com/questions/42540431
复制相似问题