Verificación de la firma de compra en la aplicación con PHP openssl
En un intento de seguir algunas de las directrices de seguridad para la compra en la aplicación aquí: http://developer.android.com/guide/market/billing/billing_best_practices.html Estoy tratando de validar la firma en un servidor en lugar de en la App mismo. Me gustaría idealmente utilizar las bibliotecas php openssl y parece que el código como el siguiente debe funcionar:
$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);
Sé que mi firma y clave pública son correctas, pero $ ok es 0! La firma que intento utilizar es cadena del paquete de compra de la aplicación. Supongo que mi clave es correcta y el problema está en la firma. Cuando trato de decodificarlo desde base64 con: openssl enc -base64 -d -in firma -A> signature.bin, tengo la misma cadena con base64_decode (). Algunas ideas ?
- Diferencia entre los conceptos
- Cómo almacenar Lista de dispositivos adb en la red en php array
- Verificación del lado del servidor de Android Market Respuestas de licencias con PHP
- Comprueba si la solicitud HTTP proviene de mi aplicación Android
- Mantener sesión entre llamadas HttpUrlConnection (Native / Webview)
UPD: también no entiendo lo que debo pasar en openssl_verify () como $ data? Mis datos tienen este aspecto:
$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}]}';
- El navegador de Android no funciona con la geolocalización
- Configurar una base de datos de servidor en línea y codificar mi aplicación nativa de Android para interactuar con ella
- Codificación PHP en Android
- El navegador de Android rechaza contenido-disposición: ¿en línea?
- Android: No se llama a solicitud de petición de cadena de volea
- ¿Cómo enviar una respuesta de PHP a una aplicación móvil de Android / Java?
- Publicar json de Android en la página PHP
- Agregar una cookie a una solicitud HTTP
Echa un vistazo a OAuth.php Creo que se puede obtener en googlecode.com Se utiliza openssl_verify () Creo que los $ datos que están utilizando es una URL