1

課金アプリ(バージョン3)でAndroidアプリをビルドしています。openssl_verify() を使用してサーバー PHP で購入を確認したい。$data、$signature、$public_key、$SIGNATURE_ALGORITHM の 4 つの値が必要です。ここで解決策を見つけましたが、$data がどのような形式であるべきか理解できませんか? Android アプリで responseData を取得します。

'{
"orderId":"12999763169054705758.1371079406387615",
"packageName":"com.example.app",
"productId":"exampleSku",
"purchaseTime":1345678900000,
"purchaseState":0,
"developerPayload":"bGoa+V7g /yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
"purchaseToken":"rojeslcdyyiapnqcynkjyyjh"
}'

アプリから署名があります。関数php openssl_verify()で使用できるように文字列を変換するにはどうすればよいですか?
ありがとう。

4

1 に答える 1

2

私は自分のプロジェクトで使用します

 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_data フォーマットなしの json 文字列

于 2013-11-19T10:18:40.473 に答える