已成功配置我的 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");
?>
Run Code Online (Sandbox Code Playgroud)
我想到了....
您不能使用 $_POST 来获取数据......
数据包含在发送到脚本的 HTTP 文件中。
在这种情况下你必须使用
file_get_contents('php://input');
Run Code Online (Sandbox Code Playgroud)
获取数据。
所以对于 PayPal PHP webhooks 你会这样做......
$json = file_get_contents('php://input');
$data = json_decode($json);
Run Code Online (Sandbox Code Playgroud)
这有效,现在我正在获取所有数据。
这确实应该记录在某处……任何地方……但它不是……并且对于 PHP 初学者来说并不明显。
| 归档时间: |
|
| 查看次数: |
550 次 |
| 最近记录: |