React-native-iap: validateReceiptIos gibt immer false zurück

Erstellt am 15. Aug. 2018  ·  11Kommentare  ·  Quelle: dooboolab/react-native-iap

Version von react-native-iap

2.0.0-alpha3
(Ich habe auch 1.1.5 ausprobiert, das gleiche Problem)

Plattformen, auf denen Sie den Fehler hatten (IOS oder Android oder beides?)

iOS

Erwartetes Verhalten

validateReceiptIos gibt 0/1 / true für gültige Belege zurück

Tatsächliches Verhalten

validateReceiptIos gibt immer false zurück

Getestete Umgebung (Emulator? Reales Gerät?)

Echtes Gerät, Sandbox App Store

Schritte zum Reproduzieren des Verhaltens

Ich kann automatisch erneuerbare Abonnementkäufe erfolgreich tätigen und eine Transaktionsquittung erhalten. Wenn ich versuche, dies unter iOS mit validateReceiptIos (ReceiptBody, true, 55) zu validieren, wird immer false zurückgegeben.

Wenn ich JSON.stringify (res) anmelde, erhalte ich:
{"Status": 21004, "Umgebung": "Sandbox"}

Es gab ein ähnliches Problem bei # 190

1️⃣ good first issue 📱 iOS 🙏 help wanted

Hilfreichster Kommentar

@LinusU @dooboolab
Ich habe gerade das gemeinsame Geheimnis in den Quittungskörper eingefügt und jetzt scheint es zu funktionieren.
Vielleicht habe ich es einfach irgendwo in der Dokumentation verpasst? Oder soll das nicht so sein?

  const receiptBody = {
        'receipt-data': product.transactionReceipt,
        'password': '*********'
      };

(verwendet immer noch Version 2.0.0-alpha3)

Alle 11 Kommentare

In welcher Zeile fügen Sie das Protokoll ein? 🤔

Welche Version von React Native verwenden Sie?

@ Fabianunger Seltsam. Sollte in # 190 behoben werden. Könnten Sie einige Codes teilen?

"reagieren": "^ 16.3.2"
"React-Native": "^ 0,55,3"

`` `
validate = async (Produkt) => {
Versuchen {
console.log (Produkt);

  const receiptBody = {
    'receipt-data': product.transactionReceipt,
  };
  console.log(receiptBody);

  const result = await RNIap.validateReceiptIos(receiptBody, true, 55);
  console.log(result);

} catch(err) {
  console.warn(err.code, err.message);
  Alert.alert(err.message);
}

};

`` `

@fabianunger Könnten Sie diese Version ausprobieren und sehen, ob Sie eine detailliertere Fehlermeldung erhalten?

npm install LinusU/react-native-iap#ios-validate

@LinusU @dooboolab
Ich habe gerade das gemeinsame Geheimnis in den Quittungskörper eingefügt und jetzt scheint es zu funktionieren.
Vielleicht habe ich es einfach irgendwo in der Dokumentation verpasst? Oder soll das nicht so sein?

  const receiptBody = {
        'receipt-data': product.transactionReceipt,
        'password': '*********'
      };

(verwendet immer noch Version 2.0.0-alpha3)

@ LinusU
Ich habe es auch mit Ihrer Version getestet: Gleiches Ergebnis.
Als Antwort erhalte ich {"status": 21004, "environment": "Sandbox"}.

Fügt das gemeinsame Geheimnis als 'Passwort' in den Quittungskörper ein. Im Allgemeinen: Ist das überhaupt der normale Weg?

@ Fabianunger Du hast es richtig gemacht. Weitere Informationen ref hier. Wird gut sein, um das Dokument hart zu aktualisieren.

Was ist das shared secret und wo finde ich es?

Überprüfen Sie den Empfang im Produktionsmodus und geben Sie {status: 21007} ​​zurück. Kann mir jemand dabei helfen?

Danke im Voraus

Schau hier:

https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html

"21007: Diese Quittung stammt aus der Testumgebung, wurde jedoch zur Überprüfung an die Produktionsumgebung gesendet. Senden Sie sie stattdessen an die Testumgebung."

Verwenden Sie diese Adresse zur Überprüfung der Testumgebung: https://sandbox.itunes.apple.com/verifyReceipt

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen