Ich möchte die Validierung des Google-Belegs bestätigen, aber da ich keinen Kundenschlüssel habe, kann ich die Google API nicht verwenden : Ссылка
Also mache ich lokale Validierung mit public key
, signedData
und signature
.
Alles funktioniert gut, seit ich orderId
mit format:
GPA.XXXX-XXXX-XXXX-XXXXX
Dieser Code funktioniert jedoch nicht für das alte Muster orderId
, das wie folgt aussieht:
Ich bekomme eine Ausnahme:
Signaturausnahme java.security.SignatureException: Signaturlänge nicht korrekt: 294 erhalten, aber 256
erwartet
So ist es mir gelungen, PublicKey
bu fails on verify
zu generieren:
Ich weiß, dass RSA
Signatur 256 sein sollte, in meinem Fall 294
Hinweis: Google Play-Bestell-ID wurde auf ein neues Format aktualisiert
DefaultSignatureValidator.class :
%Vor%Irgendwelche Ideen, wie man es bestätigt?
Wenn Sie eine Lösung haben, egal in welcher Sprache Clojure, Skala, Ruby, Java .....
In der Annahme, dass Sie versuchen, einen echten Beleg zu validieren: Wenn Sie SignatureException
erhalten - das bedeutet, dass nichts anderes als die angegebene Signatur ungültig ist . Und Ihr Code muss solche Signaturen entsprechend behandeln, d. H.
Sie haben einen Code angefordert, der sich auf die Verarbeitung für die alte OrderId bezieht: hier Geh . Wie Sie sehen können, ist der Validierungsabschnitt in Ruby für Ihren identisch. Auch hier gibt es kein Problem mit Ihrem Code. Das Problem besteht insbesondere darin, Quittungssignaturen zu erhalten.
Und jetzt, die Antwort auf warum haben Sie ungültige Signaturen. Sie sind nicht allein darin, dass ungültige Signaturen eintreffen, insbesondere für altformatierte Auftrags-IDs wie hier gefragt (und dort und überall ), die weit kommen, nachdem Google auf die neuen GPA-fixierten IDs umgestellt hat. Übrigens können Sie überprüfen, ob Sie die folgenden Bedingungen haben:
Die Suche nach den orderIds in der Auftragsverwaltungs-Registerkarte der GooglePlay-Konsole liefert keine Ergebnisse für diese orderIds.
Die Ursache, die am meisten logisch in den Sinn kommt, ist betrügerische Aktivität . Sehen Sie sich diese Antwort an, um beispielsweise zu erfahren, wie betrügerischer Fluss aussehen kann
Zurück zu Ihrer Frage, wie Sie den Beleg mit der alten Auftrags-ID lokal validieren können - validieren Sie ihn genau wie einen mit der neuen Auftrags-ID (wie Sie es bereits tun) und betrachten Sie die Signatur mit der falschen Länge als eine, die nicht stimmt gültig.
Tags und Links java android google-play in-app-billing android-pay