Php PayPal Webhook不发送POST数据

Php PayPal Webhook不发送POST数据,php,paypal,Php,Paypal,已成功配置my PayPal webhook以通知所有事件 当事件发生时,PayPal调用我的webhook(一个简单的脚本)。。。但不随它发送任何POST数据 所有PHP数组都是空的($\u POST、$\u GET、$\u REQUEST),当然除了$\u SERVER之外 发生了什么事?webhook模拟器表示事件已成功发送/排队 $\u服务器数组包含建议的HTTP\u PAYPAL…标题和所有内容。。。。但是$\u POST数组是空的 我的webhook是这样写的 <?php r

已成功配置my PayPal webhook以通知所有事件

当事件发生时,PayPal调用我的webhook(一个简单的脚本)。。。但不随它发送任何POST数据

所有PHP数组都是空的($\u POST、$\u GET、$\u REQUEST),当然除了$\u SERVER之外

发生了什么事?webhook模拟器表示事件已成功发送/排队

$\u服务器数组包含建议的HTTP\u PAYPAL…标题和所有内容。。。。但是$\u POST数组是空的

我的webhook是这样写的

<?php

require ('./ace-includes/ace_log.php');

ace_log(print_r($_POST, true));
ace_log(print_r($_REQUEST, true));
ace_log(print_r($_GET, true));
ace_log(print_r($_SERVER, true));

ace_sendlog("NOTIFY SCRIPT CALLED");

?>

我想出来了

您不能使用$\u POST获取数据

数据包含在发送到脚本的HTTP文件中

在这种情况下,您必须使用

file_get_contents('php://input');
获取数据

所以对于PayPal PHP webhooks,您可以这样做

$json = file_get_contents('php://input');
$data = json_decode($json);
这是可行的,现在我得到了所有的数据


这真的应该记录在某处。。。。在任何地方但它不是。。。对于一个刚开始的PHP程序员来说,这并不明显。

什么是
$\u服务器['HTTP\u CONTENT\u TYPE']
?如果您在大约$\u POST上阅读PHP文档:“在请求中将application/x-www-form-urlencoded或multipart/form数据用作HTTP内容类型时,通过HTTP POST方法传递到当前脚本的变量的关联数组。“但是PayPal Webhook不使用这种内容类型;它发送JSON格式的数据。有很多地方都在讨论如何使用PHP通过HTTP读取JSON;你似乎找到了一个解决方法。