この問題に関する多くの投稿を見て、考えられる多くの解決策をテストしましたが、検証は常に誤りでした。
したがって、この両方のパラメーターを POST 経由で PHP サーバーに渡します。
String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");<br>
String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
これは私が使用する方法です:
$result = openssl_verify($responseData, base64_decode($signature),
key, OPENSSL_ALGO_SHA1);
メソッドを使用してjson_decode
、 purchaseData が正しいことを確認しました。base64_decode
また、dataSignatureにも使用します。
これは、Google パブリッシャー アカウントで持っている公開鍵を使用して鍵を作成する方法です。
const KEY_PREFIX = "-----BEGIN PUBLIC KEY-----\n";<br>
const KEY_SUFFIX = '-----END PUBLIC KEY-----';
$key = self::KEY_PREFIX . chunk_split($publicKey, 64, "\n") . self::KEY_SUFFIX;
テストは、Google Play にアップロードされたゲームのアカウント テストで実行されるため、アプリ内購入は本物ですが、料金は発生しません。
ここで何が欠けていますか?