Php Android计费应用程序版本3验证服务器
我构建了Android应用程序,应用程序中有计费功能(版本3)。我想用openssl_verify()在我的服务器PHP中验证购买。 我需要四个价值观: $data、$signature、$public_key和$signature_算法,但我不明白$data应该以什么形式出现? 我在Android应用程序中获得响应数据: “{Php Android计费应用程序版本3验证服务器,php,android,security,Php,Android,Security,我构建了Android应用程序,应用程序中有计费功能(版本3)。我想用openssl_verify()在我的服务器PHP中验证购买。 我需要四个价值观: $data、$signature、$public_key和$signature_算法,但我不明白$data应该以什么形式出现? 我在Android应用程序中获得响应数据: “{ “订单ID”:“12999763169054705758.1371079406387615”, “packageName”:“com.example.app”, “产品
“订单ID”:“12999763169054705758.1371079406387615”,
“packageName”:“com.example.app”,
“产品ID”:“示例SKU”,
“购买时间”:1345678900000,
“采购状态”:0,
“developerPayload”:“bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ”,
“purchaseToken”:“rojeslcdyyiapnqcynkjyyjh”
}" 我有应用程序的签名。 我需要如何转换字符串以便在函数php openssl_verify()中使用它?
谢谢。我在项目中使用
public 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;
}
}
}
$signed_数据是它的json字符串,不带格式