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
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();
};
}, []);
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();
};
}, []);
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);
}
};
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}
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>