Domanda

Qualcuno può per favore mi dica dove è l'errore in questo codice ?, io uso un applicazione per iPhone cellulare per chiamare un tha script php invierà le informazioni ad Apple. Mela allora restituirà un oggetto JSON contenente più valori in un array associativo.

Voglio raggiungere il valore di 'status', ma ogni volta che esegue il codice del telefono, lo script php mi manda stringa restituita della mela completa. Nel debugger XCode la stringa ricevuta appare come:

  

[DEBUG] ... responseString:   { "Ricezione": { "item_id": "328348691",   "Original_transaction_id": "1000000000081203",   "BVRS": "1.0", "product_id": "julia_01",   "PURCHASE_DATE": "2009-10-05 23:47:00   Etc / GMT", "quantità": "1",   "Offerta": "com.latin3g.chicasexy1",   "Original_purchase_date": "2009-10-05   23:47:00 Etc / GMT",   "Transaction_id": "1000000000081203"},   "Status": 0}

, ma l'unico pezzo che mi interessa nella stringa è il valore "status". Ho già guardato dentro documentazione, ma non riesco a trovare la soluzione. Sono nuovo in PHP, ma questo diventando troppo lunga. Ecco lo script:

<?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'};


?>

Anche se non metto nessuna eco, alla fine, lo script restituisce ancora una stringa completa (strano per me)

Grazie in anticipo e di apollogies se insisto ancora una volta da un'altra domanda

È stato utile?

Soluzione

Provare a impostare l'opzione RETURNTRANSFER a 1 in modo da in grado di catturare l'uscita dal URL richiesto sotto forma di stringa. Sembra che il comportamento predefinito di cURL è quello in uscita il risultato direttamente al browser:

...
$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);
...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top