How to retrieve POST data that contains JSON

4

I have never used JSON before and am trying to retrieve the values POSTed to my site from coinbase. But I have no idea how to.

Information about the IPN and callback can be found here: https://coinbase.com/docs/merchant_tools/callbacks

To be more specific, what I understand so far is that I can use json_decode($jsonData); to turn the JSON data into PHP data. But how do I set the variable $jsonData?

This is the response that is supposed to be sent:

{"order":{"id":null,"created_at":null,"status":"new","total_btc":
{"cents":100000000,"currency_iso":"BTC"},"total_native":
{"cents":2263,"currency_iso":"USD"},"custom":"123456789","button":
{"type":"buy_now","name":"Test Item","description":null,"id":null},"transaction":
{"hash":"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b","confirmations":0}}}

fwho

Posted 2013-02-08T02:08:02.707

Reputation: 71

Could you put var_dump($_POST); in your callback and post the output?Nick ODell 2013-02-08T02:22:32.193

I just tried $data = var_dump($_POST); file_put_contents('coinbase.txt', $data); with no luck.fwho 2013-02-08T02:32:33.393

Ah, of course. It's been a while since I've done any php. Try $data = print_r($_POST, TRUE); file_put_contents('coinbase.txt', $data);Nick ODell 2013-02-08T02:34:35.123

I got Array ( ) It is a step forward though!fwho 2013-02-08T02:40:28.993

Do you have a shell on this computer? If so, you could do nc -l 8080, then set the callback url to http://yoursite.com:8080/ to see exactly what it's sending.Nick ODell 2013-02-08T04:36:53.903

I have no idea how to do that to be honest.fwho 2013-02-08T17:09:03.393

If print_r is displaying "Array ()" then the array returned is is empty.Highly Irregular 2013-02-08T18:24:12.903

I added the data that I am told is being sent. I believe the data is an array nested within an array in JSON format.fwho 2013-02-08T20:48:56.907

Answers

0

$data = json_decode(file_get_contents('php://input'), TRUE);
$text = print_r($data,true);
file_put_contents('coinbase.txt', $text);

This actually sends the following information to a text file:

Array
(
    [order] => Array
        (
            [id] => 
            [created_at] => 
            [status] => new
            [total_btc] => Array
                (
                    [cents] => 100000000
                    [currency_iso] => BTC
                )

            [total_native] => Array
                (
                    [cents] => 2270
                    [currency_iso] => USD
                )

            [custom] => 123456789
            [button] => Array
                (
                    [type] => buy_now
                    [name] => Test Item
                    [description] => 
                    [id] => 
                )

            [transaction] => Array
                (
                    [hash] => 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
                    [confirmations] => 0
                )

        )

)

fwho

Posted 2013-02-08T02:08:02.707

Reputation: 71