#react-native #in-app-purchase
#react-native #покупка в приложении
Вопрос:
Я использую пакет react-native-iap. Я пытаюсь получить последнюю подписку и проверить ее действительность
await RNIap.validateReceiptIos(receiptBody, true).then((receipt) => {
try {
const renewalHistory = receipt.latest_receipt_info
const expiration = renewalHistory[0].expires_date_ms
expired = Date.now() > expiration
productId = renewalHistory[0].product_id
} catch (error) {}
})
Я являюсь многократной подпиской на автоматическое продление в одной группе. Я подписываюсь на один и выполняю приведенный выше код. дайте мне подписанный продукт, и я помечаю его как подписанный. Первая попытка работает нормально. Теперь после этого я снова подписываюсь на другой пакет, и приведенный выше код дает мне предыдущую подписку, а не текущую, на которую я подписался. Иногда вторые шаги также работают нормально, но проблема возникла на третьем шаге. Причина, по которой я обнаружил, заключается в том, что я не получаю последнюю информацию о подписанной квитанции latest_receipt_info
выше.
Ответ №1:
Посмотрите этот учебник на YouTube, он может вам помочь: https://youtu.be/4JLHRV2kiCU
Кроме того, вот что он сказал в разделе комментариев: там, где я пишу renewalHistory[renewalHistory.length — 1], это отлично работает в тестовой среде. ОДНАКО, похоже, что при публикации приложения это не работает, и вместо этого вам следует выполнить renewalHistory[0] . Я исправил это в своем приложении, сначала попытавшись выполнить проверку с использованием производственного URL-адреса, используя renewalHistory[0] . Если вы получаете код состояния 21007 после попытки проверки с помощью рабочего URL-адреса, вы выполняете проверку с помощью тестового URL-адреса с помощью renewalHistory[renewalHistory.length — 1]