You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Postman向PHP提交原始POST数据测试PayPal IPN回调?

解决Postman发送原始POST数据到PHP脚本时$_POST为空的问题

问题根源

PHP的$_POST变量仅自动解析Content-Type为application/x-www-form-urlencoded或multipart/form-data的POST请求数据,像text、json这类其他格式的原始请求体,不会被自动填充到$_POST中。

解决方案:读取原始请求体

直接使用file_get_contents('php://input')获取完整的原始POST数据,无论Content-Type是什么都能拿到整段文本。

具体操作步骤

  1. Postman配置

    • 新建POST请求,填入你的PHP脚本地址
    • 切换到Body标签,选择raw选项
    • 在文本框中粘贴需要发送的整段PayPal IPN文本
    • 选择对应Content-Type(比如text/plain,或和PayPal回调一致的application/x-www-form-urlencoded均可)
  2. PHP脚本代码示例

    // 读取完整的原始POST数据
    $rawPost = file_get_contents('php://input');
    
    // 可直接用$rawPost执行PayPal IPN验证逻辑(示例)
    // $ch = curl_init('https://ipnpb.paypal.com/cgi-bin/webscr');
    // curl_setopt($ch, CURLOPT_POST, true);
    // curl_setopt($ch, CURLOPT_POSTFIELDS, $rawPost);
    // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    // $response = curl_exec($ch);
    // curl_close($ch);
    // if (strcmp($response, "VERIFIED") == 0) {
    //     // 验证通过,处理业务逻辑
    // } else {
    //     // 验证失败,记录日志或其他处理
    // }
    
    // 测试用:输出收到的原始数据
    echo "收到的原始POST数据:\n";
    echo $rawPost;
    

注意事项

  • 无需纠结$_POST变量,php://input读取的内容就是你在Postman中发送的整段文本
  • 如果严格模拟PayPal IPN回调,建议将Content-Type设置为application/x-www-form-urlencoded,但只要使用php://input读取,其他类型也能正常获取数据

内容的提问来源于stack exchange,提问作者edam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:32:33