Question

Quelqu'un peut-il s'il vous plaît me dire où est l'erreur dans ce code ?, J'utilise une application iphone mobile pour appeler un script php tha envoie des informations à Apple. Apple puis retourne un objet JSON contenant plusieurs valeurs dans un tableau associatif.

Je veux atteindre la valeur « d'état », mais chaque fois que je lance le code dans le téléphone, le script php me envoie la chaîne retournée de la pomme complète. Dans le débogueur XCode la chaîne reçue ressemble à:

  

[DEBUG] ... responseString:   { "Réception": { "item_id": "328348691",   "Original_transaction_id": "1000000000081203",   "SBVB": "1.0", "product_id": "julia_01",   "DATE_ACHAT": "2009-10-05 23:47:00   Etc / GMT », "quantité": "1",   "Offre": "com.latin3g.chicasexy1",   "Original_purchase_date": "2009-10-05   23:47:00 Etc / GMT »,   "Transaction_id": "1000000000081203"},   "Statut": 0}

mais la seule pièce que je me soucie de la chaîne est la valeur « d'état ». Je l'ai déjà regardé à l'intérieur des documents, mais ne trouve pas la solution. Je suis nouveau en php, mais cela devient trop longtemps. Voici le 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'};


?>

Même si je ne mets aucun écho à la fin, le script retourne toujours une chaîne complète (étrange pour moi)

Merci à l'avance et de apollogies si je tiens encore une fois d'une autre question

Était-ce utile?

La solution

Définissez la RETURNTRANSFER option 1 de sorte que vous peut capturer la sortie de l'URL demandée en tant que chaîne. Il semble que le comportement par défaut de cURL est sortie le résultat directement au navigateur:

...
$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);
...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top