Siemka
Robię apke na androida, która ma in app billing, który musi być weryfikowany przez php. Kod php podobno jest poprawny, tylko muszę wysłać POST'em na serwer signed data i signature. W tym momencie pozyskuje te wartości tak:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_REQUEST_CODE) {
int responseCode = data.getIntExtra("RESPONSE_CODE", 0);
String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA").replace(" ", ""); //O tych wartościach mowa
String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");// O tych wartościach mowa
}
}
Czy coś źle robię, czy to winę ponosi php.
PS. Dla ciekawskich kod php:
function verifySignatureTransaction($signed_data, $signature, $public_key_base64) {
$key = "-----BEGIN PUBLIC KEY-----\n" .
chunk_split($public_key_base64, 64, "\n") .
'-----END PUBLIC KEY-----';
//using PHP to create an RSA key
$key = openssl_pkey_get_public($key);
if ($key === false) {
throw new \InvalidArgumentException("Public key not valid");
}
$signature = base64_decode($signature);
//using PHP's native support to verify the signature
$result = openssl_verify(
$signed_data,
$signature,
$key,
OPENSSL_ALGO_SHA1
);
if (0 === $result) {
return false;
} else {
if (1 !== $result) {
return false;
} else {
return true;
}
}
}