Android inapp购买验证问题:无法解析代码,返回值始终为零

时间:2018-07-05 19:04:01

标签: php android openssl in-app-purchase

我正在使用openssl_verify()方法使用Google Developer Console中的公钥来验证INAPP_PURCHASE_DATA和SIGNATURE。

我正在将应用程序中的数据和签名解析为运行以下php代码的网址。当我从Android应用进行测试购买时,我的脚本运行良好,但是返回值始终为零。

谁能告诉我代码有什么问题吗?

以上两个字段的格式是否存在问题?

还可以有人建议将参数解析为我的php脚本的更好方法吗?

这是我正在使用的代码

<?php 

$signed_data = $_REQUEST["signed_data"];
$signature = $_REQUEST["signature"];
$public_key_base64 = "......";

function verify_market_in_app($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_get_publickey($key);

    //$signature should be in binary format, but it comes as BASE64. 
    //So, I'll convert it.
    $signature = base64_decode($signature);   

    //using PHP's native support to verify the signature

    $result = openssl_verify(
            $signed_data,
            $signature,
            $key,
            OPENSSL_ALGO_SHA1);

    echo $result;
    if (0 === $result) 
    {
        echo "false";
        return false;
    }
    else if (1 !== $result)
    {
        echo "false";
        return false;
    }
    else 
    {
        echo "true";
        return true;
    }

} 

verify_market_in_app($signed_data, $signature, $public_key_base64);

?>

0 个答案:

没有答案