正在接收后期数据xml


Receiving post data xml

Hi我需要接收一个post数据,该数据将以base64格式编码的xml格式。我会从支付网关收到这个。现在我得到的只有这个。我的代码创建了一个txt文件,但它是空的。代码有什么问题吗?输出应该是文本文件中的xml信封。

$body = '';
$fh   = @fopen('php://input', 'r');
if ($fh)
{
  while (!feof($fh))
  {
    $s = fread($fh, 1024);
    echo $s;
    if (is_string($s))
    {
      $body .= $s;
    }
  }
  fclose($fh);
}
$body = base64_decode($body);
$ourFileName = "testFile.txt";
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
fclose($ourFileHandle);
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $body;
fwrite($fh, $stringData);
fclose($fh);

我试图联系支付网关,他们告诉我他们收到了这个错误"远程服务器返回了一个错误:(417(预期失败。"我们或他们哪里可能存在问题?

由于您的文件返回为空,我建议您从支付网关验证fopen((函数的规范。此外,如果您正确地从他们那里获取数据,那么我会检查base64_decode((函数。我见过这样的情况,在实际有效负载数据的顶部可能有一个标头或其他数据,它会破坏base64_decode并破坏你的一天。

看起来你正在混淆你的文件处理程序,你能看到以下代码是否运行吗:

$body = $HTTP_RAW_POST_DATA;
$ourFileName = "testFile.txt";
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
$stringData = $body;
fwrite($ourFileHandle, $stringData);
fclose($ourFileHandle);

我刚刚成功地测试了上面的代码。

我建议你尝试以下方法:

  • 尝试将一段静态数据放入$body中(例如:"$body='test';"(,看看是否保存了数据,如果没有保存,那么这就是问题所在
  • 删除文件(以删除任何权限问题(
  • 仔细检查支付网关发送到的url是否正确