在 PHP 中打印 Webhook API 负载

问题描述 投票:0回答:1

我使用 POST 将以下有效负载从 Postman 发送到 PHP 端点:

{
  "email": "[email protected]",
  "overwrite": true,
  "fields": {
    "first_name": "John Doe",
    "country": "Chile",
    "mrc_c3": "25.00",
    "mrc_date_c3": "10/10/24"
  }
}

在 PHP 脚本中,我有以下代码:

<?php
  require_once("db.php");

  $payload = json_decode(file_get_contents("php://input"), true)["payload"];

  echo "this is the payload: " . $payload[];
?>

正如您在上面看到的,我尝试只回显有效负载数组,但 Postman 只打印出“这是有效负载”而没有其他内容。

如何编辑上述代码,使其显示我从 Postman 发送的有效负载?

php postman webhooks
1个回答
0
投票

我看到两个问题:

首先,您引用了一个名为

payload
的数组键,但您没有任何名为该键的键:

$payload = json_decode(file_get_contents("php://input"), true)["payload"];
                                                                ^^^^^^^

您可能只想解码整个身体:

$payload = json_decode(file_get_contents("php://input"), true);

然后你会得到:

echo $payload['email']; // [email protected]
echo $payload['fields']['country']; // Chile

其次,这里使用数组大括号是一个语法错误:

echo "this is the payload: " . $payload[];
                                       ^^

如果要引用整个数组,只需单独使用

$payload
即可。但是,请注意,您不能只使用
echo
数组,因为
echo
仅适用于标量值。你可以这样做:

$payload = json_decode(file_get_contents("php://input"), true);
print_r($payload);

你会得到:

Array
(
    [email] => [email protected]
    [overwrite] => 1
    [fields] => Array
        (
            [first_name] => John Doe
            [country] => Chile
            [mrc_c3] => 25.00
            [mrc_date_c3] => 10/10/24
        )

)
© www.soinside.com 2019 - 2024. All rights reserved.