Pregunta

¿Alguien puede decirme dónde está el error en este código? Utilizo una aplicación de iPhone móvil para llamar a un script php que enviará información a Apple.Luego, Apple devolverá un objeto JSON que contiene varios valores en una matriz asociativa.

Quiero alcanzar el valor de 'estado' pero cada vez que ejecuto el código en el teléfono, el script php me envía la cadena completa devuelta por Apple.En el depurador de XCode, la cadena recibida tiene el siguiente aspecto:

[DEPURAR]...cadena de respuesta:{"recibo": {"item_id": "328348691", "original_transaction_id": "100000000000081203", "bvrs": "1.0", "product_id": "julia_01", "buy_date": "2009-10-05 23: 47:00 etc/gmt "," cantidad ":" 1 "," oferta ":" com.latin3g.chicasexy1 "," original_purchase_date ":" 2009-10-05 23:47:00 etc/gmt "," transaccion_id ":" 1000000000081203 "}," Estado ": 0}

pero la única parte de la cadena que me importa es el valor de "estado".Ya busqué en la documentación pero no puedo encontrar la solución.Soy nuevo en PHP pero esto se está volviendo demasiado largo.Aquí el guión:

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


?>

Incluso si no pongo ningún eco al final, el script aún devuelve una cadena completa (me resulta extraño)

Gracias de antemano y disculpas si vuelvo a insistir desde otra pregunta.

¿Fue útil?

Solución

Trate de establecer la opción RETURNTRANSFER a 1 por lo que puede capturar la salida de la dirección URL solicitada como una cadena. Parece que el comportamiento predeterminado de curvatura es dar salida al resultado directamente en el navegador:

...
$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);
...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top