React-native-iap: [Android] AcknowledgurchPurchaseAndroid () Google gibt an, dass beim Verbinden mit der Zahlung ein Problem auftritt.

Erstellt am 18. Sept. 2019  ·  32Kommentare  ·  Quelle: dooboolab/react-native-iap

Version von react-native-iap> 3.4.12

Version von React-Native> 0.58.3

Plattformen, auf denen der Fehler aufgetreten ist> Android

Tatsächliches Verhalten

ich habe ein
Google is indicating that we have some issue connecting to payment. Fehler
In logcat bekomme ich ein E/DoobooUtils: Error Code : 5

Ich habe zuvor Version 2.5.5 verwendet, es hat gut funktioniert.
Das einzige, was dort nicht funktioniert, ist der Aufruf von acceptPurchaseAndroid

Getestete Umgebung> Reales Gerät

Hier ist mein Code:

  handleServerSubscribe = async purchase => {
    const {
      productId,
      transactionReceipt,
    } = purchase
    if (transactionReceipt) {
      try {
          // FIXME it fails right here
          await acknowledgePurchaseAndroid(purchase.purchaseToken)

      } catch (e) {
        console.log('subscription error ', e)
      }
    }
  }


componentDidMount() {
    this.purchaseUpdateSubscription = purchaseUpdatedListener(purchase => {
      this.handleServerSubscribe(purchase)
    })
  }
🙏 help wanted 🤖 android

Hilfreichster Kommentar

Ich habe es zum Laufen gebracht: Ich habe gerade diese speziellen Zeilen für Android erstellt, aber die Notwendigkeit dazu war aus der Dokumentation nicht sehr ersichtlich. Jetzt funktioniert es sowohl auf Android als auch auf iOS:
// on Android we need to acknowledge purchase or finishTransaction fails
// if we do not acknowledge, purchase will roll back in 5 min
RNIap.acknowledgePurchaseAndroid(purchase.purchaseToken).then(() => {
RNIap.finishTransaction(purchase, true).catch(err => {
console.log(err.code, err.message);
});
});

Alle 32 Kommentare

Wenn acknowledgePurchase nicht funktioniert, haben Sie anscheinend billingClient in Android nicht korrekt auf 2.0.3 aktualisiert. Könnten Sie Ihre build.gradle überprüfen?

@hyochan Nun , es sieht so aus, als hätte ich es nicht, aber ich habe keine Ahnung, wo ich die richtige Syntax bekommen kann.
Soll es in der README sein?

Versuchen Sie, die Zeile com.android.billingclient:billing durch Suchen zu finden.

Nun, ich hatte es nicht, ich hatte es nur

 implementation project(':react-native-iap')

Benötige ich beide Implementierungen?

 implementation 'com.android.billingclient:billing:2.0.3'
 implementation project(':react-native-iap')

Ich habe immer noch den gleichen Fehler

@MeisterTea Ich wollte, dass Sie die Version von billingclient in Ihrem installierten react-native-iap -Projekt überprüfen. Checken Sie in node_modules/react-native-iap/android/build.gradle

Oh, mein schlechtes ... Ja, es hat die richtige Version

  implementation 'com.android.billingclient:billing:2.0.3'

Irgendeine Idee ?

@ MeisterTea Ich denke, ich habe einen nützlichen Link für dich gefunden.

@MeisterTea War das hilfreich?

Nun, ich habe immer noch den Fehler:
js Brücke: Google is indicating that we have some issue connecting to payment.
logcat: E/DoobooUtils: Error Code : 5

await acknowledgePurchaseAndroid(purchase.purchaseToken)

, Ich habe ein paar Fragen:

  • Haben Sie eine andere Idee, wie ich das Problem beheben könnte?
  • Wie kann ich meinen Release-Schlüssel debuggen und verwenden? React-Native Run-Android scheint immer einen generischen Debug-Schlüssel zu installieren, selbst nachdem ich meinen Release-Keystore als debug.keystore kopiert und im build.gradle darauf gezeigt habe

