用php进行服务器端签名验证

时间:2014-05-26 13:28:17

标签: php android openssl rsa in-app-billing

我几周来一直在努力对我的应用产品进行签名验证。购买后,我的应用程序将购买数据和签名发送到应该验证签名的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代码总是会向我的应用程序返回“失败”。

0 个答案:

没有答案