Receive JSON POST with PHP
json, php, post
Solution
Try;
$data = json_decode(file_get_contents('php://input'), true);
print_r($data);
echo $data["operacion"];
From your json and your code, it looks like you have spelled the word operation correctly on your end, but it isn't in the json.
EDIT
Maybe also worth trying to echo the json string from php://input.
echo file_get_contents('php://input');
Problem
I’m trying to receive a JSON POST on a payment interface website, but I can’t decode it. When I print : ``` echo $_POST; ``` I get: ``` Array ``` I get nothing when I try this: ``` if ( $_POST ) { foreach ( $_POST as $key => $value ) { echo "llave: ".$key."- Valor:".$value."<br />"; } } ``` I get nothing when I try this: ``` $string = $_POST['operation']; $var = json_decode($string); echo $var; ``` I get NULL when I try this: ``` $data = json_decode( file_get_contents('php://input') ); var_dump( $data->operation ); ``` When I do: ``` $data = json_decode(file_get_contents('php://input'), true); var_dump($data); ``` I get: ``` NULL ``` The JSON format is (according to payment site documentation): ``` { "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" } } } ``` The payment site log says everything is OK. What’s the problem?