React native при покупке в приложении не выдает последнюю квитанцию

#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]