[已解决]微信公众平台 php中$GLOBALS["HTTP_RAW_POST_DATA"]报错

0

[已解决]微信公众平台 php中$GLOBALS["HTTP_RAW_POST_DATA"]报错

微信公众平台 PHP 中$GLOBALS["HTTP_RAW_POST_DATA"] 报错的解决方法

在使用微信公众平台时,PHP 脚本中经常会遇到 `$GLOBALS["HTTP_RAW_POST_DATA"]` 报错的问题。这个问题是由于 PHP7.0 版本后,官方建议不再使用 `$GLOBALS["HTTP_RAW_POST_DATA"]` 这个变量,而是使用 `php://input` 来获取 POST 数据。

未定义数组索引:HTTP_RAW_POST_DATA

当你尝试访问 `$GLOBALS["HTTP_RAW_POST_DATA"]` 时,PHP 会报出 "未定义数组索引:HTTP_RAW_POST_DATA" 的错误。这是因为 PHP7.0 版本后,不再自动解析 `$_POST` 和 `$_GET` 等超全局变量。

解决方法

要解决这个问题,你需要将 `$postStr = $GLOBALS[HTTP_RAW_POST_DATA];` 替换为 `$postStr = file_get_contents(php://input);`。这样你就可以正确获取微信支付回调函数中的 POST 数据。

完整的代码示例

```php

$postStr = file_get_contents('php://input');

// ...

}

?>

```

在这个示例中,我们首先检查请求方法是否为 POST,如果是,则使用 `file_get_contents(php://input)` 来获取 POST 数据。

注意

请确保你的 PHP 版本支持 `php://input`。如果你使用的是较早的 PHP 版本,可能需要手动解析 `$_POST` 和 `$_GET` 等超全局变量。

微信支付回调函数中的 POST 数据

在微信支付回调函数中,POST 数据通常包含以下信息:

* `appid`: 公众号 AppID* `mch_id`: 商户 ID* `nonce_str`: 随机字符串* `sign`: 签名* `trade_type`:交易类型(例如,JSAPI 或 NATIVE)

* `transaction_id`:交易 ID你可以使用以下代码来解析这些信息:

```php

$postStr = file_get_contents('php://input');

$data = json_decode($postStr, true);

// ...

}

?>

```

在这个示例中,我们使用 `json_decode()` 来解析 JSON 数据,得到一个数组。

总结

要解决微信公众平台 PHP 中 `$GLOBALS["HTTP_RAW_POST_DATA"]` 报错的问题,你需要将 `$postStr = $GLOBALS[HTTP_RAW_POST_DATA];` 替换为 `$postStr = file_get_contents(php://input);`。这样你就可以正确获取微信支付回调函数中的 POST 数据。

记得检查你的 PHP 版本是否支持 `php://input`,并确保使用的代码示例与你的需求相符。

微信

版权声明:除非特别标注,否则均为网络文章,侵权请联系站长删除。

上一篇 微信-WeChat

下一篇 基于java的微信支付之JSAPI公众号充值