EDIT: Mit dem Beispielprojekt von react-native-iap ist es egal.
Ich ändere den versionCode auf den neuesten Stand, den ich auf dem Beta-Track hochgeladen habe, habe ihm den Release-Schlüssel gegeben, meine Abonnement-ID hinzugefügt, den Code zum Laden von Abonnements geändert und eine reaktionsnative Run-Android-Variante = Release durchgeführt

Ich kann das Abonnement kaufen, erhalte aber immer noch den Fehler 5

das gleiche Problem haben. eine Lösung dafür?

Ja, dies liegt an der Bestätigung einer ausstehenden Zahlung.
IMO, Lizenztester sollten sowieso keinen PENDING-Status haben, also ist Google möglicherweise schuld.

Ich bekomme das gleiche Problem auch für Zahlungen, die den Status purchaseStateAndroid 1 (GEKAUFT) haben.

Ja, dies liegt an der Bestätigung einer ausstehenden Zahlung.

Ich bestätige das. Ich erhalte nie eine Fehlermeldung, wenn purchaseState 1 ist.

Bearbeiten:

Der Kauf wird jedoch weiterhin bestätigt. Mit anderen Worten, es liegt ein Fehler vor, der jedoch weiterhin funktioniert.

Ich hatte das gleiche Problem und stellte fest, dass das PurchaseToken bereits bestätigt wurde. Also behebe ich das Problem, den Anruf auf await acknowledgePurchaseAndroid(purchase.purchaseToken). @hyochan zu steuern

Also musste ich überprüfen, ob Einkäufe [0] .isAcknowledgedAndroid von RNIap.getAvailablePurchases() falsch sind , um dencknowledgePurchaseAndroid aufzurufen.

Ich hoffe es hilft.

Hey, es sieht so aus, als ob in letzter Zeit keine Aktivitäten zu diesem Thema stattgefunden haben. Wurde das Problem behoben oder erfordert es immer noch die Aufmerksamkeit der Community? Dieses Problem kann geschlossen werden, wenn keine weitere Aktivität auftritt. Sie können diese Ausgabe auch als "Zur Diskussion" oder "Gute erste Ausgabe" bezeichnen, und ich werde sie offen lassen. Vielen Dank für Ihre Beiträge.

Ich habe vor kurzem die gleiche Fehlermeldung erhalten. Also würde ich sagen, das sollte aktiv bleiben.

Ich erhalte den gleichen Fehler mit RNIap.finishTransaction

@ creativemind1 Welche Version verwendest du? finishTransaction sollte sowohl für iOS als auch für android funktionieren.

Ich verwende "react-native-iap": "^4.4.1" und wenn ich finishTransaction in Android aufrufe, erhalte ich eine Fehlermeldung von Google Google is indicating that we have some issue connecting to payment . Nachdem ich eine erfolgreiche Antwort von meinem Server erhalten habe, rufe ich RNIap.acknowledgePurchaseAndroid was funktioniert, aber nicht finishTransaction

Gleicher Fehler, aber auf getProducts

Gleicher Fehler, aber auf verbrauchenProdukt.

Fehler beim Abonnieren:
Error: Google is indicating that we have some issue connecting to payment. at Object.fn [as consumeProduct] (VM4 index.bundle:2143)

Fehler beim Kauf eines Produkts:
Error: Purchase failed with code: 8 at Object.fn [as consumeProduct] (NativeModules.js:99)

reaktionsnativ: 0,61
React-Native-IAP-Version: 4.4.9

Ich denke, wenn Sie die E-Mail-Adresse in den Testbenutzern von Google Play hinzufügen
Einstellungen werden Sie nicht sehen, tgat Problem

Am Samstag, 6. Juni 2020, 20:41 Uhr schrieb rafaeelrf [email protected] :

Gleicher Fehler, aber in verbrauchenProdukt:
Fehler: Google gibt an, dass bei der Verbindung ein Problem mit der Zahlung aufgetreten ist.
bei Object.fn [als verbrauchenProdukt] (VM4 index.bundle: 2143)

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/dooboolab/react-native-iap/issues/721#issuecomment-640075737 ,
oder abbestellen
https://github.com/notifications/unsubscribe-auth/ABH54CL5FLAY4C7CTL2V3V3RVJMA7ANCNFSM4IX5EJQA
.

