Was sollte die Entwickler Nutzlast in Android App-Abrechnung v3 API sein?
Ich bin Implementierung von in-app-billing in meine app zum entsperren von premium-features.
Die in-app-billing-sets korrekt. Alles scheint in Ordnung, außer dem "developer payload" - Ding.
Die Beispiel-app sagt
/*
* TODO: verify that the developer payload of the purchase is correct. It will be
* the same one that you sent when initiating the purchase.
*
* WARNING: Locally generating a random string when starting a purchase and
* verifying it here might seem like a good approach, but this will fail in the
* case where the user purchases an item on one device and then uses your app on
* a different device, because on the other device you will not have access to the
* random string you originally generated.
*
* So a good developer payload has these characteristics:
*
* 1. If two different users purchase an item, the payload is different between them,
* so that one user's purchase can't be replayed to another user.
*
* 2. The payload must be such that you can verify it even when the app wasn't the
* one who initiated the purchase flow (so that items purchased by the user on
* one device work on other devices owned by the user).
*
* Using your own server to store and verify developer payloads across app
* installations is recommended.
*/
Die Beispiel-app verwendet einen leeren string als Entwickler Nutzlast. Meine Frage ist, welche Zeichenfolge verwenden, die als Entwickler Nutzlast?
Kann ich die Benutzer primäre E-Mail-ID?
InformationsquelleAutor der Frage Amit Jayant | 2013-09-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte prüfen Sie die unten stehende Antwort, kann es dein problem gelöst hat:
wenn Sie die Verwendung von Verbrauchsmaterial(managed Element), dann können Sie zufällig generierte Zeichenfolge
Schritt 1: bevor Sie auf die create-Methode erklären:
Schritt 2: legen Sie RandomString und SessionIdentifierGenerator Klasse in Ihrer Aktivität
Schritt 3: pass Nutzlast in Ihrer Anschaffung Anfrage:
für mehr inforamation überprüfen Sie diesen link:
Token, das den Benutzer identifizieren
Hoffe, es wird Ihr problem lösen.
InformationsquelleAutor der Antwort Maulik
Für mich eine zufällige Zeichenfolge ist nicht sinnvoll, da Erstens, es muss sein, abhängig von der Benutzer, der es gekauft hat, nicht das Gerät, mit dem es gekauft wurde. Zweitens, es ist ein nicht-Verschleißteil, so eine leere Zeichenfolge anpassen kann, aber ist nicht ideal.
Also meinen Weg um ihn herum ist, zum erstellen eines verschlüsselten hash basierend auf einem Schlüssel. Jedes mal, wenn ein Kauf gemacht wird, ist es eindeutig identifizierbar ist, da der hash sollte nie die gleiche (dies hängt von der hashing-Verfahren wie bcrypt).
Da der Schlüssel ist der gleiche auf allen Geräten, es ist einfach zu entschlüsseln und überprüfen Sie, ob die geheime Botschaft korrekt ist.
Damit der Schlüssel ein Geheimnis bleiben, ich habe verschiedene string-manipulation-Funktionen zur Maske, damit er nicht gespeichert wird, in einer sichtbaren Art und Weise.
Beispiel der text maniluation können hier gefunden werden: Android In-App Billing: die Sicherstellung der Anwendung der öffentlichen Schlüssel
String Base64EncodedPublicKey key =
DecrementEachletter("Bl4kgle") + GetMiddleBit() + ReverseString("D349824");
Diese Methode zum erstellen einer hash basierend auf einem Schlüssel ermöglicht, die Nutzlast zu sein, einzigartig und identifizierbar sein, zur gleichen Zeit als einigermaßen sicher. Es ist nicht bulletproof, aber es sicher macht es schwer zu knacken.
InformationsquelleAutor der Antwort Kc Gibson