Pergunta

Alguém pode me dizer onde está o erro neste código?, Eu uso um aplicativo para iPhone móvel para ligar para um script php que enviará informações para a Apple. A Apple retornará um objeto JSON contendo vários valores em uma matriz associativa.

Quero alcançar o valor do 'status', mas toda vez que executo o código no telefone, o script PHP me envia a string de retorno completa da Apple. No depurador Xcode, a string recebida se parece:

Debug] ... ResponsEstring: {"Recipt": {"item_id": "328348691", "original_transaction_id": "1000000000081203", "bvrs": "1.0", "product_id": "julia_01", "compra_date": "2009-10-05 23:47:00 etc/gmt", "quantidade": "1", "bid": "com.latin3g.chicasexy1", "original_purchase_date": "2009-10-05 23:47: 00 etc/gmt "," transaction_id ":" 1000000000081203 "}," status ": 0}

Mas a única peça que me importo na string é o valor "status". Eu já procurei documentação dentro, mas não consigo encontrar a solução. Eu sou novo no PHP, mas isso fica muito tempo. Aqui o 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'};


?>

Mesmo se eu não colocar nenhum eco no final, o script ainda retorna uma string completa (estranha para mim)

Agradecemos antecipadamente e apologias se eu insistir novamente de outra pergunta

Foi útil?

Solução

Tente definir o RETURNTRANSFER opção para 1 para que você possa capturar a saída da URL solicitada como uma string. Parece que o comportamento padrão do curl é emitir o resultado diretamente para o 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top