我是第一次使用Webhooks进行测试。我想建立一个Webhook(使用GoCardless.com,但现在这不重要)。
我在沙盒中,我在那里设置了一个Webhook:
x
然后我尝试使用此代码向我的{
"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:
webhook.php
您可以在此处查看结果:
所以,我假设我会显示 <?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']
)的吗?
我不知道如何设置它。
答案 0 :(得分:2)
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。这也告诉你如何使用密钥来确保webhook真正来自GoCardless,并且没有被欺骗。
你已经在这篇文章中包含了你的webhook秘密,所以你现在想要重置它,否则有人可能会发送伪装成GoCardless的虚假webhook。您可以在sandbox GoCardless dashboard中点击左侧的“开发者”,然后点击您的终端,然后点击“修改”。
答案 1 :(得分:0)
我经常搜索后找到一个例子。也许这有助于其他人。请注意,大多数代码似乎都已被弃用,但是当您研究了最新代码GoCardless API时,您就会知道:
https://github.com/gocardless/gocardless-legacy-php/blob/master/examples/webhooks.php