2009-10-06 4 views
1

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

Я хочу достичь значения «статус», но каждый раз, когда я запускаю код в телефоне, скрипт php отправляет мне всю возвращаемую строку apple. В 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}

, но единственным элементом, который мне по душе в строке, является значение «статус». Я уже просмотрел документацию, но не могу найти решение. Я новичок в 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'}; 


?> 

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

Спасибо'S заранее и apollogies если я настаиваю снова из другой вопрос

ответ

2

Попробуйте установить параметр 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); 
... 
+0

млн. Спасибо !!! – Carlos