Isacknoweddgedandroid ist für Verbrauchsmaterial immer falschAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Isacknoweddgedandroid ist für Verbrauchsmaterial immer falsch

Post by Anonymous »

Beschreibung
Als erstes Mal implementiert ich den In-App-Kauf, sodass ich möglicherweise etwas weniger Wissen über den gesamten Lebenszyklus des IAP habe. Ich habe nur In-App-Produkte, um virtuelle Münzen zu kaufen, die der Benutzer so oft kaufen kann, wie er es gefällt. kann bis zu drei Änderungen summiert werden: < /p>

[*]

Code: Select all

App.tsx
Der Einstiegspunkt der App mit meinem Navigator usw. Ich habe in der Startseite
in der Startseite. .TSX lädt in jedem Fall, d. H. AUTH- oder Nicht-Auth-Benutzer, eingehalten, wobei ich den Kaufverfahren hinzugefügt habe, und hier geschieht auch. /code> Bildschirm ist, an dem ich products sowie requestPurchase Wenn eine Kauftaste gedrückt wird Punkte oben finden Sie hier der Code:
app.tsx

Code: Select all

  useEffect(() => {
const initIAP = async () => {
try {
await initConnection();
if (Platform.OS == 'android') {
await flushFailedPurchasesCachedAsPendingAndroid();
} else {
// TODO: Add code to handle iOS purchases
// await clearTransactionIOS();
}
} catch (error) {
console.log('Error initializing IAP: ', error);
}
};

initIAP();

return () => {
endConnection();
};
}, []);
Home.tsx

Code: Select all

  const {
currentPurchase,
finishTransaction,
getProducts,
} = useIAP();

useEffect(() => {
const subscriptionListener = purchaseUpdatedListener(
async (_purchase: Purchase) => {

if (currentPurchase) {
//TODO: Send the receipt to the server
await finishTransaction({
purchase: currentPurchase,
isConsumable: true,
});
console.log(
'currentPurchase @ subscriptionListener: ',
currentPurchase.transactionReceipt,
);
}
},
);

return () => {
subscriptionListener.remove();
};
}, []);
buycoins.tsx

Code: Select all

  const handleGetProducts = async () => {
try {
if (constants.productSkus) {
await getProducts({ skus: constants.productSkus });
}
} catch (error) {
errorLog({ message: 'handleGetProducts', error });
}
};

const handleProductPurchase = async (sku: Sku) => {
try {
let purchaseParams: RequestPurchase = {
sku,
andDangerouslyFinishTransactionAutomaticallyIOS: false,
};

if (Platform.OS === 'android') {
purchaseParams = { skus: [sku] };
}

await requestPurchase(purchaseParams);
} catch (error) {
console.log('err: ', error);
setIsLoading(false);
}
};
Erwartete Verhalten
Wenn ich es kaufe, geht es erfolgreich durch, aber in der Beendigung der Zahlung, wenn ich versuche, den Transaktionsreceipt < /Code> Ich erhalte: < /p>

Code: Select all

{"orderId":"ABC123","packageName":"com.MYAPP.TEST","productId":"passtest","purchaseTime":1234,"purchaseState":0,"purchaseToken":"safkhbvkhvbkfhbvfehbv","quantity":1,"acknowledged":false}
Die "Anerkennung": Falsch sollte wahr sein, da es sich um ein Verbrauchsmaterial handelt und sobald der Benutzer jedes Produkt kauft, sollte es zurückgeben, weil ich es nach der Wartedauer von FinishTransaction angerufen habe. ..
Screenshots
n/a
Umgebung: < /strong> < /p>

React-nativ-iap: 12.16.0 < /li>
React-native : 0.75.4 < /li>
Plattformen (iOS, Android, Emulator, Simulator, Gerät): Android -Emulator und physisches Gerät < /li>
< /ul>
< HR />
[Optional] Zusätzlicher Kontext < /strong> < /p>
Ich erhalte manchmal einen Fehler in der FinishTransaction [Fehler: Kauf fehlgeschlagen mit Code: 8] < /Code>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post