首页 > 解决方案 > PayPal Webhook 不发送 POST 数据

问题描述

成功配置我的 PayPal webhook 以收到所有事件的通知。

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

当然,除了$_SERVER ,所有 PHP 数组都是空的($_POST、$_GET、$_REQUEST ) 。

到底是怎么回事?webhook 模拟器说事件已成功发送/排队...

$_SERVER数组包含建议的HTTP_PAYPAL _...标头和所有内容......但$_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");

?>

标签: phppaypal

解决方案


我想到了....

您不能使用 $_POST 来获取数据....

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

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

file_get_contents('php://input');

获取数据。

所以对于 PayPal PHP webhook,你会这样做....

$json = file_get_contents('php://input');
$data = json_decode($json);

这有效,现在我正在获取所有数据。

这确实应该记录在某个地方......任何地方......但它不是......而且对于初级 PHP 程序员来说并不明显。


推荐阅读