Я пытаюсь реализовать автоматически возобновляемые подписки. Мое приложение можно использовать на разных устройствах (Android, Web), поэтому мне нужно было внедрить метод опроса состояния, чтобы подтвердить мой сервер, когда App Store удается продлить подписку с истекшим сроком действия. Квитанция проверяется на моем сервере в соответствии с здесь. При каждой транзакции, выполненной на устройстве, я обновляю запись пользователя в базе данных для поля last_receipt_base64
в процессе проверки квитанции.
При каждом опросе статуса я хочу обновить поля last_receipt_base64
и expired_date
, поэтому я беру last_receipt_base64
и отправляю его на маршрут Apple /verifyReceipt
. Но каждый раз он помещает другую квитанцию (base64) под ключ «latest_receipt». Более того, длина возвращенной (от /verifyReceipt
) базы 64 квитанции, как ни странно, намного короче, чем квитанция, отправленная с устройства (35 000 символов квитанции от устройства, 6000 символов квитанции, возвращенной из /verifyReceipt
). Почему это?
Я хочу обновить записи в моей базе данных на каждом столбце состояния, если есть изменения, но данные продолжают меняться! Кроме того, крайняя разница в длине между квитанциями с устройства и /verifyReceipt
заставляет меня беспокоиться о том, что квитанция может быть когда-нибудь отклонена, если пользователь не будет входить в приложение iOS в течение длительного времени. Во всяком случае, я немного запутался, и документы не очень хороши... Некоторые рекомендации будут полезны.