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

PayFast ITN回调返回空请求体问题排查求助

解决Express接收PayFast回调时请求体为空的问题

你的问题核心是Express默认不会自动解析POST请求的请求体,所以直接打印req.body会得到空对象。以下是具体解决方案:

1. 添加请求体解析中间件

在定义任何路由之前,必须配置Express的请求体解析中间件。PayFast的回调请求通常采用application/x-www-form-urlencoded格式,所以需要添加urlencoded中间件:

const express = require('express');
const app = express();

// 先添加解析中间件,这一步必须在路由定义之前
app.use(express.urlencoded({ extended: true }));
// 如果PayFast可能发送JSON格式的请求,可额外添加JSON解析中间件
app.use(express.json());

// 然后定义你的回调路由
app.post('/PayFastTest', (req, res) => {
  console.log(req.body); // 现在应该能拿到支付详情了
  res.sendStatus(200);
});

2. 关键说明

  • extended: true参数允许解析嵌套的对象结构,适配PayFast可能返回的复杂支付数据。
  • 必须确保中间件的配置在所有路由之前,否则路由无法获取解析后的请求体。
  • 若仍为空,可以打印req.headers['content-type']确认请求的内容类型,匹配对应的解析中间件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 18:04:53