Ich habe bereits hinzugefügt, aber das Problem wurde nicht gelöst

Wenn ich mich recht erinnere, können Sie dies nicht clientseitig tun, wenn Sie sich auf Testservern befinden, da zwischen der Ausgabe der Zahlung und der Serverüberprüfung eine geringfügige Verzögerung liegt.
Wir mussten diese Logikserverseite verschieben

Hallo, ich erhalte den gleichen Fehler, während RNIap.acknowledgePurchaseAndroid (purchase.purchaseToken); API. Kann mir bitte jemand helfen

Ich erhalte den gleichen Fehler mit RNIap.finishTransaction

Ich habe auch dieses Problem mit der neuesten Version und Testkarte verwendet

Das gleiche Problem besteht darin, RNIap.finishTransaction (purchase, true) von meinem purchaseUpdatedListener aufzurufen, der direkt nach meinem RNIap.requestSubscription aufgerufen wird. Dies führt zum Fehler. Nach 5 Minuten erhalte ich von Google die Stornierungs-E-Mail "Dieser Testkauf wurde storniert, weil er nicht bestätigt wurde". Natürlich benutze ich ein Testkonto, aber das sollte in Ordnung sein.
Der gleiche Code funktioniert unter iOS wie ein Zauber.

@MeisterTea Was haben Sie im Backend gemacht? Haben Sie herausgefunden, was die entsprechende Google-Anfrage von RNIap.finishTransaction (Kauf, wahr) war? Können Sie ein Code-Snippet oder andere Informationen teilen, damit der Rest von uns diese Lösung verwenden kann, bis das Plugin wieder funktioniert?

Mein Problem war, ich habe die Finish-Transaktion zweimal aufgerufen. als ich es entfernte, funktionierte gut

Ich habe es zum Laufen gebracht: Ich habe gerade diese speziellen Zeilen für Android erstellt, aber die Notwendigkeit dazu war aus der Dokumentation nicht sehr ersichtlich. Jetzt funktioniert es sowohl auf Android als auch auf iOS:
// on Android we need to acknowledge purchase or finishTransaction fails
// if we do not acknowledge, purchase will roll back in 5 min
RNIap.acknowledgePurchaseAndroid(purchase.purchaseToken).then(() => {
RNIap.finishTransaction(purchase, true).catch(err => {
console.log(err.code, err.message);
});
});

Ich weiß nicht, ob dies für Sie funktioniert oder nicht (dieser Code für verbrauchenProdukt):

await RNIap.finishTransaction(purchase).then(async () => { await RNIap.consumePurchaseAndroid(purchase.purchaseToken).then(async () => { console.log('purchase :', purchase) }).catch(err => { console.log('consume error: ', err.code, err.message) Alert.alert('consume finish error: ', err.message) }); }).catch(err => { console.log('finish error: ', err.code, err.message) Alert.alert('purchase finish error: ', err.message) })

Ich muss die Transaktion zuerst beenden und dann den Kauf widerrufen, indem ich auf den ConsumePurchaseAndroid () als obigen Code klicke. Ich hoffe es hilft.

Ich habe es zum Laufen gebracht: Ich habe gerade diese speziellen Zeilen für Android erstellt, aber die Notwendigkeit dazu war aus der Dokumentation nicht sehr ersichtlich. Jetzt funktioniert es sowohl auf Android als auch auf iOS:
// on Android we need to acknowledge purchase or finishTransaction fails
// if we do not acknowledge, purchase will roll back in 5 min
RNIap.acknowledgePurchaseAndroid(purchase.purchaseToken).then(() => {
RNIap.finishTransaction(purchase, true).catch(err => {
console.log(err.code, err.message);
});
});

Das scheint auch für mich zu funktionieren, ich benutze v5.0.0

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen