php - 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");
?>
解决方案
我想到了....
您不能使用 $_POST 来获取数据....
数据包含在发送到脚本的 HTTP 文件中。
在这种情况下,您必须使用
file_get_contents('php://input');
获取数据。
所以对于 PayPal PHP webhook,你会这样做....
$json = file_get_contents('php://input');
$data = json_decode($json);
这有效,现在我正在获取所有数据。
这确实应该记录在某个地方......任何地方......但它不是......而且对于初级 PHP 程序员来说并不明显。
推荐阅读
- pytorch - 如何在 Pytorch 中冻结模型的选定层?
- three.js - 倒置视频作为素材
- python - QQuickView 标题栏在辅助显示器上太大
- python - Matplotlib 使用 cartopy 绘制先前帧的动画
- docker - 无法使用 dockerfile 在 heroku 上推送 clojure 项目
- java - 在不同的关系属性中使用带有限制的 Hibernate Criteria
- javascript - c# QueryString 如何将数据从一个网页发送到另一个网页?
- html - 更改导航以向左展开
- python - 如何在 Python 3 中等待字符输入时输出?
- java - FileProvider - java.lang.IllegalArgumentException:找不到配置的根目录,其中包含