在 webhook 请求 PHP 上接收空字符串

Posted

技术标签:

【中文标题】在 webhook 请求 PHP 上接收空字符串【英文标题】:Receiving empty string on webhook request PHP 【发布时间】:2022-01-15 10:31:45 【问题描述】:

我正在尝试从 webhook 中提取客户信息,但是当我尝试打印时收到空字符串。这是我的端点 URL:

这是我的 php 代码:

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$data = file_get_contents('php://input');
$acion=json_decode($data,true);

var_dump($acion);
exit();
?>

我的网页上打印了 NULL。非常感谢任何帮助。

【问题讨论】:

你如何调用/测试端点? 我认为这一行是为此服务的:$data = file_get_contents('php://input'); ? 该行仅表示您的脚本需要一个 JSON 编码的请求正文,而不是您如何测试它。 NULL 表示它没有得到那个 JSON。 那我该怎么办? 在下面查看我的答案并开始了解 HTTP 请求。 【参考方案1】:

您的脚本需要一个有效的 JSON 编码请求正文,因此您应该相应地对其进行测试。您不能简单地在 Web 浏览器中访问 URL,因为没有以这种方式发送的请求正文。相反,您需要使用一些能够发送此类请求的工具,例如邮递员:

正如你在上面的截图中看到的,给定正确的输入,输出也是正确的。

【讨论】:

我现在将在 Postman 中检查它。我可以从端点以某种方式访问​​ PHP 数据,因为我需要在网页上打印它吗?谢谢。 我需要从支付提供商那里接收客户信息,我仍然在邮递员中获得 NULL 值。【参考方案2】:

您的代码没有错误。 您获得 NULL 的原因可能是您收到的数据不是 JSON 格式。 您可以通过打印 $data 变量而不用json_decode() 解码来检查它

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$data = file_get_contents('php://input');

echo $data;
exit();
?>

第二个原因可能是您通过 GET 请求接收数据。然后您可以使用$_GET[] 访问数据。

【讨论】:

以上是关于在 webhook 请求 PHP 上接收空字符串的主要内容,如果未能解决你的问题,请参考以下文章

Django Webhook 接收 Mailgun 的 post 请求

如何在 C# WCF 中接收 Stripe api webhook

Google PubSub / Gmail Webhook:发送电子邮件时始终从 PubSub 接收多个 POST 请求

markdown 在Webhook上接收Facebook主页

从 Mandrill Webhook 接收到的 JSON 字符串无效

从 webhook 请求中解析 JSON