PHP возвращаемое значение из декодированного объекта - PullRequest
1 голос
/ 06 октября 2009

Может кто-нибудь сказать мне, где в этом коде ошибка? Я использую мобильное приложение для iphone, чтобы вызвать скрипт php, который отправит информацию в apple. Затем Apple вернет объект JSON, содержащий несколько значений в ассоциативном массиве.

Я хочу достичь значения 'status', но каждый раз, когда я запускаю код в телефоне, скрипт php отправляет мне полную строку, возвращенную яблоком. В отладчике XCode полученная строка выглядит так:

[DEBUG] ... responseString: { "Квитанция": { "item_id": "328348691", "Original_transaction_id": "1000000000081203", "bvrs": "1.0", "product_id": "julia_01", "purchase_date": "2009-10-05 23:47:00 Etc / GMT "," количество ":" 1 ", "Ставка": "com.latin3g.chicasexy1", "Original_purchase_date": "2009-10-05 23:47:00 Etc / GMT ", "TRANSACTION_ID": "1000000000081203"}, "Статус": 0}

но единственное, что меня волнует в строке, это значение "status". Я уже заглянул внутрь документации, но не могу найти решение. Я новичок в PHP, но это становится слишком долго. Вот сценарий:

<?php
//The script takes arguments from phone's GET call
$receipt = json_encode(array("receipt-data" => $_GET["receipt"]));

//Apple's url
$url = "https://sandbox.itunes.apple.com/verifyReceipt";

//USe cURL to create a post request
//initialize cURL
$ch = curl_init();

// set the target url
curl_setopt($ch, CURLOPT_URL,$url);

// howmany parameter to post
curl_setopt($ch, CURLOPT_POST, 1);

// the receipt as parameter
curl_setopt($ch, CURLOPT_POSTFIELDS,$receipt);

$result = curl_exec ($ch);
//Here the code "breaks" and return the complete string (i've tested that)
//and apparently doesn't get to the json_decode function (i think something's wrong there, so code breaks here)
curl_close ($ch);

$response = json_decode($result);   

echo $response->{'status'};


?>

Даже если я не ставлю эхо в конце, скрипт все равно возвращает полную строку (странно для меня)

Спасибо заранее и извиняюсь, если я снова настаиваю на другом вопросе

1 Ответ

2 голосов
/ 06 октября 2009

Попробуйте установить для параметра RETURNTRANSFER значение 1, чтобы можно было захватывать выходные данные из запрошенного URL-адреса в виде строки. Похоже, что стандартным поведением cURL является вывод результата непосредственно в браузер:

...
$ch = curl_init();

// set the target url
curl_setopt($ch, CURLOPT_URL,$url);

// howmany parameter to post
curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // <---- Add this


// the receipt as parameter
curl_setopt($ch, CURLOPT_POSTFIELDS,$receipt);
...
...