Проблема проверки покупки приложения Android: не удается разрешить код, возвращаемое значение всегда равно нулю - PullRequest
0 голосов
/ 05 июля 2018

Я использую метод openssl_verify () для проверки INAPP_PURCHASE_DATA и SIGNATURE с использованием открытого ключа из консоли разработчика Google.

Я анализирую данные и подпись из моего приложения по URL-адресу, по которому работает следующий код 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);

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...