我几周来一直在努力对我的应用产品进行签名验证。购买后,我的应用程序将购买数据和签名发送到应该验证签名的php服务器。我已经尝试了各种不同的东西来使它工作,但它不会。我不明白代码有什么问题,也许我发错了数据或发错了。
我将数据发送到URL中的服务器:
String query = "data="+data+"&sign="+signature;
URL url = new URL("siteurl/Verify.php?"+query);
URLConnection conn = url.openConnection();
数据和签名是:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
data = data.getStringExtra("INAPP_PURCHASE_DATA");
signature = data.getStringExtra("INAPP_DATA_SIGNATURE");
}
应该验证签名的PHP代码:
$data = $_GET["data"];
$signature = $_GET["sign"];
$pkey = '[my public key from Google copy pasted]';
$key = "-----BEGIN PUBLIC KEY-----\n" . chunk_split($pkey, 64, "\n") . '-----END PUBLIC KEY-----';
$result = openssl_verify($data, base64_decode($signature), $key);
if($result == 0) {
echo " fail ";
}
if($result == 1) {
echo " works ";
}
我已经搜索了许多页面以找到解决方案但似乎没有任何效果。 我究竟做错了什么?请帮忙。
编辑:为了更清楚,上面的PHP代码总是会向我的应用程序返回“失败”。