PHP возвращает значение из декодированного объекта

StackOverflow https://stackoverflow.com/questions/1523005

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

[ОТЛАДКА]...Строка ответа :{"квитанция": {"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'};


?>

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

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

Это было полезно?

Решение

Попробуйте установить 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);
...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top