ich versuche android in app billing v3 auf meinem remote php server zu überprüfen.android in app fakturierung v3 mit php
aber es scheint, dass etwas an meinen Codes falsch ist.
Ich denke, diese Openssl_verify-Funktion ist ein Problem.
Ergebnis ist immer fehlgeschlagen!
Ich kann nicht finden, welcher erste Parameter mit openssl_verify verifiziert werden soll. tatsächlich, ich bin verwechseln, was vernünftig Format auf dem ersten Parameter zu platzieren :(
könnten Sie mir helfen, es zu lösen?
$result = openssl_verify($data["purchaseToken"], base64_decode($signature), $key); // original // failed
belows vollständigen Testcodes.
<?php
$responseCode = 0;
$encoded='{
"orderId":"12999763169054705758.1111111111111",
"packageName":"com.xxx.yyy",
"productId":"test__100_c",
"purchaseTime":1368455064000,
"purchaseState":0,
"purchaseToken":"tcmggamllmgqiabymvcgtfsj.AO-J1OwoOzoFd-G-....."
}';
$data = json_decode($encoded,true);
$signature = "tKdvc42ujbYfLl+3sGdl7RAUPlNv.....";
$publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2kMri6mE5+.....";
$key = "-----BEGIN PUBLIC KEY-----\n" . chunk_split($publicKey, 64, "\n") . "-----END PUBLIC KEY-----";
$key = openssl_get_publickey($key);
if (false === $key) {
exit("error openssl_get_publickey");
}
var_dump($key);
$result = openssl_verify($data["purchaseToken"], base64_decode($signature), $key); // original // failed
//$result = openssl_verify($data, base64_decode($signature), $key); // failed
//$result = openssl_verify($encoded, base64_decode($signature), $key); // failed
//$result = openssl_verify(base64_decode($data["purchaseToken"]), base64_decode($signature), $key); // failed
//$result = openssl_verify(base64_decode($signature),$data["purchaseToken"], $key,OPENSSL_ALGO_SHA512); // failed
if ($result == 1) {
echo "good";
} elseif ($result == 0) {
echo "bad";
} else {
echo "error";
}
echo($result);
Dank :)
+1 für zwei Dinge, Parameter und falsche JSON-Zeichenfolge. ich korrigiert beide, und behoben. danke – TaeL
es ist ein bisschen verwirrend, weil in Ihrer Antwort '$ data' json zu Array dekodiert wird. Es ist wichtig, ORIGINAL JSON von Google zu verwenden (ich weiß, dass es am Ende in deiner Antwort steht, aber ich habe es beim ersten Lesen verpasst :-)) – Naxos
Hast du genug Rep, um die Antwort zu verbessern? Wenn ja, bitte. Ansonsten werde ich versuchen, es zu aktualisieren, um es besser zu klären. :) –