John Davidson

Receive JSON POST with PHP

0 comments
Message:


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?



My Answer:
The issue seems to be with the key name in your JSON data. In your JSON data, the key is "operacion" but in your PHP code, you are trying to access it using $_POST['operation'].

You should change your PHP code to access the correct key name "operacion":

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


This should now correctly decode the JSON data and access the "operacion" key.

Rate this post

4 of 5 based on 2462 votes

Comments




© 2024 Hayatsk.info - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us