<?php
$pkg = filter_input(INPUT_GET,'pkg',FILTER_SANITIZE_STRING);
$js = filter_input(INPUT_GET,'js',FILTER_SANITIZE_STRING);
$sgnt = filter_input(INPUT_GET,'sgnt',FILTER_SANITIZE_STRING);
print_r(verifyGoogleOrderLocal($pkg,$js,$sgnt));
function verifyGoogleOrderLocal($packageName, $jsonData_Base64, $signature_base64)
{
$public_keys = array(
'your package name' => 'public key',
'another package name' => 'another public key',
);
if(!$public_keys[$packageName]) {
return array("success"=>0,"reason"=>'no public key defined');
}
$key = get_openssl_key($public_keys[$packageName]);
if(!$key) {
return array("success"=>0,"reason"=>'invalid public key');
}
$json = base64_decode($jsonData_Base64);
$signature = base64_decode($signature_base64);
$result = openssl_verify($json, base64_decode($signature), $key, sha1WithRSAEncryption);
$resp = array('success'=>$result);
if($result==0) $resp['reason'] = 'invalid signature';
// echo '......'.openssl_error_string();
return $resp;
}
function get_openssl_key($publicKey)
{
$key = "-----BEGIN PUBLIC KEY-----\n" . chunk_split($publicKey, 64, "\n") . '-----END PUBLIC KEY-----';
$key = openssl_get_publickey($key);
return $key;
}
?>