猿问

用PHP接收JSON帖子

用PHP接收JSON帖子

我试图在一个支付界面网站上收到一个JSON帖子,但我无法破解它。

当我打印:

echo $_POST;

我得到:

Array

当我尝试这个的时候,我什么也得不到:

if ( $_POST ) {
    foreach ( $_POST as $key => $value ) {
        echo "llave: ".$key."- Valor:".$value."<br />";
    }}

当我尝试这个的时候,我什么也得不到:

$string = $_POST['operation'];$var = json_decode($string);echo $var;

当我尝试这样做时,我会变成空:

$data = json_decode( file_get_contents('php://input') );var_dump( $data->operation );

当我这么做的时候:

$data = json_decode(file_get_contents('php://input'), true);var_dump($data);

我得到:

NULL

JSON格式是(根据支付站点文档):

{
   "operacion": {
       "tok": "[generated token]",
       "shop_id": "12313",
       "respuesta": "S",
       "respuesta_details": "respuesta S",
       "extended_respuesta_description": "respuesta extendida",
       "moneda": "PYG",
       "monto": "10100.00",
       "authorization_number": "123456",
       "ticket_number": "123456789123456",
       "response_code": "00",
       "response_description": "Transacción aprobada.",
       "security_information": {
           "customer_ip": "123.123.123.123",
           "card_source": "I",
           "card_country": "Croacia",
           "version": "0.3",
           "risk_index": "0"
       }
    }}

付款网站日志显示一切正常。有什么问题吗?


MYYA
浏览 771回答 4
4回答

蝴蝶不菲

试一试;$data&nbsp;=&nbsp;json_decode(file_get_contents('php://input'),&nbsp;true);print_r($data);echo&nbsp;$data["operacion"];从您的json和您的代码来看,您似乎拼写了这个单词。操作在你的头上是对的,但它不在JSON里面。编辑也许也值得尝试从php:/INPUT中回显json字符串。echo&nbsp;file_get_contents('php://input');

慕后森

例如,如果您已经将参数设置为$_POST[‘EG’],并且不希望更改它,那么只需这样做:$_POST&nbsp;=&nbsp;json_decode(file_get_contents('php://input'),&nbsp;true);这将省去将所有$_POST更改为其他内容的麻烦,并且如果希望删除这一行,则允许您仍然发出正常的POST请求。

HUH函数

使用$HTTP_RAW_POST_DATA而不是$_POST.它会给你提供真实的数据。您将能够使用json_decode()后来。
随时随地看视频慕课网APP
我要回答