2011-06-16 16 views
10

Nel tentativo di seguire alcune delle linee guida di sicurezza per in-app acquisto qui: http://developer.android.com/guide/market/billing/billing_best_practices.html che sto cercando di fare la convalida della firma su un server invece che nel app iteself . Vorrei idealmente desidera utilizzare le librerie OpenSSL php e Sembra che il codice come il seguente dovrebbe funzionare:in-app di verifica acquisto di firma con PHP openssl

$public_key_str = file_get_contents("./pubKey/out"); 
$public_key_str = trim($public_key_str); 
$key = openssl_get_publickey($public_key_str); 
if(!$key) 
{ 
echo 'Can\'t get public key'; 
} 
$signature = base64_decode($signature); 
$ok = openssl_verify($data, $signature, $key); 
var_dump($ok); 

So che sia la mia firma e la chiave pubblica sono corretti, ma $ ok è 0! La firma che cerco di utilizzare è una stringa del pacchetto di acquisto dell'app. Indovina che la mia chiave è corretta e il problema è nella firma. Quando provo a decodificarlo da base64 con: openssl enc -base64 -d -in signature -A> signature.bin, ho la stessa stringa con base64_decode(). Qualche idea ?

UPD: anche io non capisco davvero cosa dovrei passare in openssl_verify() come $ data? I miei dati assomiglia a questo:

$data = '{"nonce":5550262978898439313,"orders":[{"notificationId":"android.test.purchased","orderId":"transactionId.android.test.purchased","packageName":"com.ads.testbilling","productId":"android.test.purchased","purchaseTime":1308224646237,"purchaseState":0}]}'; 
+0

si prega di formattare il codice correttamente, cioè invece di utilizzare apici inversi su ogni linea di rientro con 4 posti (o semplicemente selezionare le linee e premere CTRL + K) – ThiefMaster

+0

mi dispiace per questo – user801255

+0

Alcuni suggerimenti qui: http: //crazyviraj.blogspot.com/2011/06/some-notes-on-implementing-in-app.html – psychotik

risposta

Problemi correlati