首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Webhook获取数据?(GoCardless)

如何通过Webhook获取数据?(GoCardless)
EN

Stack Overflow用户
提问于 2017-03-02 03:33:29
回答 2查看 705关注 0票数 0

我是第一次使用Webhooks进行测试。我想设置一个Webhook (使用GoCardless.com,但现在这不重要)。

我在沙箱中,并且在那里设置了一个Webhook:

代码语言:javascript
复制
{
  "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,其中包含以下代码:

代码语言:javascript
复制
 <?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)的吗?

我不知道该怎么设置。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-05 20:40:46

webhook数据在请求体中作为JSON发送到您的服务器。在PHP中,你需要用file_get_contents('php://input')来访问它。

获得正文后,可以将其解码为数组,然后随心所欲地处理数据:

代码语言:javascript
复制
$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中点击左侧的“开发人员”,然后点击你的端点,然后点击“编辑”。

票数 2
EN

Stack Overflow用户

发布于 2017-03-02 04:27:43

我只是在搜索了很多之后才发现了一个例子。也许这对其他人有帮助。请注意,大多数代码似乎都被弃用了,但是当您研究了最新的GoCardless API时,您就会知道

https://github.com/gocardless/gocardless-legacy-php/blob/master/examples/webhooks.php

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

https://stackoverflow.com/questions/42540431

复制
相关文章

相似问题

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